From: Eduardo Habkost <ehabkost@redhat.com>
To: qemu-devel@nongnu.org
Cc: Igor Mammedov <imammedo@redhat.com>,
Gerd Hoffmann <kraxel@redhat.com>,
"Michael S. Tsirkin" <mst@redhat.com>
Subject: [Qemu-devel] [PATCH 0/2] acpi: Fix PCI hole handling on SRAT table
Date: Thu, 9 Jan 2014 17:12:41 -0200 [thread overview]
Message-ID: <1389294763-8137-1-git-send-email-ehabkost@redhat.com> (raw)
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):
e820: BIOS-provided physical RAM map:
BIOS-e820: [mem 0x0000000000000000-0x000000000009fbff] usable
BIOS-e820: [mem 0x000000000009fc00-0x000000000009ffff] reserved
BIOS-e820: [mem 0x00000000000f0000-0x00000000000fffff] reserved
BIOS-e820: [mem 0x0000000000100000-0x00000000dfffdfff] usable
BIOS-e820: [mem 0x00000000dfffe000-0x00000000dfffffff] reserved
BIOS-e820: [mem 0x00000000feffc000-0x00000000feffffff] reserved
BIOS-e820: [mem 0x00000000fffc0000-0x00000000ffffffff] reserved
BIOS-e820: [mem 0x0000000100000000-0x000000011fffffff] usable
e820: update [mem 0x00000000-0x00000fff] usable ==> reserved
e820: remove [mem 0x000a0000-0x000fffff] usable
e820: last_pfn = 0x120000 max_arch_pfn = 0x400000000
e820: last_pfn = 0xdfffe max_arch_pfn = 0x400000000
ACPI: SRAT 00000000dffffc0e 00160 (v01 BOCHS BXPCSRAT 00000001 BXPC 00000001)
SRAT: PXM 0 -> APIC 0x00 -> Node 0
SRAT: PXM 1 -> APIC 0x01 -> Node 1
SRAT: PXM 2 -> APIC 0x02 -> Node 2
SRAT: PXM 3 -> APIC 0x03 -> Node 3
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.
e820: [mem 0xe0000000-0xfeffbfff] available for PCI devices
e820: reserve RAM buffer [mem 0x0009fc00-0x0009ffff]
e820: reserve RAM buffer [mem 0xdfffe000-0xdfffffff]
Output after the series is applied:
e820: BIOS-provided physical RAM map:
BIOS-e820: [mem 0x0000000000000000-0x000000000009fbff] usable
BIOS-e820: [mem 0x000000000009fc00-0x000000000009ffff] reserved
BIOS-e820: [mem 0x00000000000f0000-0x00000000000fffff] reserved
BIOS-e820: [mem 0x0000000000100000-0x00000000dfffdfff] usable
BIOS-e820: [mem 0x00000000dfffe000-0x00000000dfffffff] reserved
BIOS-e820: [mem 0x00000000feffc000-0x00000000feffffff] reserved
BIOS-e820: [mem 0x00000000fffc0000-0x00000000ffffffff] reserved
BIOS-e820: [mem 0x0000000100000000-0x000000011fffffff] usable
e820: update [mem 0x00000000-0x00000fff] usable ==> reserved
e820: remove [mem 0x000a0000-0x000fffff] usable
e820: last_pfn = 0x120000 max_arch_pfn = 0x400000000
e820: last_pfn = 0xdfffe max_arch_pfn = 0x400000000
ACPI: SRAT 00000000dffffc0e 00160 (v01 BOCHS BXPCSRAT 00000001 BXPC 00000001)
SRAT: PXM 0 -> APIC 0x00 -> Node 0
SRAT: PXM 1 -> APIC 0x01 -> Node 1
SRAT: PXM 2 -> APIC 0x02 -> Node 2
SRAT: PXM 3 -> APIC 0x03 -> Node 3
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]
e820: [mem 0xe0000000-0xfeffbfff] available for PCI devices
e820: reserve RAM buffer [mem 0x0009fc00-0x0009ffff]
e820: reserve RAM buffer [mem 0xdfffe000-0xdfffffff]
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(-)
--
1.8.4.2
next reply other threads:[~2014-01-09 19:13 UTC|newest]
Thread overview: 9+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-01-09 19:12 Eduardo Habkost [this message]
2014-01-09 19:12 ` [Qemu-devel] [PATCH 1/2] pc: Save size of RAM below 4GB Eduardo Habkost
2014-01-09 19:12 ` [Qemu-devel] [PATCH 2/2] acpi: Fix PCI hole handling on build_srat() Eduardo Habkost
2014-01-09 20:33 ` [Qemu-devel] [PATCH 0/2] acpi: Fix PCI hole handling on SRAT table Laszlo Ersek
2014-01-10 15:17 ` Igor Mammedov
2014-01-10 15:59 ` Eduardo Habkost
2014-01-13 10:54 ` Gerd Hoffmann
2014-01-24 17:31 ` Eduardo Habkost
2014-01-26 9:25 ` Michael S. Tsirkin
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1389294763-8137-1-git-send-email-ehabkost@redhat.com \
--to=ehabkost@redhat.com \
--cc=imammedo@redhat.com \
--cc=kraxel@redhat.com \
--cc=mst@redhat.com \
--cc=qemu-devel@nongnu.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).