]> git.proxmox.com Git - mirror_edk2.git/blobdiff - SourceLevelDebugPkg/Library/DebugAgent/DxeDebugAgent/DxeDebugAgentLib.c
SourceLevelDebugPkg/DxeDebugAgent: Initialize Local APIC Timer
[mirror_edk2.git] / SourceLevelDebugPkg / Library / DebugAgent / DxeDebugAgent / DxeDebugAgentLib.c
index 56a5e1a170700ebd395872a62d2e93d1ec301616..f7fbb3ccfaf49a64cb7da37ef2edea02e7bf3492 100644 (file)
@@ -365,8 +365,18 @@ InitializeDebugAgent (
   IA32_DESCRIPTOR              IdtDescriptor;\r
   IA32_DESCRIPTOR              *Ia32Idtr;\r
   IA32_IDT_ENTRY               *Ia32IdtEntry;\r
+  BOOLEAN                      PeriodicMode;\r
+  UINTN                        TimerCycle;\r
 \r
   if (InitFlag == DEBUG_AGENT_INIT_DXE_AP) {\r
+    //\r
+    // Check if CPU APIC Timer is working, otherwise initialize it.\r
+    //\r
+    GetApicTimerState (NULL, &PeriodicMode, NULL);\r
+    TimerCycle = GetApicTimerInitCount ();\r
+    if (!PeriodicMode || TimerCycle == 0) {\r
+      InitializeDebugTimer (NULL, FALSE);\r
+    }\r
     //\r
     // Invoked by AP, enable interrupt to let AP could receive IPI from other processors\r
     //\r