Revision: 17457
http://sourceforge.net/p/edk2/code/17457
Author: vanjeff
Date: 2015-05-18 01:18:42 +0000 (Mon, 18 May 2015)
Log Message:
-----------
SourceLevelDebugPkg/DxeDebugAgent: Initialize Local APIC Timer early
Now Debug Agent library uses Local APIC Timer to implement time-out mechanism.
But it does not initialize Local APIC Timer before transfer data with HOST.
This fix is to move Local APIC Timer initialization to
SetupDebugAgentEnvironment().
This fix also updates function header and fixed one typo of
SetupDebugAgentEnvironment() name.
Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Jeff Fan <[email protected]>
Reviewed-by: Ruiyu Ni <[email protected]>
Modified Paths:
--------------
trunk/edk2/SourceLevelDebugPkg/Library/DebugAgent/DxeDebugAgent/DxeDebugAgentLib.c
Modified:
trunk/edk2/SourceLevelDebugPkg/Library/DebugAgent/DxeDebugAgent/DxeDebugAgentLib.c
===================================================================
---
trunk/edk2/SourceLevelDebugPkg/Library/DebugAgent/DxeDebugAgent/DxeDebugAgentLib.c
2015-05-15 08:48:13 UTC (rev 17456)
+++
trunk/edk2/SourceLevelDebugPkg/Library/DebugAgent/DxeDebugAgent/DxeDebugAgentLib.c
2015-05-18 01:18:42 UTC (rev 17457)
@@ -235,19 +235,24 @@
}
/**
- Worker function to setup IDT table and initialize the IDT entries.
+ Worker function to set up Debug Agent environment.
+ This function will set up IDT table and initialize the IDT entries and
+ initialize CPU LOCAL APIC timer.
+ It also tries to connect HOST if Debug Agent was not initialized before.
+
@param[in] Mailbox Pointer to Mailbox.
**/
VOID
-SetupDebugAgentEnviroment (
+SetupDebugAgentEnvironment (
IN DEBUG_AGENT_MAILBOX *Mailbox
)
{
IA32_DESCRIPTOR Idtr;
UINT16 IdtEntryCount;
UINT64 DebugPortHandle;
+ UINT32 DebugTimerFrequency;
if (mMultiProcessorDebugSupport) {
InitializeSpinLock (&mDebugMpContext.MpContextSpinLock);
@@ -299,6 +304,11 @@
}
//
+ // Initialize Debug Timer hardware and save its initial count and frequency
+ //
+ mDebugMpContext.DebugTimerInitCount = InitializeDebugTimer
(&DebugTimerFrequency);
+ UpdateMailboxContent (mMailboxPointer, DEBUG_MAILBOX_DEBUG_TIMER_FREQUENCY,
DebugTimerFrequency);
+ //
// Initialize debug communication port
//
DebugPortHandle = (UINT64) (UINTN)DebugPortInitialize ((VOID
*)(UINTN)mMailboxPointer->DebugPortHandle, NULL);
@@ -326,7 +336,7 @@
/**
Initialize debug agent.
- This function is used to set up debug enviroment for DXE phase.
+ This function is used to set up debug environment for DXE phase.
If this function is called by DXE Core, Context must be the pointer
to HOB list which will be used to get GUIDed HOB. It will enable
@@ -355,7 +365,6 @@
IA32_DESCRIPTOR IdtDescriptor;
IA32_DESCRIPTOR *Ia32Idtr;
IA32_IDT_ENTRY *Ia32IdtEntry;
- UINT32 DebugTimerFrequency;
if (InitFlag == DEBUG_AGENT_INIT_DXE_AP) {
//
@@ -410,15 +419,10 @@
Mailbox = GetMailboxFromHob (HobList);
}
//
- // Set up IDT table and prepare for IDT entries
+ // Set up Debug Agent Environment and try to connect HOST if required
//
- SetupDebugAgentEnviroment (Mailbox);
+ SetupDebugAgentEnvironment (Mailbox);
//
- // Initialize Debug Timer hardware and save its initial count and frequency
- //
- mDebugMpContext.DebugTimerInitCount = InitializeDebugTimer
(&DebugTimerFrequency);
- UpdateMailboxContent (mMailboxPointer,
DEBUG_MAILBOX_DEBUG_TIMER_FREQUENCY, DebugTimerFrequency);
- //
// For DEBUG_AGENT_INIT_S3, needn't to install configuration table and EFI
Serial IO protocol
// For DEBUG_AGENT_INIT_DXE_CORE, InternalConstructorWorker() will invoked
in Constructor()
//
@@ -503,15 +507,10 @@
HobList = Context;
Mailbox = GetMailboxFromHob (HobList);
//
- // Set up IDT table and prepare for IDT entries
+ // Set up Debug Agent Environment and try to connect HOST if required
//
- SetupDebugAgentEnviroment (Mailbox);
+ SetupDebugAgentEnvironment (Mailbox);
//
- // Initialize Debug Timer hardware and save its initial count and frequency
- //
- mDebugMpContext.DebugTimerInitCount = InitializeDebugTimer
(&DebugTimerFrequency);
- UpdateMailboxContent (mMailboxPointer,
DEBUG_MAILBOX_DEBUG_TIMER_FREQUENCY, DebugTimerFrequency);
- //
// Enable interrupt to receive Debug Timer interrupt
//
EnableInterrupts ();
@@ -533,9 +532,9 @@
//
mMailboxPointer = Mailbox;
//
- // Set up IDT table and prepare for IDT entries
+ // Set up Debug Agent Environment and try to connect HOST if required
//
- SetupDebugAgentEnviroment (Mailbox);
+ SetupDebugAgentEnvironment (Mailbox);
//
// Disable interrupt
//
------------------------------------------------------------------------------
One dashboard for servers and applications across Physical-Virtual-Cloud
Widest out-of-the-box monitoring support with 50+ applications
Performance metrics, stats and reports that give you Actionable Insights
Deep dive visibility with transaction tracing using APM Insight.
http://ad.doubleclick.net/ddm/clk/290420510;117567292;y
_______________________________________________
edk2-commits mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/edk2-commits