starkernel: item 3.2 -- Stadium boot-time allocation
Punch list §25 item 3.2 complete. stadium_boot_init() (src/starkernel/vm/stadium.c) sizes the global cell array at boot from a real memory-budget query rather than a hardcoded count: pmm_get_stats().free_bytes at the point of allocation, times the new STADIUM_MEMORY_PERCENT Kconfig symbol (default 1%), rounded down to whole 64-byte cells. Matches §17.6's position (b) literally. Also allocates the header/continuation discriminator bitmap item 3.1 declared but did not allocate. Both are kmalloc'd and explicitly zero-filled (kmalloc does not zero). Called from kernel_main.c immediately before sk_vm_bootstrap_parity(), i.e. before any VM exists (§6). Failure is soft -- logs and continues, does not halt boot -- matching the existing precedent one line below it (VM bootstrap parity failure does the same). Added a "Stadium: N cells (M KB)" boot console line at the allocation site so the acceptance logs are evidence the array was actually allocated, not just that the kernel still boots -- the same blind spot item 3.1's uncompiled-header gap exposed. Verified: three-architecture boot (amd64, aarch64, riscv64), all reaching ok> with identical dict_hash=0x3d4e1daf289da94f matching the item-3.1 baseline, and the Stadium boot line confirmed present in all three serial logs (amd64: 74234 cells/4639 KB, aarch64: 161329 cells/10083 KB, riscv64: 76122 cells/4757 KB). Not built here, reported per §25.0 rule 3: per-VM free lists (§22.3) -- granted when Hera assigns quota, not this item's scope. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Sonnet 5
parent
1b2f0677de
commit
eb0fd4fffa
@@ -79,6 +79,20 @@ config STADIUM_CAPACITY_TICK
|
||||
(FABRIC.md §22.4). No consumer yet -- capacity arbitration
|
||||
itself is not yet on the punch list.
|
||||
|
||||
config STADIUM_MEMORY_PERCENT
|
||||
int "Percent of free physical memory the Stadium claims at boot (STADIUM_MEMORY_PERCENT)"
|
||||
default 1
|
||||
help
|
||||
The Stadium's global cell array is sized at boot from
|
||||
pmm_get_stats().free_bytes, taken at the point of allocation
|
||||
(FABRIC.md item 3.2, §17.6 position (b): "sized at boot from the
|
||||
memory budget", not a hardcoded cell count). This is the fraction
|
||||
of that free-byte figure the array claims, rounded down to whole
|
||||
64-byte cells. Default of 1% is conservative -- comfortably clears
|
||||
the ~4096-cells-per-VM illustrative figure in FABRIC.md §23.3
|
||||
against a QEMU -m 1024 test config while leaving the kernel heap
|
||||
and everything else nearly all of physical memory.
|
||||
|
||||
endif # STARFORTH_VARIANT_KERNEL
|
||||
|
||||
endmenu
|
||||
|
||||
Reference in New Issue
Block a user