From 4196f91ec0e615ecbddd2fc267a39fd7f3c59b91 Mon Sep 17 00:00:00 2001 From: jyao1 Date: Fri, 16 Jul 2010 04:31:02 +0000 Subject: [PATCH] Enhance to follow UEFI2.3 spec - the EFI_ACPI_TABLE_PROTOCOL will ensure that the checksum field is correct for both the RSDT/XSDT table and the table being installed through the AcpiTableBuffer parameter. git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@10655 6f19259b-4bc3-4df7-8a09-765794883524 --- .../Universal/Acpi/AcpiTableDxe/AcpiTableProtocol.c | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/MdeModulePkg/Universal/Acpi/AcpiTableDxe/AcpiTableProtocol.c b/MdeModulePkg/Universal/Acpi/AcpiTableDxe/AcpiTableProtocol.c index c551d0bd5d..cb3dc89948 100644 --- a/MdeModulePkg/Universal/Acpi/AcpiTableDxe/AcpiTableProtocol.c +++ b/MdeModulePkg/Universal/Acpi/AcpiTableDxe/AcpiTableProtocol.c @@ -330,7 +330,13 @@ InstallAcpiTable ( Length = ((EFI_ACPI_COMMON_HEADER *) AcpiTableBuffer)->Length; Checksum = CalculateCheckSum8 ((UINT8 *)AcpiTableBuffer, Length); - ASSERT (Checksum == 0); + if (Checksum != 0) { + AcpiPlatformChecksum ( + (VOID *)AcpiTableBuffer, + (UINTN)Length, + OFFSET_OF (EFI_ACPI_DESCRIPTION_HEADER, Checksum) + ); + } // // Get the instance of the ACPI table protocol