⬢ DragonFlyBSD Kernel Audit
DF-5343 / run.log
← back to finding ↓ download raw
scenario 1: table = { BSP id0 }, HTT, lcpus_max=2 -> logical_cpus=2
  (pass2: processor_entry(BSP) -> lapic_set_cpuid(0,0), cpu stays 1)
  after fake loop: arg->cpu=2 (slot 1 burned, nothing registered)
    cpu->apic: [0]=1   [1]=0   [2]=0   [3]=0     naps=1
    start_all_aps SIPI targets: cpu1->apic0(== BSP id, phantom: never starts)
      RESULT: cpu0 remapped to apic 1 (BSP id clobbered); slot 1 -> BSS 0;
          start_all_aps SIPIs apic 0 for cpu1 -> mask never completes -> BOOT HANG

scenario 2: table = { BSP id0, AP id2 }, logical_cpus=2 -> naps=3
    cpu->apic: [0]=1   [1]=0   [2]=2   [3]=3     naps=3
    start_all_aps SIPI targets: cpu1->apic0(== BSP id, phantom: never starts) cpu2->apic2 cpu3->apic3
      RESULT: cpu0 -> apic 1 (clobbered), cpu1 -> BSS 0 (unregistered slot)

scenario 3 (intent/fix): force_enable=1 -> fakes carry EN only
    cpu->apic: [0]=0   [1]=1   [2]=2   [3]=3     naps=3
    start_all_aps SIPI targets: cpu1->apic1 cpu2->apic2 cpu3->apic3
      RESULT: cpu0 -> apic 0 (correct), cpu1 -> apic 1, cpu2 -> apic 2, cpu3 -> apic 3