Revision: 17885
          http://sourceforge.net/p/edk2/code/17885
Author:   lzeng14
Date:     2015-07-08 09:44:46 +0000 (Wed, 08 Jul 2015)
Log Message:
-----------
MdeModulePkg AcpiTableDxe: Install config table at ACPI data change

UEFI spec has clear description below:

Configuration Table Groups
The GUID for a configuration table also defines a corresponding event group 
GUID with the same value.
If the data represented by a configuration table is changed,
InstallConfigurationTable() should be called.
When InstallConfigurationTable() is called, the corresponding event is signaled.
When this event is signaled,
any components that cache information from the configuration table can 
optionally update their cached state.
For example, EFI_ACPI_TABLE_GUID defines a configuration table for ACPI data.
When ACPI data is changed, InstallConfigurationTable() is called.
During the execution of InstallConfigurationTable(),
a corresponding event group with EFI_ACPI_TABLE_GUID is signaled,
allowing an application to invalidate any cached ACPI data.

But current implementation only InstallConfigurationTable() at first time ACPI 
data change.
  if (((Version & EFI_ACPI_TABLE_VERSION_1_0B) != 0) &&
      !AcpiTableInstance->TablesInstalled1) {
    Status = gBS->InstallConfigurationTable (&gEfiAcpi10TableGuid, 
AcpiTableInstance->Rsdp1);
    if (EFI_ERROR (Status)) {
      return EFI_ABORTED;
    }

    AcpiTableInstance->TablesInstalled1 = TRUE;
  }

  if (((Version & ACPI_TABLE_VERSION_GTE_2_0) != 0) &&
      !AcpiTableInstance->TablesInstalled3) {
    Status = gBS->InstallConfigurationTable (&gEfiAcpiTableGuid, 
AcpiTableInstance->Rsdp3);
    if (EFI_ERROR (Status)) {
      return EFI_ABORTED;
    }

    AcpiTableInstance->TablesInstalled3= TRUE;
  }

The AcpiTableInstance->TablesInstalled1 and AcpiTableInstance->TablesInstalled3 
conditional judgment need to be removed.

Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Star Zeng <[email protected]>
Reviewed-by: Jiewen Yao <[email protected]>

Modified Paths:
--------------
    trunk/edk2/MdeModulePkg/Universal/Acpi/AcpiTableDxe/AcpiTable.h
    trunk/edk2/MdeModulePkg/Universal/Acpi/AcpiTableDxe/AcpiTableProtocol.c

Modified: trunk/edk2/MdeModulePkg/Universal/Acpi/AcpiTableDxe/AcpiTable.h
===================================================================
--- trunk/edk2/MdeModulePkg/Universal/Acpi/AcpiTableDxe/AcpiTable.h     
2015-07-08 07:44:22 UTC (rev 17884)
+++ trunk/edk2/MdeModulePkg/Universal/Acpi/AcpiTableDxe/AcpiTable.h     
2015-07-08 09:44:46 UTC (rev 17885)
@@ -114,8 +114,6 @@
   UINTN                                         NumberOfTableEntries1;  // 
Number of ACPI 1.0 tables
   UINTN                                         NumberOfTableEntries3;  // 
Number of ACPI 3.0 tables
   UINTN                                         CurrentHandle;
-  BOOLEAN                                       TablesInstalled1;       // 
ACPI 1.0 tables published
-  BOOLEAN                                       TablesInstalled3;       // 
ACPI 3.0 tables published
   EFI_ACPI_TABLE_PROTOCOL                       AcpiTableProtocol;
   EFI_ACPI_SDT_PROTOCOL                         AcpiSdtProtocol;
   LIST_ENTRY                                    NotifyList;

Modified: 
trunk/edk2/MdeModulePkg/Universal/Acpi/AcpiTableDxe/AcpiTableProtocol.c
===================================================================
--- trunk/edk2/MdeModulePkg/Universal/Acpi/AcpiTableDxe/AcpiTableProtocol.c     
2015-07-08 07:44:22 UTC (rev 17884)
+++ trunk/edk2/MdeModulePkg/Universal/Acpi/AcpiTableDxe/AcpiTableProtocol.c     
2015-07-08 09:44:46 UTC (rev 17885)
@@ -159,24 +159,18 @@
   // Add the RSD_PTR to the system table and store that we have installed the
   // tables.
   //
-  if (((Version & EFI_ACPI_TABLE_VERSION_1_0B) != 0) &&
-      !AcpiTableInstance->TablesInstalled1) {
+  if ((Version & EFI_ACPI_TABLE_VERSION_1_0B) != 0) {
     Status = gBS->InstallConfigurationTable (&gEfiAcpi10TableGuid, 
AcpiTableInstance->Rsdp1);
     if (EFI_ERROR (Status)) {
       return EFI_ABORTED;
     }
-
-    AcpiTableInstance->TablesInstalled1 = TRUE;
   }
 
-  if (((Version & ACPI_TABLE_VERSION_GTE_2_0) != 0) &&
-      !AcpiTableInstance->TablesInstalled3) {
+  if ((Version & ACPI_TABLE_VERSION_GTE_2_0) != 0) {
     Status = gBS->InstallConfigurationTable (&gEfiAcpiTableGuid, 
AcpiTableInstance->Rsdp3);
     if (EFI_ERROR (Status)) {
       return EFI_ABORTED;
     }
-
-    AcpiTableInstance->TablesInstalled3= TRUE;
   }
 
   return EFI_SUCCESS;


------------------------------------------------------------------------------
Don't Limit Your Business. Reach for the Cloud.
GigeNET's Cloud Solutions provide you with the tools and support that
you need to offload your IT needs and focus on growing your business.
Configured For All Businesses. Start Your Cloud Today.
https://www.gigenetcloud.com/
_______________________________________________
edk2-commits mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/edk2-commits

Reply via email to