UefiCpuPkg/DxeMpInitLib: Support source debugging on AP function

The current DxeDebugAgentLib supports source debugging on AP function. This
update is to update DxeMpInitLib to consume Debug Agent Library by
DEBUG_AGENT_INIT_DXE_AP flag. Thus, we could source debugging AP function
invoked by CPU MP Protocol.

However, current SecPeiDebugAgentLib does not support source debugging on AP
function invoked by CPU MP PPI. I have submitted one bugzilla to add this
support at https://bugzilla.tianocore.org/show_bug.cgi?id=308.

Cc: Feng Tian <feng.tian@intel.com>
Cc: Kinney Michael D <michael.d.kinney@intel.com>
Cc: Ruiyu Ni <ruiyu.ni@intel.com>
Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Jeff Fan <jeff.fan@intel.com>
Reviewed-by: Feng Tian <feng.tian@intel.com>
This commit is contained in:
Jeff Fan 2016-12-26 16:28:58 +08:00
parent 31d060d94e
commit 43c9fdcccd
5 changed files with 43 additions and 0 deletions

View File

@ -43,6 +43,7 @@
[Packages]
MdePkg/MdePkg.dec
MdeModulePkg/MdeModulePkg.dec
UefiCpuPkg/UefiCpuPkg.dec
[LibraryClasses]
@ -54,6 +55,7 @@
CpuLib
UefiCpuLib
UefiBootServicesTableLib
DebugAgentLib
[Guids]
gEfiEventExitBootServicesGuid ## CONSUMES ## Event

View File

@ -16,6 +16,7 @@
#include <Library/UefiLib.h>
#include <Library/UefiBootServicesTableLib.h>
#include <Library/DebugAgentLib.h>
#define AP_CHECK_INTERVAL (EFI_TIMER_PERIOD_MILLISECONDS (100))
#define AP_SAFE_STACK_SIZE 128
@ -29,6 +30,21 @@ VOID *mReservedApLoopFunc = NULL;
UINTN mReservedTopOfApStack;
volatile UINT32 mNumberToFinish = 0;
/**
Enable Debug Agent to support source debugging on AP function.
**/
VOID
EnableDebugAgent (
VOID
)
{
//
// Initialize Debug Agent to support source level debug in DXE phase
//
InitializeDebugAgent (DEBUG_AGENT_INIT_DXE_AP, NULL, NULL);
}
/**
Get the pointer to CPU MP Data structure.

View File

@ -539,6 +539,10 @@ ApWakeupFunction (
if (Procedure != NULL) {
SetApState (&CpuMpData->CpuData[ProcessorNumber], CpuStateBusy);
//
// Enable source debugging on AP function
//
EnableDebugAgent ();
//
// Invoke AP function here
//
Procedure (Parameter);

View File

@ -575,5 +575,14 @@ RestoreWakeupBuffer(
IN CPU_MP_DATA *CpuMpData
);
/**
Enable Debug Agent to support source debugging on AP function.
**/
VOID
EnableDebugAgent (
VOID
);
#endif

View File

@ -25,6 +25,18 @@ GLOBAL_REMOVE_IF_UNREFERENCED EFI_PEI_NOTIFY_DESCRIPTOR mMpInitLibNotifyList = {
CpuMpEndOfPeiCallback
};
/**
Enable Debug Agent to support source debugging on AP function.
**/
VOID
EnableDebugAgent (
VOID
)
{
}
/**
Get pointer to CPU MP Data structure.