]> git.proxmox.com Git - mirror_edk2.git/blobdiff - OvmfPkg/AcpiPlatformDxe/Xen.c
OvmfPkg/AcpiPlatformDxe: Use Xen PVH RSDP if it exist
[mirror_edk2.git] / 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