[edk2-devel] [PATCH 1/2] UefiCpuPkg CpuCommFeaturesLib: Disable TraceEn at the beginning

Zeng, Star star.zeng at intel.com
Sat Jun 1 08:03:40 UTC 2019


BZ: https://bugzilla.tianocore.org/show_bug.cgi?id=1809

Current code disables TraceEn at the end of ProcTraceInitialize(),
then there will be much memory allocated even when ProcTrace feature
is disabled.

This patch updates code to disable TraceEn and return at the beginning
of ProcTraceInitialize() when when ProcTrace feature is disabled.

Cc: Laszlo Ersek <lersek at redhat.com>
Cc: Eric Dong <eric.dong at intel.com>
Cc: Ruiyu Ni <ruiyu.ni at intel.com>
Cc: Chandana Kumar <chandana.c.kumar at intel.com>
Cc: Kevin Li <kevin.y.li at intel.com>
Signed-off-by: Star Zeng <star.zeng at intel.com>
---
 .../Library/CpuCommonFeaturesLib/ProcTrace.c  | 42 +++++++++----------
 1 file changed, 21 insertions(+), 21 deletions(-)

diff --git a/UefiCpuPkg/Library/CpuCommonFeaturesLib/ProcTrace.c b/UefiCpuPkg/Library/CpuCommonFeaturesLib/ProcTrace.c
index da6f6beb9477..b98eb116b7b6 100644
--- a/UefiCpuPkg/Library/CpuCommonFeaturesLib/ProcTrace.c
+++ b/UefiCpuPkg/Library/CpuCommonFeaturesLib/ProcTrace.c
@@ -199,22 +199,6 @@ ProcTraceInitialize (
   ProcTraceData = (PROC_TRACE_DATA *) ConfigData;
   ASSERT (ProcTraceData != NULL);
 
-  MemRegionBaseAddr = 0;
-  FirstIn = FALSE;
-
-  if (ProcTraceData->ThreadMemRegionTable == NULL) {
-    FirstIn = TRUE;
-    DEBUG ((DEBUG_INFO, "Initialize Processor Trace\n"));
-  }
-
-  ///
-  /// Refer to PROC_TRACE_MEM_SIZE Table for Size Encoding
-  ///
-  MemRegionSize = (UINT32) (1 << (ProcTraceData->ProcTraceMemSize + 12));
-  if (FirstIn) {
-    DEBUG ((DEBUG_INFO, "ProcTrace: MemSize requested: 0x%X \n", MemRegionSize));
-  }
-
   //
   // Clear MSR_IA32_RTIT_CTL[0] and IA32_RTIT_STS only if MSR_IA32_RTIT_CTL[0]==1b
   //
@@ -243,6 +227,26 @@ ProcTraceInitialize (
       );
   }
 
+  if (!State) {
+    return RETURN_SUCCESS;
+  }
+
+  MemRegionBaseAddr = 0;
+  FirstIn = FALSE;
+
+  if (ProcTraceData->ThreadMemRegionTable == NULL) {
+    FirstIn = TRUE;
+    DEBUG ((DEBUG_INFO, "Initialize Processor Trace\n"));
+  }
+
+  ///
+  /// Refer to PROC_TRACE_MEM_SIZE Table for Size Encoding
+  ///
+  MemRegionSize = (UINT32) (1 << (ProcTraceData->ProcTraceMemSize + 12));
+  if (FirstIn) {
+    DEBUG ((DEBUG_INFO, "ProcTrace: MemSize requested: 0x%X \n", MemRegionSize));
+  }
+
   if (FirstIn) {
     //
     //   Let BSP allocate and create the necessary memory region (Aligned to the size of
@@ -459,11 +463,7 @@ ProcTraceInitialize (
   CtrlReg.Bits.OS = 1;
   CtrlReg.Bits.User = 1;
   CtrlReg.Bits.BranchEn = 1;
-  if (!State) {
-    CtrlReg.Bits.TraceEn = 0;
-  } else {
-    CtrlReg.Bits.TraceEn = 1;
-  }
+  CtrlReg.Bits.TraceEn = 1;
   CPU_REGISTER_TABLE_WRITE64 (
     ProcessorNumber,
     Msr,
-- 
2.21.0.windows.1


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

View/Reply Online (#41769): https://edk2.groups.io/g/devel/message/41769
Mute This Topic: https://groups.io/mt/31888343/1813853
Group Owner: devel+owner at edk2.groups.io
Unsubscribe: https://edk2.groups.io/g/devel/unsub  [edk2-devel-archive at redhat.com]
-=-=-=-=-=-=-=-=-=-=-=-




More information about the edk2-devel-archive mailing list