On 01/09/14 20:12, Eduardo Habkost wrote: > The original SeaBIOS code used the RamSize variable, that was used by > SeaBIOS for the size of RAM below 4GB, not for all RAM. When copied to > QEMU, the code was changed to use the full RAM size, and this broke the > build_srat() code that handles the PCI hole. > > This series fixes the problem by restoring the original behavior from SeaBIOS. > > Example Linux guest dmesg output when the bug is present (using -m 4G and 4 > 1GB > NUMA nodes):
> SRAT: Node 0 PXM 0 [mem 0x00000000-0x0009ffff] > SRAT: Node 0 PXM 0 [mem 0x00100000-0x3fffffff] > SRAT: Node 1 PXM 1 [mem 0x40000000-0x7fffffff] > SRAT: Node 2 PXM 2 [mem 0x80000000-0xbfffffff] > SRAT: Node 3 PXM 3 [mem 0xc0000000-0xffffffff] > NUMA: nodes only cover 3583MB of your 4095MB e820 RAM. Not used. > Output after the series is applied: > > SRAT: Node 0 PXM 0 [mem 0x00000000-0x0009ffff] > SRAT: Node 0 PXM 0 [mem 0x00100000-0x3fffffff] > SRAT: Node 1 PXM 1 [mem 0x40000000-0x7fffffff] > SRAT: Node 2 PXM 2 [mem 0x80000000-0xbfffffff] > SRAT: Node 3 PXM 3 [mem 0xc0000000-0xdfffffff] > SRAT: Node 3 PXM 3 [mem 0x100000000-0x11fffffff] > > > Eduardo Habkost (2): > pc: Save size of RAM below 4GB > acpi-build: Fix PCI hole handling on build_srat() > > hw/i386/acpi-build.c | 10 +++++----- > hw/i386/pc.c | 1 + > include/hw/i386/pc.h | 2 +- > 3 files changed, 7 insertions(+), 6 deletions(-) > It looks sane to me (which might not mean much of course). series Reviewed-by: Laszlo Ersek <ler...@redhat.com>