\r
\r
/**\r
- This function calculates and updates an UINT8 checksum.\r
+ Find ACPI tables in an FV and install them. \r
\r
- @param Buffer Pointer to buffer to checksum\r
- @param Size Number of bytes to checksum\r
+ This is now a fall-back path. Normally, we will search for tables provided\r
+ by the VMM first.\r
\r
-**/\r
-VOID\r
-AcpiPlatformChecksum (\r
- IN UINT8 *Buffer,\r
- IN UINTN Size\r
- )\r
-{\r
- UINTN ChecksumOffset;\r
-\r
- ChecksumOffset = OFFSET_OF (EFI_ACPI_DESCRIPTION_HEADER, Checksum);\r
-\r
- //\r
- // Set checksum to 0 first\r
- //\r
- Buffer[ChecksumOffset] = 0;\r
-\r
- //\r
- // Update checksum value\r
- //\r
- Buffer[ChecksumOffset] = CalculateCheckSum8(Buffer, Size);\r
-}\r
-\r
-/**\r
- Find ACPI tables in an FV and parses them. This function is useful for QEMU and KVM.\r
+ If that fails, we use this function to load the ACPI tables from an FV. The\r
+ sources for the FV based tables is located under OvmfPkg/AcpiTables.\r
\r
@param AcpiTable Protocol instance pointer \r
\r
**/\r
EFI_STATUS\r
EFIAPI\r
-FindAcpiTablesInFv (\r
+InstallOvmfFvTables (\r
IN EFI_ACPI_TABLE_PROTOCOL *AcpiTable\r
)\r
{\r
TableSize = ((EFI_ACPI_DESCRIPTION_HEADER *) CurrentTable)->Length;\r
ASSERT (Size >= TableSize);\r
\r
- //\r
- // Checksum ACPI table\r
- //\r
- AcpiPlatformChecksum ((UINT8*)CurrentTable, TableSize);\r
-\r
//\r
// Install ACPI table\r
//\r
}\r
\r
/**\r
- Entrypoint of Acpi Platform driver.\r
+ Effective entrypoint of Acpi Platform driver.\r
\r
@param ImageHandle\r
@param SystemTable\r
**/\r
EFI_STATUS\r
EFIAPI\r
-AcpiPlatformEntryPoint (\r
- IN EFI_HANDLE ImageHandle,\r
- IN EFI_SYSTEM_TABLE *SystemTable\r
+InstallAcpiTables (\r
+ IN EFI_ACPI_TABLE_PROTOCOL *AcpiTable\r
)\r
{\r
EFI_STATUS Status;\r
- EFI_ACPI_TABLE_PROTOCOL *AcpiTable;\r
-\r
- //\r
- // Find the AcpiTable protocol\r
- //\r
- Status = gBS->LocateProtocol (\r
- &gEfiAcpiTableProtocolGuid,\r
- NULL,\r
- (VOID**)&AcpiTable\r
- );\r
- if (EFI_ERROR (Status)) {\r
- return EFI_ABORTED;\r
- }\r
\r
if (XenDetected ()) {\r
Status = InstallXenTables (AcpiTable);\r
- if (EFI_ERROR (Status)) {\r
- Status = FindAcpiTablesInFv (AcpiTable);\r
- }\r
} else {\r
- Status = FindAcpiTablesInFv (AcpiTable);\r
+ Status = InstallQemuFwCfgTables (AcpiTable);\r
}\r
+\r
if (EFI_ERROR (Status)) {\r
- return Status;\r
+ Status = InstallOvmfFvTables (AcpiTable);\r
}\r
\r
- return EFI_SUCCESS;\r
+ return Status;\r
}\r
\r