MdeModulePkg AcpiTableDxe: Cover EFI_ACPI_TABLE_VERSION_5_0.
Follow PI 1.4 spec, 1. Cover EFI_ACPI_TABLE_VERSION_5_0. 2. Update TableKey parameter description in the EFI_ACPI_SDT_PROTOCOL.GetAcpiTable() section. 3. Update EFI_ACPI_SDT_PROTOCOL.GetAcpiTable() description. Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Star Zeng <star.zeng@intel.com> Reviewed-by: Jiewen Yao <jiewen.yao@intel.com> git-svn-id: https://svn.code.sf.net/p/edk2/code/trunk/edk2@17649 6f19259b-4bc3-4df7-8a09-765794883524
This commit is contained in:
@@ -1,7 +1,7 @@
|
||||
/** @file
|
||||
ACPI Table Protocol Implementation
|
||||
|
||||
Copyright (c) 2006 - 2014, Intel Corporation. All rights reserved.<BR>
|
||||
Copyright (c) 2006 - 2015, Intel Corporation. All rights reserved.<BR>
|
||||
This program and the accompanying materials
|
||||
are licensed and made available under the terms and conditions of the BSD License
|
||||
which accompanies this distribution. The full text of the license may be found at
|
||||
@@ -134,8 +134,7 @@ PublishTables (
|
||||
CurrentRsdtEntry = (UINT32 *) ((UINT8 *) AcpiTableInstance->Rsdt1 + sizeof (EFI_ACPI_DESCRIPTION_HEADER));
|
||||
*CurrentRsdtEntry = (UINT32) (UINTN) AcpiTableInstance->Fadt1;
|
||||
}
|
||||
if ((Version & EFI_ACPI_TABLE_VERSION_2_0) != 0 ||
|
||||
(Version & EFI_ACPI_TABLE_VERSION_3_0) != 0) {
|
||||
if ((Version & ACPI_TABLE_VERSION_GTE_2_0) != 0) {
|
||||
CurrentRsdtEntry = (UINT32 *) ((UINT8 *) AcpiTableInstance->Rsdt3 + sizeof (EFI_ACPI_DESCRIPTION_HEADER));
|
||||
*CurrentRsdtEntry = (UINT32) (UINTN) AcpiTableInstance->Fadt3;
|
||||
CurrentXsdtEntry = (VOID *) ((UINT8 *) AcpiTableInstance->Xsdt + sizeof (EFI_ACPI_DESCRIPTION_HEADER));
|
||||
@@ -170,8 +169,7 @@ PublishTables (
|
||||
AcpiTableInstance->TablesInstalled1 = TRUE;
|
||||
}
|
||||
|
||||
if (((Version & EFI_ACPI_TABLE_VERSION_2_0) != 0 ||
|
||||
(Version & EFI_ACPI_TABLE_VERSION_3_0) != 0) &&
|
||||
if ((Version & ACPI_TABLE_VERSION_GTE_2_0) &&
|
||||
!AcpiTableInstance->TablesInstalled3) {
|
||||
Status = gBS->InstallConfigurationTable (&gEfiAcpiTableGuid, AcpiTableInstance->Rsdp3);
|
||||
if (EFI_ERROR (Status)) {
|
||||
@@ -240,13 +238,13 @@ InstallAcpiTable (
|
||||
AcpiTableInstance,
|
||||
AcpiTableBufferConst,
|
||||
TRUE,
|
||||
EFI_ACPI_TABLE_VERSION_1_0B | EFI_ACPI_TABLE_VERSION_2_0 | EFI_ACPI_TABLE_VERSION_3_0,
|
||||
EFI_ACPI_TABLE_VERSION_1_0B | ACPI_TABLE_VERSION_GTE_2_0,
|
||||
TableKey
|
||||
);
|
||||
if (!EFI_ERROR (Status)) {
|
||||
Status = PublishTables (
|
||||
AcpiTableInstance,
|
||||
EFI_ACPI_TABLE_VERSION_1_0B | EFI_ACPI_TABLE_VERSION_2_0 | EFI_ACPI_TABLE_VERSION_3_0
|
||||
EFI_ACPI_TABLE_VERSION_1_0B | ACPI_TABLE_VERSION_GTE_2_0
|
||||
);
|
||||
}
|
||||
FreePool (AcpiTableBufferConst);
|
||||
@@ -258,7 +256,7 @@ InstallAcpiTable (
|
||||
if (!EFI_ERROR (Status)) {
|
||||
SdtNotifyAcpiList (
|
||||
AcpiTableInstance,
|
||||
EFI_ACPI_TABLE_VERSION_1_0B | EFI_ACPI_TABLE_VERSION_2_0 | EFI_ACPI_TABLE_VERSION_3_0,
|
||||
EFI_ACPI_TABLE_VERSION_1_0B | ACPI_TABLE_VERSION_GTE_2_0,
|
||||
*TableKey
|
||||
);
|
||||
}
|
||||
@@ -298,13 +296,13 @@ UninstallAcpiTable (
|
||||
//
|
||||
Status = RemoveTableFromList (
|
||||
AcpiTableInstance,
|
||||
EFI_ACPI_TABLE_VERSION_1_0B | EFI_ACPI_TABLE_VERSION_2_0 | EFI_ACPI_TABLE_VERSION_3_0,
|
||||
EFI_ACPI_TABLE_VERSION_1_0B | ACPI_TABLE_VERSION_GTE_2_0,
|
||||
TableKey
|
||||
);
|
||||
if (!EFI_ERROR (Status)) {
|
||||
Status = PublishTables (
|
||||
AcpiTableInstance,
|
||||
EFI_ACPI_TABLE_VERSION_1_0B | EFI_ACPI_TABLE_VERSION_2_0 | EFI_ACPI_TABLE_VERSION_3_0
|
||||
EFI_ACPI_TABLE_VERSION_1_0B | ACPI_TABLE_VERSION_GTE_2_0
|
||||
);
|
||||
}
|
||||
|
||||
@@ -559,8 +557,7 @@ AddTableToList (
|
||||
// Check that the table has not been previously added.
|
||||
//
|
||||
if (((Version & EFI_ACPI_TABLE_VERSION_1_0B) != 0 && AcpiTableInstance->Fadt1 != NULL) ||
|
||||
((Version & EFI_ACPI_TABLE_VERSION_2_0) != 0 && AcpiTableInstance->Fadt3 != NULL) ||
|
||||
((Version & EFI_ACPI_TABLE_VERSION_3_0) != 0 && AcpiTableInstance->Fadt3 != NULL)
|
||||
((Version & ACPI_TABLE_VERSION_GTE_2_0) != 0 && AcpiTableInstance->Fadt3 != NULL)
|
||||
) {
|
||||
gBS->FreePages (CurrentTableList->PageAddress, CurrentTableList->NumberOfPages);
|
||||
gBS->FreePool (CurrentTableList);
|
||||
@@ -607,8 +604,7 @@ AddTableToList (
|
||||
AcpiTableInstance->Rsdt1->OemRevision = AcpiTableInstance->Fadt1->Header.OemRevision;
|
||||
}
|
||||
|
||||
if ((Version & EFI_ACPI_TABLE_VERSION_2_0) != 0 ||
|
||||
(Version & EFI_ACPI_TABLE_VERSION_3_0) != 0) {
|
||||
if ((Version & ACPI_TABLE_VERSION_GTE_2_0) != 0) {
|
||||
//
|
||||
// Save a pointer to the table
|
||||
//
|
||||
@@ -696,8 +692,7 @@ AddTableToList (
|
||||
// Check that the table has not been previously added.
|
||||
//
|
||||
if (((Version & EFI_ACPI_TABLE_VERSION_1_0B) != 0 && AcpiTableInstance->Facs1 != NULL) ||
|
||||
((Version & EFI_ACPI_TABLE_VERSION_2_0) != 0 && AcpiTableInstance->Facs3 != NULL) ||
|
||||
((Version & EFI_ACPI_TABLE_VERSION_3_0) != 0 && AcpiTableInstance->Facs3 != NULL)
|
||||
((Version & ACPI_TABLE_VERSION_GTE_2_0) != 0 && AcpiTableInstance->Facs3 != NULL)
|
||||
) {
|
||||
gBS->FreePages (CurrentTableList->PageAddress, CurrentTableList->NumberOfPages);
|
||||
gBS->FreePool (CurrentTableList);
|
||||
@@ -735,8 +730,7 @@ AddTableToList (
|
||||
}
|
||||
}
|
||||
|
||||
if ((Version & EFI_ACPI_TABLE_VERSION_2_0) != 0 ||
|
||||
(Version & EFI_ACPI_TABLE_VERSION_3_0) != 0) {
|
||||
if ((Version & ACPI_TABLE_VERSION_GTE_2_0) != 0) {
|
||||
//
|
||||
// Save a pointer to the table
|
||||
//
|
||||
@@ -782,8 +776,7 @@ AddTableToList (
|
||||
// Check that the table has not been previously added.
|
||||
//
|
||||
if (((Version & EFI_ACPI_TABLE_VERSION_1_0B) != 0 && AcpiTableInstance->Dsdt1 != NULL) ||
|
||||
((Version & EFI_ACPI_TABLE_VERSION_2_0) != 0 && AcpiTableInstance->Dsdt3 != NULL) ||
|
||||
((Version & EFI_ACPI_TABLE_VERSION_3_0) != 0 && AcpiTableInstance->Dsdt3 != NULL)
|
||||
((Version & ACPI_TABLE_VERSION_GTE_2_0) != 0 && AcpiTableInstance->Dsdt3 != NULL)
|
||||
) {
|
||||
gBS->FreePages (CurrentTableList->PageAddress, CurrentTableList->NumberOfPages);
|
||||
gBS->FreePool (CurrentTableList);
|
||||
@@ -821,8 +814,7 @@ AddTableToList (
|
||||
}
|
||||
}
|
||||
|
||||
if ((Version & EFI_ACPI_TABLE_VERSION_2_0) != 0 ||
|
||||
(Version & EFI_ACPI_TABLE_VERSION_3_0) != 0) {
|
||||
if ((Version & ACPI_TABLE_VERSION_GTE_2_0) != 0) {
|
||||
//
|
||||
// Save a pointer to the table
|
||||
//
|
||||
@@ -922,8 +914,7 @@ AddTableToList (
|
||||
//
|
||||
// Add to ACPI 2.0/3.0 table tree
|
||||
//
|
||||
if ((Version & EFI_ACPI_TABLE_VERSION_2_0) != 0 ||
|
||||
(Version & EFI_ACPI_TABLE_VERSION_3_0) != 0) {
|
||||
if ((Version & ACPI_TABLE_VERSION_GTE_2_0) != 0) {
|
||||
if (AddToRsdt) {
|
||||
//
|
||||
// If the table number exceed the gEfiAcpiMaxNumTables, enlarge the table buffer
|
||||
@@ -1255,17 +1246,11 @@ DeleteTable (
|
||||
}
|
||||
}
|
||||
|
||||
if ((Version & EFI_ACPI_TABLE_VERSION_2_0 & Table->Version) ||
|
||||
(Version & EFI_ACPI_TABLE_VERSION_3_0 & Table->Version)) {
|
||||
if (Version & ACPI_TABLE_VERSION_GTE_2_0 & Table->Version) {
|
||||
//
|
||||
// Remove this version from the table
|
||||
//
|
||||
if (Version & EFI_ACPI_TABLE_VERSION_2_0 & Table->Version) {
|
||||
Table->Version = Table->Version &~EFI_ACPI_TABLE_VERSION_2_0;
|
||||
}
|
||||
if (Version & EFI_ACPI_TABLE_VERSION_3_0 & Table->Version) {
|
||||
Table->Version = Table->Version &~EFI_ACPI_TABLE_VERSION_3_0;
|
||||
}
|
||||
Table->Version = Table->Version &~(Version & ACPI_TABLE_VERSION_GTE_2_0);
|
||||
|
||||
//
|
||||
// Remove from Rsdt and Xsdt. We don't care about the return value
|
||||
@@ -1291,8 +1276,7 @@ DeleteTable (
|
||||
AcpiTableInstance->Fadt1 = NULL;
|
||||
}
|
||||
|
||||
if ((Version & EFI_ACPI_TABLE_VERSION_2_0) != 0 ||
|
||||
(Version & EFI_ACPI_TABLE_VERSION_3_0) != 0) {
|
||||
if ((Version & ACPI_TABLE_VERSION_GTE_2_0) != 0) {
|
||||
AcpiTableInstance->Fadt3 = NULL;
|
||||
}
|
||||
break;
|
||||
@@ -1319,8 +1303,7 @@ DeleteTable (
|
||||
}
|
||||
}
|
||||
|
||||
if ((Version & EFI_ACPI_TABLE_VERSION_2_0) != 0 ||
|
||||
(Version & EFI_ACPI_TABLE_VERSION_3_0) != 0) {
|
||||
if ((Version & ACPI_TABLE_VERSION_GTE_2_0) != 0) {
|
||||
AcpiTableInstance->Facs3 = NULL;
|
||||
|
||||
//
|
||||
@@ -1366,8 +1349,7 @@ DeleteTable (
|
||||
}
|
||||
|
||||
|
||||
if ((Version & EFI_ACPI_TABLE_VERSION_2_0) != 0 ||
|
||||
(Version & EFI_ACPI_TABLE_VERSION_3_0) != 0) {
|
||||
if ((Version & ACPI_TABLE_VERSION_GTE_2_0) != 0) {
|
||||
AcpiTableInstance->Dsdt3 = NULL;
|
||||
|
||||
//
|
||||
|
Reference in New Issue
Block a user