OvmfPkg/AcpiPlatformDxe: Use Xen PVH RSDP if it exist

If the firmware have been started via the Xen PVH entry point, a RSDP
pointer would have been provided. Use it.

Ref: https://bugzilla.tianocore.org/show_bug.cgi?id=1689
Signed-off-by: Anthony PERARD <anthony.perard@citrix.com>
Reviewed-by: Laszlo Ersek <lersek@redhat.com>
Message-Id: <20190813113119.14804-16-anthony.perard@citrix.com>
This commit is contained in:
Anthony PERARD 2019-08-13 12:30:59 +01:00 committed by Laszlo Ersek
parent 3afa2ed53f
commit 2a4a6242b7
1 changed files with 17 additions and 0 deletions

View File

@ -36,10 +36,27 @@ GetXenAcpiRsdp (
EFI_ACPI_2_0_ROOT_SYSTEM_DESCRIPTION_POINTER *RsdpStructurePtr;
UINT8 *XenAcpiPtr;
UINT8 Sum;
EFI_XEN_INFO *XenInfo;
//
// Detect the RSDP structure
//
//
// First look for PVH one
//
XenInfo = XenGetInfoHOB ();
ASSERT (XenInfo != NULL);
if (XenInfo->RsdpPvh != NULL) {
DEBUG ((DEBUG_INFO, "%a: Use ACPI RSDP table at 0x%p\n",
gEfiCallerBaseName, XenInfo->RsdpPvh));
*RsdpPtr = XenInfo->RsdpPvh;
return EFI_SUCCESS;
}
//
// Otherwise, look for the HVM one
//
for (XenAcpiPtr = (UINT8*)(UINTN) XEN_ACPI_PHYSICAL_ADDRESS;
XenAcpiPtr < (UINT8*)(UINTN) XEN_BIOS_PHYSICAL_END;
XenAcpiPtr += 0x10) {