From: Pierre Gondois <[email protected]>

Make use of the newly added PcdDevelopmentPlatformRelaxations
to decide to try generating _CPC information.

Signed-off-by: Pierre Gondois <[email protected]>
---
 Platform/ARM/JunoPkg/ArmJuno.dsc                      |  5 +++++
 .../ConfigurationManagerDxe/ConfigurationManager.c    | 11 ++++++++++-
 .../ConfigurationManagerDxe.inf                       |  2 ++
 3 files changed, 17 insertions(+), 1 deletion(-)

diff --git a/Platform/ARM/JunoPkg/ArmJuno.dsc b/Platform/ARM/JunoPkg/ArmJuno.dsc
index 1ea0aba2655f..76f85e4c0c04 100644
--- a/Platform/ARM/JunoPkg/ArmJuno.dsc
+++ b/Platform/ARM/JunoPkg/ArmJuno.dsc
@@ -202,6 +202,11 @@ [PcdsFixedAtBuild.common]
   # ACPI Table Version
   #
   gEfiMdeModulePkgTokenSpaceGuid.PcdAcpiExposedTableVersions|0x20
+  #
+  # Allow some relaxation on some specific points for the platforms that 
desire it.
+  #   BIT0: Allow the absence of some registers in the _CPC object.
+  #
+  gEdkiiDynamicTablesPkgTokenSpaceGuid.PcdDevelopmentPlatformRelaxations|0x0
 
 [PcdsPatchableInModule]
   # Console Resolution (Full HD)
diff --git 
a/Platform/ARM/JunoPkg/ConfigurationManager/ConfigurationManagerDxe/ConfigurationManager.c
 
b/Platform/ARM/JunoPkg/ConfigurationManager/ConfigurationManagerDxe/ConfigurationManager.c
index d92a08749e87..875263f138ab 100644
--- 
a/Platform/ARM/JunoPkg/ConfigurationManager/ConfigurationManagerDxe/ConfigurationManager.c
+++ 
b/Platform/ARM/JunoPkg/ConfigurationManager/ConfigurationManagerDxe/ConfigurationManager.c
@@ -1089,9 +1089,18 @@ InitializePlatformRepository (
   DEBUG ((DEBUG_INFO, "Juno Rev = 0x%x\n", PlatformRepo->JunoRevision));
 
   ///
+  /// 1.
   /// _CPC was only tested on Juno R2, so only enable support for this version.
   ///
-  if ((ArmJunoPlatformRepositoryInfo.JunoRevision == JUNO_REVISION_R2)) {
+  /// 2.
+  /// Some _CPC registers cannot be populated for the Juno:
+  /// - PerformanceLimitedRegister
+  /// - ReferencePerformanceCounterRegister
+  /// - DeliveredPerformanceCounterRegister
+  /// Only build _CPC objects if relaxation regarding these registers
+  /// is allowed.
+  if ((ArmJunoPlatformRepositoryInfo.JunoRevision == JUNO_REVISION_R2) &&
+      (PcdGet64(PcdDevelopmentPlatformRelaxations) & BIT0)) {
     PopulateCpcObjects ();
   }
 
diff --git 
a/Platform/ARM/JunoPkg/ConfigurationManager/ConfigurationManagerDxe/ConfigurationManagerDxe.inf
 
b/Platform/ARM/JunoPkg/ConfigurationManager/ConfigurationManagerDxe/ConfigurationManagerDxe.inf
index 53060bf56531..dea475375688 100644
--- 
a/Platform/ARM/JunoPkg/ConfigurationManager/ConfigurationManagerDxe/ConfigurationManagerDxe.inf
+++ 
b/Platform/ARM/JunoPkg/ConfigurationManager/ConfigurationManagerDxe/ConfigurationManagerDxe.inf
@@ -77,6 +77,8 @@ [FixedPcd]
   gEfiMdeModulePkgTokenSpaceGuid.PcdSerialRegisterBase
   gEfiMdePkgTokenSpaceGuid.PcdUartDefaultBaudRate
 
+  gEdkiiDynamicTablesPkgTokenSpaceGuid.PcdDevelopmentPlatformRelaxations
+
 [Pcd]
 
 [Depex]
-- 
2.25.1



-=-=-=-=-=-=-=-=-=-=-=-
Groups.io Links: You receive all messages sent to this group.
View/Reply Online (#114426): https://edk2.groups.io/g/devel/message/114426
Mute This Topic: https://groups.io/mt/103955623/21656
Group Owner: [email protected]
Unsubscribe: https://edk2.groups.io/g/devel/unsub [[email protected]]
-=-=-=-=-=-=-=-=-=-=-=-


Reply via email to