mirror of https://github.com/acidanthera/audk.git
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:
parent
3afa2ed53f
commit
2a4a6242b7
|
@ -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) {
|
||||
|
|
Loading…
Reference in New Issue