Used QEMU-side instrumentation (-d int tracing, plus a working chardev-based
monitor -- the older bareword -monitor syntax silently fails on QEMU
10.2.1) as directed. The PM Timer "stall" was never a hang: it was a #DE
divide error cascading to a triple fault, which -no-reboot converts into a
silent clean QEMU exit -- indistinguishable from a hang without tracing,
and why arch_relax() (solving a hang that didn't exist) had no effect.
Root cause and fix documented in full (also see commit b43e51a).
With the fix, amd64 boot at -O2 now proceeds far past the original stall --
through capsule birth and into Hermes's word registration -- before hitting
a second, different fault (Finding 4): a direct #GP at IDT index 32
(APIC_TIMER_VECTOR), not yet root-caused. Same silent-triple-fault-exit
shape, so this was very likely bundled into "the hang" before tracing
distinguished the two separate bugs.
-O2 reverted again (uncommitted); muldiv64's fix is kept, real and
independently verified at unchanged -O0 on all three architectures.
Routine three-arch artifacts from this session's verification runs
included.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
83 lines
2.8 KiB
Plaintext
83 lines
2.8 KiB
Plaintext
[2J[001;001H[=3h[2J[001;001H[2J[001;001H[8;042;160t[2J[001;001H[2J[001;001H[8;056;240t[2J[001;001HBdsDxe: loading Boot0002 "UEFI QEMU DVD-ROM QM00005 " from PciRoot(0x0)/Pci(0x1F,0x2)/Sata(0x2,0xFFFF,0x0)
|
|
BdsDxe: starting Boot0002 "UEFI QEMU DVD-ROM QM00005 " from PciRoot(0x0)/Pci(0x1F,0x2)/Sata(0x2,0xFFFF,0x0)
|
|
[2J[001;001H[=3h[2J[001;001HStarKernel UEFI Loader
|
|
Loading kernel from ESP...
|
|
[CKPT 001] Entered efi_main - ConOut live
|
|
RAW SERIAL UP
|
|
[CKPT 002] Serial (COM1) initialized
|
|
Monolithic build - kernel linked directly
|
|
Collecting boot information...
|
|
CmdLine: parsed OK
|
|
[CKPT 004] Command line parsed
|
|
[CKPT 005] Kernel stack allocation decided
|
|
[CKPT 006] Boot info collected (ACPI table located)
|
|
GOP: linear framebuffer found
|
|
[CKPT 007] GOP: linear framebuffer found
|
|
[CKPT 008] About to enter ExitBootServices retry loop
|
|
EBS...
|
|
|
|
EBS OK
|
|
|
|
Calling kernel_main (monolithic)...
|
|
|
|
|
|
_____ _ _ __ _
|
|
/ ____| | | |/ / | |
|
|
| (___ | |_ __ _ _ __| ' / ___ _ __ _ __ ___| |
|
|
\___ \| __/ _` | '__| < / _ \ '__| '_ \ / _ \ |
|
|
____) | || (_| | | | . \ __/ | | | | | __/ |
|
|
|_____/ \__\__,_|_| |_|\_\___|_| |_| |_|\___|_|
|
|
|
|
LithosAnanke v1.5.4
|
|
Architecture: amd64
|
|
Build: Aug 11 2026 11:46:56
|
|
|
|
UEFI BootServices: EXITED
|
|
|
|
=== StarKernel Boot Information ===
|
|
Memory map entries: 113
|
|
Total memory: 1023 MB
|
|
Usable memory: 967 MB
|
|
===================================
|
|
|
|
PMM initialized.
|
|
PMM statistics:
|
|
Total pages: 248976
|
|
Free pages : 247453
|
|
Used pages : 1523
|
|
Total MB : 972
|
|
Free MB : 966
|
|
Used MB : 5
|
|
|
|
VMM initialized (mapped RAM, CR3 switched)
|
|
VMM initialized (mapped RAM, CR3 switched)
|
|
VMM self-test: mapped OK at 0xffff800000000000
|
|
VMM self-test complete.
|
|
|
|
IDT installed.
|
|
|
|
APIC: init...
|
|
APIC: IA32_APIC_BASE MSR=0x00000000fee00900
|
|
APIC: stale-ISR drain: 0 EOI(s) issued
|
|
APIC: initialized (xAPIC MMIO, TPR=0, SIVR=0x1FF, EOI-clear)
|
|
APIC: init done
|
|
|
|
I/O APIC: init...
|
|
I/O APIC: base=0xfec00000, gsi_base=0, overrides=5
|
|
override: source=00 gsi=2 flags=0x0000
|
|
override: source=05 gsi=5 flags=0x000d
|
|
override: source=09 gsi=9 flags=0x000d
|
|
override: source=0a gsi=10 flags=0x000d
|
|
override: source=0b gsi=11 flags=0x000d
|
|
i8042: keyboard ACKed enable-scanning
|
|
i8042: IRQ1 enabled in controller config byte
|
|
I/O APIC: keyboard IRQ1 routed (masked)
|
|
|
|
Timer: init...
|
|
Timer: init start
|
|
Timer: PM_TMR_BLK discovered from FADT at port 1544
|
|
Timer: VM mode detected (hypervisor present).
|
|
Timer: HPET calibration disabled (VM-exit MMIO would poison timing).
|
|
Timer: WARNING: invariant TSC not present under hypervisor.
|
|
Timer: continuing in RELATIVE mode (no determinism guarantees).
|
|
Timer: RDTSCP not present; using RDTSC (less serialized).
|
|
Timer: CPUID frequency unavailable; trying PM Timer...
|