Nate,
I don't consider it as a hack. UefiPayloadPkg requires that bootloader produces 
all ACPI tables.
Now we are in a middle stage. So, only the MCFG and FADT are produced (as 
gUniversalPayloadAcpiTableGuid HOB) in PEI phase.

Thanks,
Ray


-----Original Message-----
From: devel@edk2.groups.io <devel@edk2.groups.io> On Behalf Of Nate DeSimone
Sent: Wednesday, December 8, 2021 10:06 AM
To: Sravanthi, K KavyaX <k.kavyax.sravan...@intel.com>; devel@edk2.groups.io
Cc: Chiu, Chasel <chasel.c...@intel.com>; Liming Gao 
<gaolim...@byosoft.com.cn>; Dong, Eric <eric.d...@intel.com>; Oram, Isaac W 
<isaac.w.o...@intel.com>; Michael Kubacki <michael.kuba...@microsoft.com>
Subject: Re: [edk2-devel] [Patch V2] MinPlatformPkg: Check if Acpi table is 
already installed.

This seems like a hack to me. One of the major goals of the Minimum Platform 
Architecture is consistency. A board override for the MinPlatform provided 
installation of the MCFG table runs counter to that goal. Every field in the 
MCFG table produced by MinPlatform's implementation is fully customizable by 
board code via the PciSegmentInfoLib's GetPciSegmentInfo() function. If a 
multi-segment MCFG table is needed, then all the board needs to do is choose a 
different implementation of PciSegmentInfoLib than the default one 
(MinPlatformPkg\Pci\Library\PciSegmentInfoLibSimple\PciSegmentInfoLibSimple.inf)

I cannot conceive of any reason why a board override of this functionality is 
required. Why do you need this? 

-----Original Message-----
From: Sravanthi, K KavyaX <k.kavyax.sravan...@intel.com> 
Sent: Sunday, December 5, 2021 10:16 PM
To: devel@edk2.groups.io
Cc: Sravanthi, K KavyaX <k.kavyax.sravan...@intel.com>; Chiu, Chasel 
<chasel.c...@intel.com>; Desimone, Nathaniel L 
<nathaniel.l.desim...@intel.com>; Liming Gao <gaolim...@byosoft.com.cn>; Dong, 
Eric <eric.d...@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.c...@intel.com>
Cc: Nate DeSimone <nathaniel.l.desim...@intel.com>
Cc: Liming Gao <gaolim...@byosoft.com.cn>
Cc: Eric Dong <eric.d...@intel.com>
Signed-off-by: kavya <k.kavyax.sravan...@intel.com>
Reviewed-by: Zhiguang Liu <zhiguang....@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








-=-=-=-=-=-=-=-=-=-=-=-
Groups.io Links: You receive all messages sent to this group.
View/Reply Online (#84489): https://edk2.groups.io/g/devel/message/84489
Mute This Topic: https://groups.io/mt/87535133/21656
Group Owner: devel+ow...@edk2.groups.io
Unsubscribe: https://edk2.groups.io/g/devel/unsub [arch...@mail-archive.com]
-=-=-=-=-=-=-=-=-=-=-=-


Reply via email to