On 05/04/19 02:07, Laszlo Ersek wrote: > Repo: https://github.com/lersek/edk2.git > Branch: exbar_mtrr_rhbz_1666941 > Ref: https://bugzilla.redhat.com/show_bug.cgi?id=1666941 > Ref: https://bugzilla.redhat.com/show_bug.cgi?id=1701710 > > When booting OVMF on QEMU with "weird" RAM sizes, QEMU's low-RAM split > logic can trigger two assertion failures in OVMF: > > - conflict between PCIEXBAR (ECAM) and low-RAM, on q35, > > - running out of variable MTRRs when marking the uncacheable MMIO range > in 32-bit address space, on both i440fx and q35. > > This series fixes both issues, by moving around the PCIEXBAR on q35, and > by truncating the size of the uncacheable 32-bit area to a power of two. > The latter idea was inspired by SeaBIOS. > > Tested on both machine types, with the following memory sizes (all in > MB): 1025, 2815, 3583, 5120. On i440fx, the X64 build was used (without > SMM). On q35, the IA32 and IA32X64 builds were used (with SMM). Testing > included "/proc/mtrr" verification, 32-bit PCI MMIO aperture > verification, general dmesg checks, and my usual regression tests too > (ACPI S3, UEFI variable services, ...).
Thanks to everyone for the feedback! I've now pushed this series as commit range 3b7a897cd8e3..39b9a5ffe661, with the following updates (all requested per review feedback): * added the following tag to every commit message: Ref: https://bugzilla.tianocore.org/show_bug.cgi?id=1814 * dropped the following tag from every affected commit message (i.e., on the first three patches): Contributed-under: TianoCore Contribution Agreement 1.1 * picked up Phil's and Ard's R-bs * replaced "hole" with "window" in the commit message of patch #3, then re-folded the text to 74 columns. Cheers Laszlo > Cc: Ard Biesheuvel <ard.biesheu...@linaro.org> > Cc: Gerd Hoffmann <kra...@redhat.com> > Cc: Jordan Justen <jordan.l.jus...@intel.com> > > Thanks > Laszlo > > Laszlo Ersek (4): > OvmfPkg/PlatformPei: assign PciSize on both i440fx/q35 branches > explicitly > OvmfPkg/PlatformPei: hoist PciBase assignment above the i440fx/q35 > branching > OvmfPkg/PlatformPei: reorder the 32-bit PCI hole vs. the PCIEXBAR on > q35 > OvmfPkg/PlatformPei: fix MTRR for low-RAM sizes that have many bits > clear > > OvmfPkg/OvmfPkgIa32.dsc | 5 +---- > OvmfPkg/OvmfPkgIa32X64.dsc | 5 +---- > OvmfPkg/OvmfPkgX64.dsc | 5 +---- > OvmfPkg/PlatformPei/MemDetect.c | 23 +++++++++++++++++--- > OvmfPkg/PlatformPei/Platform.c | 14 +++++------- > OvmfPkg/PlatformPei/Platform.h | 2 ++ > 6 files changed, 31 insertions(+), 23 deletions(-) > -=-=-=-=-=-=-=-=-=-=-=- Groups.io Links: You receive all messages sent to this group. View/Reply Online (#40828): https://edk2.groups.io/g/devel/message/40828 Mute This Topic: https://groups.io/mt/31489694/21656 Group Owner: devel+ow...@edk2.groups.io Unsubscribe: https://edk2.groups.io/g/devel/unsub [arch...@mail-archive.com] -=-=-=-=-=-=-=-=-=-=-=-