mirror of
https://github.com/acidanthera/audk.git
synced 2025-04-08 17:05:09 +02:00
OvmfPkg/Bhyve: install ACPI tables from memory
It's much easier to create configuration dependent ACPI tables for bhyve than for OVMF. For this reason, don't use the statically created ACPI tables provided by OVMF. Instead, prefer the dynamically created ACPI tables of bhyve. If bhyve provides no ACPI tables or we are unable to detect those, fall back to OVMF tables. Ideally, we use the qemu fwcfg interface to pass the ACPI tables from bhyve to OVMF. bhyve will support this in the future. However, current bhyve executables don't support passing ACPI tables by the qemu fwcfg interface. They just copy the ACPI into main memory. For that reason, pick up the ACPI tables from main memory. Signed-off-by: Corvin Köhne <corvink@FreeBSD.org> Reviewed-by: Rebecca Cran <rebecca@bsdio.com> Acked-by: Peter Grehan <grehan@freebsd.org> Acked-by: Gerd Hoffmann <kraxel@redhat.com>
This commit is contained in:
parent
1288c5415c
commit
4bd0849d81
@ -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);
|
||||
|
||||
|
@ -35,6 +35,7 @@
|
||||
UefiCpuPkg/UefiCpuPkg.dec
|
||||
|
||||
[LibraryClasses]
|
||||
AcpiPlatformLib
|
||||
BaseLib
|
||||
BaseMemoryLib
|
||||
BhyveFwCtlLib
|
||||
|
@ -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
|
||||
|
Loading…
x
Reference in New Issue
Block a user