diff options
-rw-r--r-- | OvmfPkg/Bhyve/AcpiPlatformDxe/AcpiPlatform.c | 37 | ||||
-rw-r--r-- | OvmfPkg/Bhyve/AcpiPlatformDxe/AcpiPlatformDxe.inf | 1 | ||||
-rw-r--r-- | OvmfPkg/Bhyve/BhyveX64.dsc | 1 |
3 files changed, 38 insertions, 1 deletions
diff --git a/OvmfPkg/Bhyve/AcpiPlatformDxe/AcpiPlatform.c b/OvmfPkg/Bhyve/AcpiPlatformDxe/AcpiPlatform.c index 999e9f1..1e1c906 100644 --- a/OvmfPkg/Bhyve/AcpiPlatformDxe/AcpiPlatform.c +++ b/OvmfPkg/Bhyve/AcpiPlatformDxe/AcpiPlatform.c @@ -10,6 +10,11 @@ #include "AcpiPlatform.h"
+#include <Library/AcpiPlatformLib.h> // InstallAcpiTablesFromMemory()
+
+#define BHYVE_ACPI_PHYSICAL_ADDRESS ((UINTN)0x000F2400)
+#define BHYVE_BIOS_PHYSICAL_END ((UINTN)0x00100000)
+
EFI_STATUS
EFIAPI
InstallAcpiTable (
@@ -241,7 +246,37 @@ InstallAcpiTables ( IN EFI_ACPI_TABLE_PROTOCOL *AcpiTable
)
{
- EFI_STATUS Status;
+ EFI_ACPI_2_0_ROOT_SYSTEM_DESCRIPTION_POINTER *Rsdp;
+ EFI_STATUS Status;
+
+ Status = GetAcpiRsdpFromMemory (
+ BHYVE_ACPI_PHYSICAL_ADDRESS,
+ BHYVE_BIOS_PHYSICAL_END,
+ &Rsdp
+ );
+ if (EFI_ERROR (Status)) {
+ return Status;
+ }
+
+ Status = InstallAcpiTablesFromRsdp (
+ AcpiTable,
+ Rsdp
+ );
+ if (!EFI_ERROR (Status)) {
+ return EFI_SUCCESS;
+ }
+
+ if (Status != EFI_NOT_FOUND) {
+ DEBUG (
+ (
+ DEBUG_WARN,
+ "%a: unable to install bhyve's ACPI tables (%r)\n",
+ __func__,
+ Status
+ )
+ );
+ return Status;
+ }
Status = InstallOvmfFvTables (AcpiTable);
diff --git a/OvmfPkg/Bhyve/AcpiPlatformDxe/AcpiPlatformDxe.inf b/OvmfPkg/Bhyve/AcpiPlatformDxe/AcpiPlatformDxe.inf index 94c65f3..75ed8e4 100644 --- a/OvmfPkg/Bhyve/AcpiPlatformDxe/AcpiPlatformDxe.inf +++ b/OvmfPkg/Bhyve/AcpiPlatformDxe/AcpiPlatformDxe.inf @@ -35,6 +35,7 @@ UefiCpuPkg/UefiCpuPkg.dec
[LibraryClasses]
+ AcpiPlatformLib
BaseLib
BaseMemoryLib
BhyveFwCtlLib
diff --git a/OvmfPkg/Bhyve/BhyveX64.dsc b/OvmfPkg/Bhyve/BhyveX64.dsc index bb317a5..7b97470 100644 --- a/OvmfPkg/Bhyve/BhyveX64.dsc +++ b/OvmfPkg/Bhyve/BhyveX64.dsc @@ -341,6 +341,7 @@ PciLib|OvmfPkg/Library/DxePciLibI440FxQ35/DxePciLibI440FxQ35.inf
[LibraryClasses.common.DXE_DRIVER]
+ AcpiPlatformLib|OvmfPkg/Library/AcpiPlatformLib/DxeAcpiPlatformLib.inf
PcdLib|MdePkg/Library/DxePcdLib/DxePcdLib.inf
HobLib|MdePkg/Library/DxeHobLib/DxeHobLib.inf
MemoryAllocationLib|MdePkg/Library/UefiMemoryAllocationLib/UefiMemoryAllocationLib.inf
|