ASELSANMicrokernel
GELİŞTİRME GÜNLÜĞÜ

M8 — Real Hardware

Kapsamlı denetim
M5.5 + M7.4 + M8.2 — kernel hung çözüldü, EL0 stack USER_NORMAL aktif
Çok eksenli kod denetimi + sentez/uygulama: 3 silent bug + per-task TTBR0/ASID tamamlandı.
HUNG GİTTİ + STACK MAPPING OK
🔴 3 Silent bug bulundu + düzeltildi
  • Kernel task per-task root'a switch'leniyordu → kernel kendi .data/.rodata'sına KERNEL_DATA flag ile erişemiyor → silent hung. Fix: !is_user → maybe_switch NO-OP.
  • KERNEL_ROOT hardcoded 0x4020_0000 — gerçek ROOT_PAGE_TABLE adresine eşit değil (linker bağımlı). Fix: get_kernel_root_table().
  • 4K alignment yokBox::into_raw u8 align'lı, map_range_4k page boundary bekler. Unaligned start → atlanan page'ler → EL0 stack perm fault. Fix: aligned start/end yuvarlama.
🟡 PT pool + Task→ASID binding
  • MAX_EARLY_TABLES 2048 → 8192: PT pool kullanım hesabı (~5,870 PT gerekli, ~10 task ile her biri 650 PT). 8192 ile 3× margin.
  • Task→ASID binding tamamlandı: M8.2 WIP'inde allocate_asid() hazırdı ama spawn entegre etmemişti. Şimdi is_user → unique root + asid.
  • Yanlış hipotez reddedildi: PAN değil — cortex-a72 ARMv8.0, FEAT_PAN yok (web doğrulamasıyla).
🟢 Stack USER_NORMAL + guard
  • Strategy A (Linux/seL4 patterni): User stack USER_NORMAL ile map, guard page (alt 4K) map edilmez → translation fault overflow yakalar.
  • Kernel heap NORMAL kalır → kernel isolation korunur, sadece user stack range USER_ACCESSIBLE.
  • Per-task TTBR0 + ASID switch aktif (M8.2 entegrasyon tamamlandı).
QEMU kanıtı — hung GİTTİ, scheduler çalışıyor
[M5.5+M7.4] user 'M7-Server' root=0x41045000 asid=1 stack USER_NORMAL [0x41034000..0x41045000] [M8.2] TTBR0 switched → 'M7-Server' (root=0x41045000, asid=1) [M7-Server] Pre-minted listen ep (owner=0) ile basliyor.       ← EL0 sys_write OK! [M4.3-DEBUG] start_first_task: switching to first task 'M6.3-IPC-Server'    ← hung gitti! [M6.3-Client] Call başarılı: Server uyandırıldı, Reply Cap teslim edildi. [M4.3-DEBUG] user_first_kernel_entry → 'hello-elf' (ELR=0x44000000) [M8.2] TTBR0 switched → 'hello-elf' (root=0x41024000, asid=0) He                                                              ← M8 ELF EL0 PASS [M4.3-DEBUG] task_exit() name='hello-elf' is_user=true state=Dead
Denetim kapsamı (paralel)
Codebase denetimi (14 modül)
M7-Server disasm, hung root cause, M8.2 WIP envanteri, Box→heap trace, spawn denetimi, M4.1 katalog, AP bit'leri, frame map, PT pool, TTBR0 path, test planı, risk, M8.2 WIP, kademeli adımlar.
Web araştırması (4 başlık)
PAN özelliği (cortex-a72'de reddedildi), LDTR/STTR bypass, seL4 user stack stratejisi, Redox/rCore user stack pattern.
Sentez ve uygulama
Tüm raporların birleşik analizi, kök neden + 3 silent bug tespiti, kademeli fix uygulama, QEMU testi, commit.