audk/OvmfPkg/PlatformPei
Laszlo Ersek c68d3a6978 OvmfPkg: PlatformPei: force 32-bit MMIO aperture above 3 GB on Q35
The logic we have in place for i440fx does not work reliably on q35. For
example, if the guest has 2GB of RAM, we allow the PCI root bridge driver
to allocate the legacy video RAM BAR from the [2048 MB, 2816 MB] range,
which falls strictly outside of the Q35 PCI host MMIO aperture that QEMU
configures, and advertizes in ACPI.

In turn, PCI BARs that exist outside of the PCI host aperture that is
exposed in ACPI break Windows guests.

Allocating PCI MMIO resources at or above 3GB on Q35 ensures that we stay
within QEMU's aperture. (See the "w32.begin" assignments in
"hw/pci-host/q35.c".) Furthermore, in pc_q35_init() (file
"hw/i386/pc_q35.c"), QEMU ensures that the low RAM never "leaks" above
3GB.

The i440fx logic is left unchanged.

The Windows guest malfunction on Q35 was reported by Jon Panozzo of Lime
Technology, Inc.

Cc: Gerd Hoffmann <kraxel@redhat.com>
Cc: Jordan Justen <jordan.l.justen@intel.com>
Cc: Igor Mammedov <imammedo@redhat.com>
Cc: Jon Panozzo <jonp@lime-technology.com>
Cc: "Gabriel L. Somlo" <somlo@cmu.edu>
Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Laszlo Ersek <lersek@redhat.com>
Reviewed-by: Jordan Justen <jordan.l.justen@intel.com>
Tested-by: Jonathan Panozzo <jonp@lime-technology.com>

git-svn-id: https://svn.code.sf.net/p/edk2/code/trunk/edk2@18393 6f19259b-4bc3-4df7-8a09-765794883524
2015-09-02 18:45:44 +00:00
..
Cmos.c Update the copyright notice format 2010-04-28 12:43:04 +00:00
Cmos.h Update the copyright notice format 2010-04-28 12:43:04 +00:00
Fv.c OvmfPkg/PlatformPei: Allocate PEI FV as ACPI NVS if S3 is supported 2014-03-04 08:02:59 +00:00
MemDetect.c OvmfPkg: PlatformPei: invert MTRR setup in QemuInitializeRam() 2015-06-26 16:09:52 +00:00
Platform.c OvmfPkg: PlatformPei: force 32-bit MMIO aperture above 3 GB on Q35 2015-09-02 18:45:44 +00:00
Platform.h OvmfPkg: PlatformPei: enable larger permanent PEI RAM 2015-06-26 16:09:39 +00:00
PlatformPei.inf OvmfPkg: set SMBIOS version in DetectSmbiosVersionLib instead of PlatformPei 2015-08-06 10:13:42 +00:00
Xen.c OvmfPkg/PlatformPei: Set PcdPciDisableBusEnumeration in InitializeXen 2014-02-01 21:22:36 +00:00
Xen.h OvmfPkg: define EFI_XEN_OVMF_INFO 2013-12-08 01:35:52 +00:00