]> git.proxmox.com Git - mirror_edk2.git/commit
OvmfPkg/XenPlatformPei: Use CPUID to get physical address width on Xen
authorIgor Druzhinin <igor.druzhinin@citrix.com>
Wed, 13 Jan 2021 03:42:15 +0000 (03:42 +0000)
committermergify[bot] <37929162+mergify[bot]@users.noreply.github.com>
Tue, 19 Jan 2021 17:00:08 +0000 (17:00 +0000)
commite68c2a22caaeca5b249d8849c2ee4476d5b19788
treefa607b371ab94ee470d7f7bccb4ee8bcb0430ebf
parent83facfd184021874f95a6a34b2e47e0ebb34a762
OvmfPkg/XenPlatformPei: Use CPUID to get physical address width on Xen

We faced a problem with passing through a PCI device with 64GB BAR to UEFI
guest. The BAR is expectedly programmed into 64-bit PCI aperture at 64G
address which pushes physical address space to 37 bits. That is above
36-bit width that OVMF exposes currently to a guest without tweaking
PcdPciMmio64Size knob.

The reverse calculation using this knob was inhereted from QEMU-KVM
platform code where it serves the purpose of finding max accessible
physical address without necessary trusting emulated CPUID physbits value
(that could be different from host physbits). On Xen we expect to use
CPUID policy to level the data correctly to prevent situations with guest
physbits > host physbits e.g. across migrations.

The next aspect raising concern - resource consumption for DXE IPL page
tables and time required to map the whole address space in case of using
CPUID bits directly. That could be mitigated by enabling support for 1G
pages in DXE IPL configuration. 1G pages are available on most CPUs
produced in the last 10 years and those without don't have many phys bits.

Remove all the redundant code now (including PcdPciMmio64.. handling
that's not used on Xen anyway) and grab physbits directly from CPUID that
should be what baremetal UEFI systems do.

Signed-off-by: Igor Druzhinin <igor.druzhinin@citrix.com>
Message-Id: <1610509335-23314-1-git-send-email-igor.druzhinin@citrix.com>
Acked-by: Laszlo Ersek <lersek@redhat.com>
Reviewed-by: Julien Grall <julien@xen.org>
Reviewed-by: Anthony PERARD <anthony.perard@citrix.com>
[lersek@redhat.com: fix up authorship from groups.io-mangled From line]
[lersek@redhat.com: wrap commit message at 74 characters]
OvmfPkg/OvmfXen.dsc
OvmfPkg/XenPlatformPei/MemDetect.c