Adds a dynamic PCD that specifies whether the feature is active.

This is useful because the feature might be enabled via FeatureFlag
PCD PcdAcpiDebugFeatureEnable meaning it is built and included in
the flash image but the board might need to control whether the
feature is active based on input such as a Setup menu option.

A deactivated feature will be dispatched but simply exit in the
entry point.

Cc: Sai Chaganty <rangasai.v.chaga...@intel.com>
Cc: Chasel Chiu <chasel.c...@intel.com>
Cc: Eric Dong <eric.d...@intel.com>
Cc: Liming Gao <liming....@intel.com>
Signed-off-by: Michael Kubacki <michael.a.kuba...@intel.com>
---
 Features/Intel/Debugging/AcpiDebugFeaturePkg/AcpiDebugFeaturePkg.dec          
| 14 +++++++++++++-
 Features/Intel/Debugging/AcpiDebugFeaturePkg/AcpiDebugDxeSmm/AcpiDebugDxe.inf 
|  5 +++--
 Features/Intel/Debugging/AcpiDebugFeaturePkg/AcpiDebugDxeSmm/AcpiDebugSmm.inf 
|  5 +++--
 Features/Intel/Debugging/AcpiDebugFeaturePkg/AcpiDebugDxeSmm/AcpiDebug.c      
|  4 ++++
 Features/Intel/Debugging/AcpiDebugFeaturePkg/Readme.md                        
|  1 +
 5 files changed, 24 insertions(+), 5 deletions(-)

diff --git 
a/Features/Intel/Debugging/AcpiDebugFeaturePkg/AcpiDebugFeaturePkg.dec 
b/Features/Intel/Debugging/AcpiDebugFeaturePkg/AcpiDebugFeaturePkg.dec
index a74ee3e084..c3bd89fe2b 100644
--- a/Features/Intel/Debugging/AcpiDebugFeaturePkg/AcpiDebugFeaturePkg.dec
+++ b/Features/Intel/Debugging/AcpiDebugFeaturePkg/AcpiDebugFeaturePkg.dec
@@ -34,6 +34,18 @@
   
gAcpiDebugFeaturePkgTokenSpaceGuid.PcdAcpiDebugBufferSize|0x10000|UINT32|0xF0000001
 
 [PcdsDynamic, PcdsDynamicEx]
+  ## This PCD specifies whether the feature is active.
+  #
+  #  The PCD value can be modified at boot time to activate and deactivate the 
feature functionality.
+  #
+  #  Note that this differs from Pcd<FeatureName>FeatureEnable which 
determines whether the feature is included
+  #  as an advanced feature in the flash image. If enabled, the feature is 
then eligible to be activated/deactivated
+  #  via this PCD.
+  #
+  #  An enabled but deactivated feature will be dispatched but exit in its 
entry point without performing any
+  #  feature actions.
+  
gAcpiDebugFeaturePkgTokenSpaceGuid.PcdAcpiDebugFeatureActive|TRUE|BOOLEAN|0xD0000001
+
   ## This PCD specifies ACPI debug message buffer address.
   #  The PCD value will be updated during boot time when the buffer is 
allocated.
-  gAcpiDebugFeaturePkgTokenSpaceGuid.PcdAcpiDebugAddress|0|UINT32|0xD0000001
+  gAcpiDebugFeaturePkgTokenSpaceGuid.PcdAcpiDebugAddress|0|UINT32|0xD0000002
diff --git 
a/Features/Intel/Debugging/AcpiDebugFeaturePkg/AcpiDebugDxeSmm/AcpiDebugDxe.inf 
b/Features/Intel/Debugging/AcpiDebugFeaturePkg/AcpiDebugDxeSmm/AcpiDebugDxe.inf
index dfcee0a842..b293d83cd9 100644
--- 
a/Features/Intel/Debugging/AcpiDebugFeaturePkg/AcpiDebugDxeSmm/AcpiDebugDxe.inf
+++ 
b/Features/Intel/Debugging/AcpiDebugFeaturePkg/AcpiDebugDxeSmm/AcpiDebugDxe.inf
@@ -35,8 +35,9 @@
   Debugging/AcpiDebugFeaturePkg/AcpiDebugFeaturePkg.dec
 
 [Pcd]
-  gAcpiDebugFeaturePkgTokenSpaceGuid.PcdAcpiDebugBufferSize  ## CONSUMES
-  gAcpiDebugFeaturePkgTokenSpaceGuid.PcdAcpiDebugAddress     ## PRODUCES
+  gAcpiDebugFeaturePkgTokenSpaceGuid.PcdAcpiDebugFeatureActive  ## CONSUMES
+  gAcpiDebugFeaturePkgTokenSpaceGuid.PcdAcpiDebugBufferSize     ## CONSUMES
+  gAcpiDebugFeaturePkgTokenSpaceGuid.PcdAcpiDebugAddress        ## PRODUCES
 
 [Sources]
   AcpiDebug.c
diff --git 
a/Features/Intel/Debugging/AcpiDebugFeaturePkg/AcpiDebugDxeSmm/AcpiDebugSmm.inf 
b/Features/Intel/Debugging/AcpiDebugFeaturePkg/AcpiDebugDxeSmm/AcpiDebugSmm.inf
index 089bb57707..dbb33e4ae2 100644
--- 
a/Features/Intel/Debugging/AcpiDebugFeaturePkg/AcpiDebugDxeSmm/AcpiDebugSmm.inf
+++ 
b/Features/Intel/Debugging/AcpiDebugFeaturePkg/AcpiDebugDxeSmm/AcpiDebugSmm.inf
@@ -36,8 +36,9 @@
   Debugging/AcpiDebugFeaturePkg/AcpiDebugFeaturePkg.dec
 
 [Pcd]
-  gAcpiDebugFeaturePkgTokenSpaceGuid.PcdAcpiDebugBufferSize  ## CONSUMES
-  gAcpiDebugFeaturePkgTokenSpaceGuid.PcdAcpiDebugAddress     ## PRODUCES
+  gAcpiDebugFeaturePkgTokenSpaceGuid.PcdAcpiDebugFeatureActive  ## CONSUMES
+  gAcpiDebugFeaturePkgTokenSpaceGuid.PcdAcpiDebugBufferSize     ## CONSUMES
+  gAcpiDebugFeaturePkgTokenSpaceGuid.PcdAcpiDebugAddress        ## PRODUCES
 
 [Sources]
   AcpiDebug.c
diff --git 
a/Features/Intel/Debugging/AcpiDebugFeaturePkg/AcpiDebugDxeSmm/AcpiDebug.c 
b/Features/Intel/Debugging/AcpiDebugFeaturePkg/AcpiDebugDxeSmm/AcpiDebug.c
index 42428d8005..4caeffc7de 100644
--- a/Features/Intel/Debugging/AcpiDebugFeaturePkg/AcpiDebugDxeSmm/AcpiDebug.c
+++ b/Features/Intel/Debugging/AcpiDebugFeaturePkg/AcpiDebugDxeSmm/AcpiDebug.c
@@ -289,6 +289,10 @@ InitializeAcpiDebugDxe (
   EFI_STATUS            Status;
   EFI_EVENT             EndOfDxeEvent;
 
+  if (!PcdGetBool (PcdAcpiDebugFeatureActive)) {
+    return EFI_SUCCESS;
+  }
+
   //
   // Register EndOfDxe notification
   // that point could ensure the Acpi Debug related PCDs initialized.
diff --git a/Features/Intel/Debugging/AcpiDebugFeaturePkg/Readme.md 
b/Features/Intel/Debugging/AcpiDebugFeaturePkg/Readme.md
index bc0dce9348..bbd7675c11 100644
--- a/Features/Intel/Debugging/AcpiDebugFeaturePkg/Readme.md
+++ b/Features/Intel/Debugging/AcpiDebugFeaturePkg/Readme.md
@@ -78,6 +78,7 @@ instance assigned to `AcpiDebugSmm`.
 
 ## Configuration
 * PcdAcpiDebugEnable - Enables this feature.
+* PcdAcpiDebugFeatureActive - Activates this feature.
 * PcdAcpiDebugAddress - The address of the ACPI debug message buffer.
 * PcdAcpiDebugBufferSize - The size of the ACPI debug message buffer.
 
-- 
2.16.2.windows.1


-=-=-=-=-=-=-=-=-=-=-=-
Groups.io Links: You receive all messages sent to this group.

View/Reply Online (#52401): https://edk2.groups.io/g/devel/message/52401
Mute This Topic: https://groups.io/mt/68826627/21656
Group Owner: devel+ow...@edk2.groups.io
Unsubscribe: https://edk2.groups.io/g/devel/unsub  [arch...@mail-archive.com]
-=-=-=-=-=-=-=-=-=-=-=-

Reply via email to