Re: [Patch V2] MinPlatformPkg: Check if Acpi table is already installed.
Dong, Eric
Reviewed-by: Eric Dong <eric.dong@intel.com>
toggle quoted messageShow quoted text
-----Original Message-----
From: Sravanthi, K KavyaX <k.kavyax.sravanthi@intel.com> Sent: Monday, December 6, 2021 2:16 PM To: devel@edk2.groups.io Cc: Sravanthi, K KavyaX <k.kavyax.sravanthi@intel.com>; Chiu, Chasel <chasel.chiu@intel.com>; Desimone, Nathaniel L <nathaniel.l.desimone@intel.com>; Liming Gao <gaoliming@byosoft.com.cn>; Dong, Eric <eric.dong@intel.com> Subject: [Patch V2] MinPlatformPkg: Check if Acpi table is already installed. Check if Acpi table is already installed by locating the first ACPI table in XSDT/RSDT based on Signature Cc: Chasel Chiu <chasel.chiu@intel.com> Cc: Nate DeSimone <nathaniel.l.desimone@intel.com> Cc: Liming Gao <gaoliming@byosoft.com.cn> Cc: Eric Dong <eric.dong@intel.com> Signed-off-by: kavya <k.kavyax.sravanthi@intel.com> Reviewed-by: Zhiguang Liu <zhiguang.liu@intel.com> --- Platform/Intel/MinPlatformPkg/Acpi/AcpiTables/AcpiPlatform.c | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/Platform/Intel/MinPlatformPkg/Acpi/AcpiTables/AcpiPlatform.c b/Platform/Intel/MinPlatformPkg/Acpi/AcpiTables/AcpiPlatform.c index 785cf4c2f9..dcbb8b7c7f 100644 --- a/Platform/Intel/MinPlatformPkg/Acpi/AcpiTables/AcpiPlatform.c +++ b/Platform/Intel/MinPlatformPkg/Acpi/AcpiTables/AcpiPlatform.c @@ -1048,12 +1048,21 @@ InstallMcfgFromScratch ( { EFI_STATUS Status; EFI_ACPI_MEMORY_MAPPED_CONFIGURATION_BASE_ADDRESS_TABLE_HEADER *McfgTable; + EFI_ACPI_COMMON_HEADER *Mcfg; EFI_ACPI_MEMORY_MAPPED_ENHANCED_CONFIGURATION_SPACE_BASE_ADDRESS_ALLOCATION_STRUCTURE *Segment; UINTN Index; UINTN SegmentCount; PCI_SEGMENT_INFO *PciSegmentInfo; UINTN TableHandle; + Mcfg = (EFI_ACPI_COMMON_HEADER *) EfiLocateFirstAcpiTable ( + EFI_ACPI_3_0_PCI_EXPRESS_MEMORY_MAPPED_CONFIGURATION_SPACE_BASE_ADDRESS_DESCRIPTION_TABLE_SIGNATURE + ); if (Mcfg != NULL) { + DEBUG ((DEBUG_INFO, "MCFG table already installed\n")); + return EFI_SUCCESS; + } + PciSegmentInfo = GetPciSegmentInfo (&SegmentCount); McfgTable = AllocateZeroPool ( @@ -1365,6 +1374,7 @@ UpdateLocalTable ( { EFI_STATUS Status; EFI_ACPI_COMMON_HEADER *CurrentTable; + EFI_ACPI_COMMON_HEADER *Table; EFI_ACPI_TABLE_VERSION Version; UINTN TableHandle; UINTN Index; @@ -1372,6 +1382,14 @@ UpdateLocalTable ( for (Index = 0; Index < sizeof(mLocalTable)/sizeof(mLocalTable[0]); Index++) { CurrentTable = mLocalTable[Index]; + Table = (EFI_ACPI_COMMON_HEADER *) EfiLocateFirstAcpiTable (CurrentTable->Signature); + if (Table != NULL) { + DEBUG ((DEBUG_INFO, "Acpi table with signature=%c%c%c%c already installed\n", + ((CHAR8*)&CurrentTable->Signature)[0], ((CHAR8*)&CurrentTable->Signature)[1], + ((CHAR8*)&CurrentTable->Signature)[2], ((CHAR8*)&CurrentTable->Signature)[3])); + continue; + } + PlatformUpdateTables (CurrentTable, &Version); TableHandle = 0; -- 2.16.2.windows.1
|
|