]> git.proxmox.com Git - mirror_edk2.git/commitdiff
OvmfPkg/AcpiPlatformDxe: Use Xen PVH RSDP if it exist
authorAnthony PERARD <anthony.perard@citrix.com>
Tue, 13 Aug 2019 11:30:59 +0000 (12:30 +0100)
committerLaszlo Ersek <lersek@redhat.com>
Wed, 21 Aug 2019 16:03:49 +0000 (18:03 +0200)
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>

OvmfPkg/AcpiPlatformDxe/Xen.c

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