FABRIC-3.10.8 MC-1a: the core table, and amd64's second core online and parked

hal/smp.c: dense logical core ids, a heap-sized core table, one-at-a-time
bring-up under a 1 s bound, park-wake reporting at the idle point.
amd64: MADT enumeration, a relocation-free real->long-mode trampoline
copied below 1 MiB, INIT-SIPI-SIPI via the LAPIC ICR; QEMU -smp 2.
Core 1 reports online with GS on its own block, parks with 0 wakes;
aarch64/riscv64 report 1 core until MC-1b/c. 3-ISA acceptance clean.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
Robert Allan James
2026-09-26 12:40:51 -04:00
co-authored by Claude Opus 5.5
parent 8c068e00e3
commit 24bde47481
19 changed files with 37381 additions and 1 deletions
+6
View File
@@ -61,6 +61,12 @@ typedef struct sk_percpu {
/* K-11 (spinlock.c): locks this core holds right now, per rank -- the
* lock-order check compares a new lock's rank with the highest held. */
uint32_t held_rank[SK_LOCK_RANK_COUNT];
/* MC-1 (hal/smp.c): the core's hardware id (APIC id / MPIDR / hartid;
* never the lock owner word), and what it reports on coming online. */
uint64_t hw_id;
uint64_t reg_readback; /* its per-CPU register, read on arrival */
volatile uint32_t online; /* 1 once parked (release store) */
volatile uint64_t park_wakes; /* times woken while parked */
} sk_percpu_t;
/* Installs the boot core's block in this core's per-CPU register. Call