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
+4 -1
View File
@@ -480,6 +480,7 @@ LOADER_ASM := \
ifeq ($(ARCH),amd64)
LOADER_ASM += $(KERNEL_SRC)/arch/$(ARCH)/kernel_entry.S
LOADER_ASM += $(KERNEL_SRC)/arch/$(ARCH)/ap_trampoline.S
endif
ifeq ($(ARCH),riscv64)
LOADER_ASM += $(KERNEL_SRC)/arch/$(ARCH)/kernel_entry.S
@@ -494,7 +495,8 @@ LOADER_ARCH_SRCS := \
ifeq ($(ARCH),amd64)
LOADER_ARCH_SRCS += \
$(KERNEL_SRC)/arch/$(ARCH)/ioapic.c \
$(KERNEL_SRC)/arch/$(ARCH)/i8042.c
$(KERNEL_SRC)/arch/$(ARCH)/i8042.c \
$(KERNEL_SRC)/arch/$(ARCH)/smp.c
endif
ifeq ($(ARCH),riscv64)
LOADER_ARCH_SRCS += \
@@ -865,6 +867,7 @@ ifeq ($(ARCH),amd64)
qemu-system-x86_64 \
-machine q35,accel=tcg \
-cpu qemu64 \
-smp 2 \
-m 1024 \
-vga std \
-drive if=pflash,format=raw,readonly=on,file=$(OVMF_CODE) \