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