Question about which tools to use, bugs, the best way to implement a function, etc should go here. Don't forget to see if your question is answered in the wiki first! When in doubt post here.
I'm using Qemu (with two virtual NUMA nodes) and OVMF to boot my UEFI bootloader which then searches through the UEFI ConfigurationTable to find a pointer to the ACPI RSDP. Both ACPIv1 and ACPIv2 checksums are fine and XsdtAddress points to a valid XSDT. Then the bootloader prints out all other SDTs and exits. The result is this:
The ACPI tables are implemented by the firmware. When you are using OVMF as the firmware in QEMU, then you only get those tables supplied by OVMF, rather than the QEMU bios. As far as I can see, the only tables supported are those listed here.
I haven't found any information about NUMA virtualization in VirtualBox. Hyper-V however, is apparently able to do it. Because of that, I spent yesterday on migrating my host machine from Windows 7 (RIP) to Windows 8.1 (ugh... not a fan). Right now I'm trying to reinstall my osdev VM which is funny because the installer panics on boot due to IO-APIC timer issues. But at least the panic-logs that I could collect through Hyper-V's semi-unsupported serial ports contain some lines about SRAT tables, so I'm hopeful.
Almost there: Hyper-V launches my UEFI loader and provides a nice SRAT table with all 4 virtual memory nodes and their 2 virtual processors each. However, all those entries have their "Enabled" flag set to 0. And the data is garbage (all the memory entries have Length=0). Enabling ACPI doesn't change that. What do I have to do to actually receive data from the SRAT table?