Hi, and congratulations on making sense of the mess that is NUMA development so far, as I have been stumbling into countless holes and pits on my way. Documentation of any kind is rare and not software-centric.<br><br>Please bear with me, as I have not-too-many questions to ask, and they will not be solely for myself. I intend to compile my learning into articles for the OSDev.org Wiki, a well known resource for hobbyist OS Developers like myself.<br>
<br>Now, as far as I can tell, The new AMD and Intel processors of the Direct Connect and Nehalem architecture are going to be coming with a bus architecture which fully supports NUMA for those architectures. I understand NUMA fully at a conceptual level, since I have been reading for two weeks straight, literally non-stop, as many papers as I can get my hands (or mouse) on. I've browsed you source, and whatnot, and no doubt this is a really original design.<br>
<br>A question about a NUMA aware kernel being booted: Is there any guarantee that on boot, the kernel image or bootloader, whichever the firmware loads, will be loaded into the NUMA memory bank @ that begins at PFN 0x0? As in, for any architecture, what guarantee is there that the kernel can sanely go about setting up, for example a bitmap of frames for addresses starting at say, the end of the kernel image?<br>
<br>In order to do that, the bitmap would need to be multiplied by a page granularity, such that the first bit, bit 0 would be multiplied by 0x1000, then given out to the kernel, the second, bit 1, would be multiplied by 0x1000 and give out the PFN 0x1000, and so on. But if a kernel image is loaded into a NUMA memory bank where the logical mapping is such that the bank's PFN begins at say 0xF0000000, a kernel that attempts to bootstrap itself is immediately stunted.<br>
<br>Please, if you have any info on the initialization of memory banks in numa systems, (even if it's for x86 only), do kindly consider replying.<br><br>Another question: It seems like NUMA architectures commonly rely on the ACPI SLIT/SRAT arrangement to discover node relational distancing. Is ACPI a uniformly used standard for enumerating nodes and their resources? Would you say that all numa systems use ACPI? Or at least all the most common architectures' NUMA capable models do? (x86, PPC, MIPS, ARM).<br>
<br>I have not yer read up on the ACPI specification itself, but simply Ctrl-F'd it and looked for the information that tells how to find the RSDP. It seems that they imply in the specification (versions 1 straight through 3) that on any platform wanting to supply ACPI functionality to the OS, must place the RSDP in the 1st 1MB of RAM. The specification states that the OS is to search for the RSDP in the BDA, or in a region of memory just below 1MB.<br>
<br>Is this platform independent? And if so, then it seems it is correct to state that in order to have NUMA compliant kernel, no matter where it is ported to, so long as ACPI remains the standard for NUMA enumeration, an OS should have its executable image loaded above the physical 1MB mark. Am I correct in saying this?<br>
<br>I thank you abundantly in advance should you see it fit to answer me.<br><br>All the absolute best in your own project,<br>gravaera.<br>