Shell application to dump SMI handler profile information.\r
\r
Copyright (c) 2017, Intel Corporation. All rights reserved.<BR>\r
-This program and the accompanying materials\r
-are licensed and made available under the terms and conditions of the BSD License\r
-which accompanies this distribution. The full text of the license may be found at\r
-http://opensource.org/licenses/bsd-license.php\r
-\r
-THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
-WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
+SPDX-License-Identifier: BSD-2-Clause-Patent\r
\r
**/\r
\r
#include <Library/PrintLib.h>\r
#include <Library/UefiLib.h>\r
#include <Library/DevicePathLib.h>\r
-#include <Library/PeCoffGetEntryPointLib.h>\r
#include <Library/DxeServicesLib.h>\r
#include <Protocol/SmmCommunication.h>\r
#include <Guid/PiSmmCommunicationRegionTable.h>\r
#include <Guid/SmiHandlerProfile.h>\r
\r
#define PROFILE_NAME_STRING_LENGTH 64\r
-CHAR8 mNameString[PROFILE_NAME_STRING_LENGTH + 1];\r
+CHAR8 mNameString[PROFILE_NAME_STRING_LENGTH + 1];\r
\r
VOID *mSmiHandlerProfileDatabase;\r
UINTN mSmiHandlerProfileDatabaseSize;\r
)\r
{\r
UINTN Index;\r
+\r
for (Index = 0; Index < Size; Index++) {\r
Print (L"%02x", (UINTN)Data[Index]);\r
if ((Index + 1) != Size) {\r
Get SMI handler profile database.\r
**/\r
VOID\r
-GetSmiHandlerProfileDatabase(\r
+GetSmiHandlerProfileDatabase (\r
VOID\r
)\r
{\r
- EFI_STATUS Status;\r
- UINTN CommSize;\r
- UINT8 *CommBuffer;\r
- EFI_SMM_COMMUNICATE_HEADER *CommHeader;\r
- SMI_HANDLER_PROFILE_PARAMETER_GET_INFO *CommGetInfo;\r
- SMI_HANDLER_PROFILE_PARAMETER_GET_DATA_BY_OFFSET *CommGetData;\r
- EFI_SMM_COMMUNICATION_PROTOCOL *SmmCommunication;\r
- UINTN MinimalSizeNeeded;\r
- EDKII_PI_SMM_COMMUNICATION_REGION_TABLE *PiSmmCommunicationRegionTable;\r
- UINT32 Index;\r
- EFI_MEMORY_DESCRIPTOR *Entry;\r
- VOID *Buffer;\r
- UINTN Size;\r
- UINTN Offset;\r
-\r
- Status = gBS->LocateProtocol(&gEfiSmmCommunicationProtocolGuid, NULL, (VOID **)&SmmCommunication);\r
- if (EFI_ERROR(Status)) {\r
- Print(L"SmiHandlerProfile: Locate SmmCommunication protocol - %r\n", Status);\r
- return ;\r
+ EFI_STATUS Status;\r
+ UINTN CommSize;\r
+ UINT8 *CommBuffer;\r
+ EFI_SMM_COMMUNICATE_HEADER *CommHeader;\r
+ SMI_HANDLER_PROFILE_PARAMETER_GET_INFO *CommGetInfo;\r
+ SMI_HANDLER_PROFILE_PARAMETER_GET_DATA_BY_OFFSET *CommGetData;\r
+ EFI_SMM_COMMUNICATION_PROTOCOL *SmmCommunication;\r
+ UINTN MinimalSizeNeeded;\r
+ EDKII_PI_SMM_COMMUNICATION_REGION_TABLE *PiSmmCommunicationRegionTable;\r
+ UINT32 Index;\r
+ EFI_MEMORY_DESCRIPTOR *Entry;\r
+ VOID *Buffer;\r
+ UINTN Size;\r
+ UINTN Offset;\r
+\r
+ Status = gBS->LocateProtocol (&gEfiSmmCommunicationProtocolGuid, NULL, (VOID **)&SmmCommunication);\r
+ if (EFI_ERROR (Status)) {\r
+ Print (L"SmiHandlerProfile: Locate SmmCommunication protocol - %r\n", Status);\r
+ return;\r
}\r
\r
MinimalSizeNeeded = EFI_PAGE_SIZE;\r
\r
- Status = EfiGetSystemConfigurationTable(\r
+ Status = EfiGetSystemConfigurationTable (\r
&gEdkiiPiSmmCommunicationRegionTableGuid,\r
(VOID **)&PiSmmCommunicationRegionTable\r
);\r
- if (EFI_ERROR(Status)) {\r
- Print(L"SmiHandlerProfile: Get PiSmmCommunicationRegionTable - %r\n", Status);\r
- return ;\r
+ if (EFI_ERROR (Status)) {\r
+ Print (L"SmiHandlerProfile: Get PiSmmCommunicationRegionTable - %r\n", Status);\r
+ return;\r
}\r
- ASSERT(PiSmmCommunicationRegionTable != NULL);\r
+\r
+ ASSERT (PiSmmCommunicationRegionTable != NULL);\r
Entry = (EFI_MEMORY_DESCRIPTOR *)(PiSmmCommunicationRegionTable + 1);\r
- Size = 0;\r
+ Size = 0;\r
for (Index = 0; Index < PiSmmCommunicationRegionTable->NumberOfEntries; Index++) {\r
if (Entry->Type == EfiConventionalMemory) {\r
- Size = EFI_PAGES_TO_SIZE((UINTN)Entry->NumberOfPages);\r
+ Size = EFI_PAGES_TO_SIZE ((UINTN)Entry->NumberOfPages);\r
if (Size >= MinimalSizeNeeded) {\r
break;\r
}\r
}\r
+\r
Entry = (EFI_MEMORY_DESCRIPTOR *)((UINT8 *)Entry + PiSmmCommunicationRegionTable->DescriptorSize);\r
}\r
- ASSERT(Index < PiSmmCommunicationRegionTable->NumberOfEntries);\r
+\r
+ ASSERT (Index < PiSmmCommunicationRegionTable->NumberOfEntries);\r
CommBuffer = (UINT8 *)(UINTN)Entry->PhysicalStart;\r
\r
//\r
// Get Size\r
//\r
CommHeader = (EFI_SMM_COMMUNICATE_HEADER *)&CommBuffer[0];\r
- CopyMem(&CommHeader->HeaderGuid, &gSmiHandlerProfileGuid, sizeof(gSmiHandlerProfileGuid));\r
- CommHeader->MessageLength = sizeof(SMI_HANDLER_PROFILE_PARAMETER_GET_INFO);\r
+ CopyMem (&CommHeader->HeaderGuid, &gSmiHandlerProfileGuid, sizeof (gSmiHandlerProfileGuid));\r
+ CommHeader->MessageLength = sizeof (SMI_HANDLER_PROFILE_PARAMETER_GET_INFO);\r
\r
- CommGetInfo = (SMI_HANDLER_PROFILE_PARAMETER_GET_INFO *)&CommBuffer[OFFSET_OF(EFI_SMM_COMMUNICATE_HEADER, Data)];\r
- CommGetInfo->Header.Command = SMI_HANDLER_PROFILE_COMMAND_GET_INFO;\r
- CommGetInfo->Header.DataLength = sizeof(*CommGetInfo);\r
+ CommGetInfo = (SMI_HANDLER_PROFILE_PARAMETER_GET_INFO *)&CommBuffer[OFFSET_OF (EFI_SMM_COMMUNICATE_HEADER, Data)];\r
+ CommGetInfo->Header.Command = SMI_HANDLER_PROFILE_COMMAND_GET_INFO;\r
+ CommGetInfo->Header.DataLength = sizeof (*CommGetInfo);\r
CommGetInfo->Header.ReturnStatus = (UINT64)-1;\r
- CommGetInfo->DataSize = 0;\r
+ CommGetInfo->DataSize = 0;\r
\r
- CommSize = sizeof(EFI_GUID) + sizeof(UINTN) + CommHeader->MessageLength;\r
- Status = SmmCommunication->Communicate(SmmCommunication, CommBuffer, &CommSize);\r
- if (EFI_ERROR(Status)) {\r
- Print(L"SmiHandlerProfile: SmmCommunication - %r\n", Status);\r
- return ;\r
+ CommSize = sizeof (EFI_GUID) + sizeof (UINTN) + CommHeader->MessageLength;\r
+ Status = SmmCommunication->Communicate (SmmCommunication, CommBuffer, &CommSize);\r
+ if (EFI_ERROR (Status)) {\r
+ Print (L"SmiHandlerProfile: SmmCommunication - %r\n", Status);\r
+ return;\r
}\r
\r
if (CommGetInfo->Header.ReturnStatus != 0) {\r
- Print(L"SmiHandlerProfile: GetInfo - 0x%0x\n", CommGetInfo->Header.ReturnStatus);\r
- return ;\r
+ Print (L"SmiHandlerProfile: GetInfo - 0x%0x\n", CommGetInfo->Header.ReturnStatus);\r
+ return;\r
}\r
\r
mSmiHandlerProfileDatabaseSize = (UINTN)CommGetInfo->DataSize;\r
//\r
// Get Data\r
//\r
- mSmiHandlerProfileDatabase = AllocateZeroPool(mSmiHandlerProfileDatabaseSize);\r
+ mSmiHandlerProfileDatabase = AllocateZeroPool (mSmiHandlerProfileDatabaseSize);\r
if (mSmiHandlerProfileDatabase == NULL) {\r
Status = EFI_OUT_OF_RESOURCES;\r
- Print(L"SmiHandlerProfile: AllocateZeroPool (0x%x) for dump buffer - %r\n", mSmiHandlerProfileDatabaseSize, Status);\r
- return ;\r
+ Print (L"SmiHandlerProfile: AllocateZeroPool (0x%x) for dump buffer - %r\n", mSmiHandlerProfileDatabaseSize, Status);\r
+ return;\r
}\r
\r
CommHeader = (EFI_SMM_COMMUNICATE_HEADER *)&CommBuffer[0];\r
- CopyMem(&CommHeader->HeaderGuid, &gSmiHandlerProfileGuid, sizeof(gSmiHandlerProfileGuid));\r
- CommHeader->MessageLength = sizeof(SMI_HANDLER_PROFILE_PARAMETER_GET_DATA_BY_OFFSET);\r
+ CopyMem (&CommHeader->HeaderGuid, &gSmiHandlerProfileGuid, sizeof (gSmiHandlerProfileGuid));\r
+ CommHeader->MessageLength = sizeof (SMI_HANDLER_PROFILE_PARAMETER_GET_DATA_BY_OFFSET);\r
\r
- CommGetData = (SMI_HANDLER_PROFILE_PARAMETER_GET_DATA_BY_OFFSET *)&CommBuffer[OFFSET_OF(EFI_SMM_COMMUNICATE_HEADER, Data)];\r
- CommGetData->Header.Command = SMI_HANDLER_PROFILE_COMMAND_GET_DATA_BY_OFFSET;\r
- CommGetData->Header.DataLength = sizeof(*CommGetData);\r
+ CommGetData = (SMI_HANDLER_PROFILE_PARAMETER_GET_DATA_BY_OFFSET *)&CommBuffer[OFFSET_OF (EFI_SMM_COMMUNICATE_HEADER, Data)];\r
+ CommGetData->Header.Command = SMI_HANDLER_PROFILE_COMMAND_GET_DATA_BY_OFFSET;\r
+ CommGetData->Header.DataLength = sizeof (*CommGetData);\r
CommGetData->Header.ReturnStatus = (UINT64)-1;\r
\r
- CommSize = sizeof(EFI_GUID) + sizeof(UINTN) + CommHeader->MessageLength;\r
- Buffer = (UINT8 *)CommHeader + CommSize;\r
- Size -= CommSize;\r
+ CommSize = sizeof (EFI_GUID) + sizeof (UINTN) + CommHeader->MessageLength;\r
+ Buffer = (UINT8 *)CommHeader + CommSize;\r
+ Size -= CommSize;\r
\r
CommGetData->DataBuffer = (PHYSICAL_ADDRESS)(UINTN)Buffer;\r
CommGetData->DataOffset = 0;\r
} else {\r
CommGetData->DataSize = (UINT64)(mSmiHandlerProfileDatabaseSize - CommGetData->DataOffset);\r
}\r
- Status = SmmCommunication->Communicate(SmmCommunication, CommBuffer, &CommSize);\r
- ASSERT_EFI_ERROR(Status);\r
+\r
+ Status = SmmCommunication->Communicate (SmmCommunication, CommBuffer, &CommSize);\r
+ ASSERT_EFI_ERROR (Status);\r
\r
if (CommGetData->Header.ReturnStatus != 0) {\r
- FreePool(mSmiHandlerProfileDatabase);\r
+ FreePool (mSmiHandlerProfileDatabase);\r
mSmiHandlerProfileDatabase = NULL;\r
- Print(L"SmiHandlerProfile: GetData - 0x%x\n", CommGetData->Header.ReturnStatus);\r
- return ;\r
+ Print (L"SmiHandlerProfile: GetData - 0x%x\n", CommGetData->Header.ReturnStatus);\r
+ return;\r
}\r
- CopyMem((UINT8 *)mSmiHandlerProfileDatabase + Offset, (VOID *)(UINTN)CommGetData->DataBuffer, (UINTN)CommGetData->DataSize);\r
+\r
+ CopyMem ((UINT8 *)mSmiHandlerProfileDatabase + Offset, (VOID *)(UINTN)CommGetData->DataBuffer, (UINTN)CommGetData->DataSize);\r
}\r
\r
DEBUG ((DEBUG_INFO, "SmiHandlerProfileSize - 0x%x\n", mSmiHandlerProfileDatabaseSize));\r
\r
- return ;\r
+ return;\r
}\r
\r
/**\r
**/\r
VOID\r
GetShortPdbFileName (\r
- IN CHAR8 *PdbFileName,\r
- OUT CHAR8 *AsciiBuffer\r
+ IN CHAR8 *PdbFileName,\r
+ OUT CHAR8 *AsciiBuffer\r
)\r
{\r
- UINTN IndexPdb; // Current work location within a Pdb string.\r
- UINTN IndexBuffer; // Current work location within a Buffer string.\r
- UINTN StartIndex;\r
- UINTN EndIndex;\r
+ UINTN IndexPdb; // Current work location within a Pdb string.\r
+ UINTN IndexBuffer; // Current work location within a Buffer string.\r
+ UINTN StartIndex;\r
+ UINTN EndIndex;\r
\r
ZeroMem (AsciiBuffer, PROFILE_NAME_STRING_LENGTH + 1);\r
\r
AsciiStrnCpyS (AsciiBuffer, PROFILE_NAME_STRING_LENGTH + 1, " ", 1);\r
} else {\r
StartIndex = 0;\r
- for (EndIndex = 0; PdbFileName[EndIndex] != 0; EndIndex++);\r
+ for (EndIndex = 0; PdbFileName[EndIndex] != 0; EndIndex++) {\r
+ }\r
+\r
for (IndexPdb = 0; PdbFileName[IndexPdb] != 0; IndexPdb++) {\r
if ((PdbFileName[IndexPdb] == '\\') || (PdbFileName[IndexPdb] == '/')) {\r
StartIndex = IndexPdb + 1;\r
IN SMM_CORE_IMAGE_DATABASE_STRUCTURE *ImageStruct\r
)\r
{\r
- EFI_STATUS Status;\r
- CHAR16 *NameString;\r
- UINTN StringSize;\r
+ EFI_STATUS Status;\r
+ CHAR16 *NameString;\r
+ UINTN StringSize;\r
\r
if (ImageStruct == NULL) {\r
return "???";\r
//\r
// Method 1: Get the name string from image PDB\r
//\r
- if (ImageStruct->Header.Length > sizeof (SMM_CORE_IMAGE_DATABASE_STRUCTURE)) {\r
- GetShortPdbFileName ((CHAR8 *) (ImageStruct + 1), mNameString);\r
+ if (ImageStruct->PdbStringOffset != 0) {\r
+ GetShortPdbFileName ((CHAR8 *)((UINTN)ImageStruct + ImageStruct->PdbStringOffset), mNameString);\r
return mNameString;\r
}\r
\r
//\r
NameString = NULL;\r
StringSize = 0;\r
- Status = GetSectionFromAnyFv (\r
- &ImageStruct->FileGuid,\r
- EFI_SECTION_USER_INTERFACE,\r
- 0,\r
- (VOID **) &NameString,\r
- &StringSize\r
- );\r
+ Status = GetSectionFromAnyFv (\r
+ &ImageStruct->FileGuid,\r
+ EFI_SECTION_USER_INTERFACE,\r
+ 0,\r
+ (VOID **)&NameString,\r
+ &StringSize\r
+ );\r
if (!EFI_ERROR (Status)) {\r
//\r
// Method 2: Get the name string from FFS UI section\r
if (StrLen (NameString) > PROFILE_NAME_STRING_LENGTH) {\r
NameString[PROFILE_NAME_STRING_LENGTH] = 0;\r
}\r
+\r
UnicodeStrToAsciiStrS (NameString, mNameString, sizeof (mNameString));\r
FreePool (NameString);\r
return mNameString;\r
**/\r
SMM_CORE_IMAGE_DATABASE_STRUCTURE *\r
GetImageFromRef (\r
- IN UINTN ImageRef\r
+ IN UINTN ImageRef\r
)\r
{\r
SMM_CORE_IMAGE_DATABASE_STRUCTURE *ImageStruct;\r
return ImageStruct;\r
}\r
}\r
+\r
ImageStruct = (VOID *)((UINTN)ImageStruct + ImageStruct->Header.Length);\r
}\r
\r
Dump SMM loaded image information.\r
**/\r
VOID\r
-DumpSmmLoadedImage(\r
+DumpSmmLoadedImage (\r
VOID\r
)\r
{\r
while ((UINTN)ImageStruct < (UINTN)mSmiHandlerProfileDatabase + mSmiHandlerProfileDatabaseSize) {\r
if (ImageStruct->Header.Signature == SMM_CORE_IMAGE_DATABASE_SIGNATURE) {\r
NameString = GetDriverNameString (ImageStruct);\r
- Print(L" <Image Name=\"%a\"", NameString);\r
- Print(L" Base=\"0x%x\" Size=\"0x%x\"", ImageStruct->ImageBase, ImageStruct->ImageSize);\r
+ Print (L" <Image Name=\"%a\"", NameString);\r
+ Print (L" Base=\"0x%lx\" Size=\"0x%lx\"", ImageStruct->ImageBase, ImageStruct->ImageSize);\r
if (ImageStruct->EntryPoint != 0) {\r
- Print(L" EntryPoint=\"0x%x\"", ImageStruct->EntryPoint);\r
+ Print (L" EntryPoint=\"0x%lx\"", ImageStruct->EntryPoint);\r
+ }\r
+\r
+ Print (L" FvFile=\"%g\"", &ImageStruct->FileGuid);\r
+ Print (L" RefId=\"0x%x\"", ImageStruct->ImageRef);\r
+ Print (L">\n");\r
+ if (ImageStruct->PdbStringOffset != 0) {\r
+ PdbString = (CHAR8 *)((UINTN)ImageStruct + ImageStruct->PdbStringOffset);\r
+ Print (L" <Pdb>%a</Pdb>\n", PdbString);\r
}\r
- Print(L" FvFile=\"%g\"", &ImageStruct->FileGuid);\r
- Print(L" RefId=\"0x%x\"", ImageStruct->ImageRef);\r
- Print(L">\n");\r
- PdbString = (CHAR8 *)((UINTN)ImageStruct + ImageStruct->PdbStringOffset);\r
- Print(L" <Pdb>%a</Pdb>\n", PdbString);\r
- Print(L" </Image>\n");\r
+\r
+ Print (L" </Image>\n");\r
}\r
\r
ImageStruct = (VOID *)((UINTN)ImageStruct + ImageStruct->Header.Length);\r
return;\r
}\r
\r
-CHAR8 *mSxTypeString[] = {\r
+CHAR8 *mSxTypeString[] = {\r
"SxS0",\r
"SxS1",\r
"SxS2",\r
IN EFI_SLEEP_TYPE Type\r
)\r
{\r
- if (Type >= 0 && Type <= ARRAY_SIZE(mSxTypeString)) {\r
+ if ((Type >= 0) && (Type < ARRAY_SIZE (mSxTypeString))) {\r
return mSxTypeString[Type];\r
} else {\r
- AsciiSPrint (mNameString, sizeof(mNameString), "0x%x", Type);\r
+ AsciiSPrint (mNameString, sizeof (mNameString), "0x%x", Type);\r
return mNameString;\r
}\r
}\r
\r
-CHAR8 *mSxPhaseString[] = {\r
+CHAR8 *mSxPhaseString[] = {\r
"SxEntry",\r
"SxExit",\r
};\r
**/\r
CHAR8 *\r
SxPhaseToString (\r
- IN EFI_SLEEP_PHASE Phase\r
+ IN EFI_SLEEP_PHASE Phase\r
)\r
{\r
- if (Phase >= 0 && Phase <= ARRAY_SIZE(mSxPhaseString)) {\r
+ if ((Phase >= 0) && (Phase < ARRAY_SIZE (mSxPhaseString))) {\r
return mSxPhaseString[Phase];\r
} else {\r
- AsciiSPrint (mNameString, sizeof(mNameString), "0x%x", Phase);\r
+ AsciiSPrint (mNameString, sizeof (mNameString), "0x%x", Phase);\r
return mNameString;\r
}\r
}\r
\r
-CHAR8 *mPowerButtonPhaseString[] = {\r
+CHAR8 *mPowerButtonPhaseString[] = {\r
"PowerButtonEntry",\r
"PowerButtonExit",\r
};\r
IN EFI_POWER_BUTTON_PHASE Phase\r
)\r
{\r
- if (Phase >= 0 && Phase <= ARRAY_SIZE(mPowerButtonPhaseString)) {\r
+ if ((Phase >= 0) && (Phase < ARRAY_SIZE (mPowerButtonPhaseString))) {\r
return mPowerButtonPhaseString[Phase];\r
} else {\r
- AsciiSPrint (mNameString, sizeof(mNameString), "0x%x", Phase);\r
+ AsciiSPrint (mNameString, sizeof (mNameString), "0x%x", Phase);\r
return mNameString;\r
}\r
}\r
\r
-CHAR8 *mStandbyButtonPhaseString[] = {\r
+CHAR8 *mStandbyButtonPhaseString[] = {\r
"StandbyButtonEntry",\r
"StandbyButtonExit",\r
};\r
IN EFI_STANDBY_BUTTON_PHASE Phase\r
)\r
{\r
- if (Phase >= 0 && Phase <= ARRAY_SIZE(mStandbyButtonPhaseString)) {\r
+ if ((Phase >= 0) && (Phase < ARRAY_SIZE (mStandbyButtonPhaseString))) {\r
return mStandbyButtonPhaseString[Phase];\r
} else {\r
- AsciiSPrint (mNameString, sizeof(mNameString), "0x%x", Phase);\r
+ AsciiSPrint (mNameString, sizeof (mNameString), "0x%x", Phase);\r
return mNameString;\r
}\r
}\r
\r
-CHAR8 *mIoTrapTypeString[] = {\r
+CHAR8 *mIoTrapTypeString[] = {\r
"WriteTrap",\r
"ReadTrap",\r
"ReadWriteTrap",\r
IN EFI_SMM_IO_TRAP_DISPATCH_TYPE Type\r
)\r
{\r
- if (Type >= 0 && Type <= ARRAY_SIZE(mIoTrapTypeString)) {\r
+ if ((Type >= 0) && (Type < ARRAY_SIZE (mIoTrapTypeString))) {\r
return mIoTrapTypeString[Type];\r
} else {\r
- AsciiSPrint (mNameString, sizeof(mNameString), "0x%x", Type);\r
+ AsciiSPrint (mNameString, sizeof (mNameString), "0x%x", Type);\r
return mNameString;\r
}\r
}\r
\r
-CHAR8 *mUsbTypeString[] = {\r
+CHAR8 *mUsbTypeString[] = {\r
"UsbLegacy",\r
"UsbWake",\r
};\r
**/\r
CHAR8 *\r
UsbTypeToString (\r
- IN EFI_USB_SMI_TYPE Type\r
+ IN EFI_USB_SMI_TYPE Type\r
)\r
{\r
- if (Type >= 0 && Type <= ARRAY_SIZE(mUsbTypeString)) {\r
+ if ((Type >= 0) && (Type < ARRAY_SIZE (mUsbTypeString))) {\r
return mUsbTypeString[Type];\r
} else {\r
- AsciiSPrint (mNameString, sizeof(mNameString), "0x%x", Type);\r
+ AsciiSPrint (mNameString, sizeof (mNameString), "0x%x", Type);\r
return mNameString;\r
}\r
}\r
**/\r
VOID\r
DumpSmiChildContext (\r
- IN EFI_GUID *HandlerType,\r
- IN VOID *Context,\r
- IN UINTN ContextSize\r
+ IN EFI_GUID *HandlerType,\r
+ IN VOID *Context,\r
+ IN UINTN ContextSize\r
)\r
{\r
- CHAR16 *Str;\r
+ CHAR16 *Str;\r
\r
if (CompareGuid (HandlerType, &gEfiSmmSwDispatch2ProtocolGuid)) {\r
- Print(L" SwSmi=\"0x%x\"", ((EFI_SMM_SW_REGISTER_CONTEXT *)Context)->SwSmiInputValue);\r
+ Print (L" SwSmi=\"0x%lx\"", ((SMI_HANDLER_PROFILE_SW_REGISTER_CONTEXT *)Context)->SwSmiInputValue);\r
} else if (CompareGuid (HandlerType, &gEfiSmmSxDispatch2ProtocolGuid)) {\r
- Print(L" SxType=\"%a\"", SxTypeToString(((EFI_SMM_SX_REGISTER_CONTEXT *)Context)->Type));\r
- Print(L" SxPhase=\"%a\"", SxPhaseToString(((EFI_SMM_SX_REGISTER_CONTEXT *)Context)->Phase));\r
+ Print (L" SxType=\"%a\"", SxTypeToString (((EFI_SMM_SX_REGISTER_CONTEXT *)Context)->Type));\r
+ Print (L" SxPhase=\"%a\"", SxPhaseToString (((EFI_SMM_SX_REGISTER_CONTEXT *)Context)->Phase));\r
} else if (CompareGuid (HandlerType, &gEfiSmmPowerButtonDispatch2ProtocolGuid)) {\r
- Print(L" PowerButtonPhase=\"%a\"", PowerButtonPhaseToString(((EFI_SMM_POWER_BUTTON_REGISTER_CONTEXT *)Context)->Phase));\r
+ Print (L" PowerButtonPhase=\"%a\"", PowerButtonPhaseToString (((EFI_SMM_POWER_BUTTON_REGISTER_CONTEXT *)Context)->Phase));\r
} else if (CompareGuid (HandlerType, &gEfiSmmStandbyButtonDispatch2ProtocolGuid)) {\r
- Print(L" StandbyButtonPhase=\"%a\"", StandbyButtonPhaseToString(((EFI_SMM_STANDBY_BUTTON_REGISTER_CONTEXT *)Context)->Phase));\r
+ Print (L" StandbyButtonPhase=\"%a\"", StandbyButtonPhaseToString (((EFI_SMM_STANDBY_BUTTON_REGISTER_CONTEXT *)Context)->Phase));\r
} else if (CompareGuid (HandlerType, &gEfiSmmPeriodicTimerDispatch2ProtocolGuid)) {\r
- Print(L" PeriodicTimerPeriod=\"%ld\"", ((EFI_SMM_PERIODIC_TIMER_REGISTER_CONTEXT *)Context)->Period);\r
- Print(L" PeriodicTimerSmiTickInterval=\"%ld\"", ((EFI_SMM_PERIODIC_TIMER_REGISTER_CONTEXT *)Context)->SmiTickInterval);\r
+ Print (L" PeriodicTimerPeriod=\"%ld\"", ((EFI_SMM_PERIODIC_TIMER_REGISTER_CONTEXT *)Context)->Period);\r
+ Print (L" PeriodicTimerSmiTickInterval=\"%ld\"", ((EFI_SMM_PERIODIC_TIMER_REGISTER_CONTEXT *)Context)->SmiTickInterval);\r
} else if (CompareGuid (HandlerType, &gEfiSmmGpiDispatch2ProtocolGuid)) {\r
- Print(L" GpiNum=\"0x%lx\"", ((EFI_SMM_GPI_REGISTER_CONTEXT *)Context)->GpiNum);\r
+ Print (L" GpiNum=\"0x%lx\"", ((EFI_SMM_GPI_REGISTER_CONTEXT *)Context)->GpiNum);\r
} else if (CompareGuid (HandlerType, &gEfiSmmIoTrapDispatch2ProtocolGuid)) {\r
- Print(L" IoTrapAddress=\"0x%x\"", ((EFI_SMM_IO_TRAP_REGISTER_CONTEXT *)Context)->Address);\r
- Print(L" IoTrapLength=\"0x%x\"", ((EFI_SMM_IO_TRAP_REGISTER_CONTEXT *)Context)->Length);\r
- Print(L" IoTrapType=\"%a\"", IoTrapTypeToString(((EFI_SMM_IO_TRAP_REGISTER_CONTEXT *)Context)->Type));\r
+ Print (L" IoTrapAddress=\"0x%x\"", ((EFI_SMM_IO_TRAP_REGISTER_CONTEXT *)Context)->Address);\r
+ Print (L" IoTrapLength=\"0x%x\"", ((EFI_SMM_IO_TRAP_REGISTER_CONTEXT *)Context)->Length);\r
+ Print (L" IoTrapType=\"%a\"", IoTrapTypeToString (((EFI_SMM_IO_TRAP_REGISTER_CONTEXT *)Context)->Type));\r
} else if (CompareGuid (HandlerType, &gEfiSmmUsbDispatch2ProtocolGuid)) {\r
- Print(L" UsbType=\"0x%x\"", UsbTypeToString(((SMI_HANDLER_PROFILE_USB_REGISTER_CONTEXT *)Context)->Type));\r
- Str = ConvertDevicePathToText((EFI_DEVICE_PATH_PROTOCOL *)(((SMI_HANDLER_PROFILE_USB_REGISTER_CONTEXT *)Context) + 1), TRUE, TRUE);\r
- Print(L" UsbDevicePath=\"%s\"", Str);\r
+ Print (L" UsbType=\"0x%x\"", UsbTypeToString (((SMI_HANDLER_PROFILE_USB_REGISTER_CONTEXT *)Context)->Type));\r
+ Str = ConvertDevicePathToText ((EFI_DEVICE_PATH_PROTOCOL *)(((SMI_HANDLER_PROFILE_USB_REGISTER_CONTEXT *)Context) + 1), TRUE, TRUE);\r
+ Print (L" UsbDevicePath=\"%s\"", Str);\r
if (Str != NULL) {\r
FreePool (Str);\r
}\r
} else {\r
- Print(L" Context=\"");\r
+ Print (L" Context=\"");\r
InternalDumpData (Context, ContextSize);\r
- Print(L"\"");\r
+ Print (L"\"");\r
}\r
}\r
\r
@param HandlerCategory SMI handler category\r
**/\r
VOID\r
-DumpSmiHandler(\r
- IN UINT32 HandlerCategory\r
+DumpSmiHandler (\r
+ IN UINT32 HandlerCategory\r
)\r
{\r
SMM_CORE_SMI_DATABASE_STRUCTURE *SmiStruct;\r
while ((UINTN)SmiStruct < (UINTN)mSmiHandlerProfileDatabase + mSmiHandlerProfileDatabaseSize) {\r
if ((SmiStruct->Header.Signature == SMM_CORE_SMI_DATABASE_SIGNATURE) && (SmiStruct->HandlerCategory == HandlerCategory)) {\r
SmiHandlerStruct = (VOID *)(SmiStruct + 1);\r
- Print(L" <SmiEntry");\r
+ Print (L" <SmiEntry");\r
if (!IsZeroGuid (&SmiStruct->HandlerType)) {\r
- Print(L" HandlerType=\"%g\"", &SmiStruct->HandlerType);\r
+ Print (L" HandlerType=\"%g\"", &SmiStruct->HandlerType);\r
}\r
- Print(L">\n");\r
+\r
+ Print (L">\n");\r
for (Index = 0; Index < SmiStruct->HandlerCount; Index++) {\r
- Print(L" <SmiHandler");\r
+ Print (L" <SmiHandler");\r
if (SmiHandlerStruct->ContextBufferSize != 0) {\r
DumpSmiChildContext (&SmiStruct->HandlerType, (UINT8 *)SmiHandlerStruct + SmiHandlerStruct->ContextBufferOffset, SmiHandlerStruct->ContextBufferSize);\r
}\r
- Print(L">\n");\r
- ImageStruct = GetImageFromRef((UINTN)SmiHandlerStruct->ImageRef);\r
- NameString = GetDriverNameString (ImageStruct);\r
- Print(L" <Module RefId=\"0x%x\" Name=\"%a\">\n", SmiHandlerStruct->ImageRef, NameString);\r
+\r
+ Print (L">\n");\r
+ ImageStruct = GetImageFromRef ((UINTN)SmiHandlerStruct->ImageRef);\r
+ NameString = GetDriverNameString (ImageStruct);\r
+ Print (L" <Module RefId=\"0x%x\" Name=\"%a\">\n", SmiHandlerStruct->ImageRef, NameString);\r
if ((ImageStruct != NULL) && (ImageStruct->PdbStringOffset != 0)) {\r
- Print(L" <Pdb>%a</Pdb>\n", (UINT8 *)ImageStruct + ImageStruct->PdbStringOffset);\r
+ Print (L" <Pdb>%a</Pdb>\n", (UINT8 *)ImageStruct + ImageStruct->PdbStringOffset);\r
}\r
- Print(L" </Module>\n");\r
- Print(L" <Handler Address=\"0x%x\">\n", SmiHandlerStruct->Handler);\r
+\r
+ Print (L" </Module>\n");\r
+ Print (L" <Handler Address=\"0x%lx\">\n", SmiHandlerStruct->Handler);\r
if (ImageStruct != NULL) {\r
- Print(L" <RVA>0x%x</RVA>\n", SmiHandlerStruct->Handler - ImageStruct->ImageBase);\r
+ Print (L" <RVA>0x%x</RVA>\n", (UINTN)(SmiHandlerStruct->Handler - ImageStruct->ImageBase));\r
}\r
- Print(L" </Handler>\n", SmiHandlerStruct->Handler);\r
- Print(L" <Caller Address=\"0x%x\">\n", SmiHandlerStruct->CallerAddr);\r
+\r
+ Print (L" </Handler>\n", SmiHandlerStruct->Handler);\r
+ Print (L" <Caller Address=\"0x%lx\">\n", SmiHandlerStruct->CallerAddr);\r
if (ImageStruct != NULL) {\r
- Print(L" <RVA>0x%x</RVA>\n", SmiHandlerStruct->CallerAddr - ImageStruct->ImageBase);\r
+ Print (L" <RVA>0x%x</RVA>\n", (UINTN)(SmiHandlerStruct->CallerAddr - ImageStruct->ImageBase));\r
}\r
- Print(L" </Caller>\n", SmiHandlerStruct->Handler);\r
+\r
+ Print (L" </Caller>\n", SmiHandlerStruct->Handler);\r
SmiHandlerStruct = (VOID *)((UINTN)SmiHandlerStruct + SmiHandlerStruct->Length);\r
- Print(L" </SmiHandler>\n");\r
+ Print (L" </SmiHandler>\n");\r
}\r
- Print(L" </SmiEntry>\n");\r
+\r
+ Print (L" </SmiEntry>\n");\r
}\r
+\r
SmiStruct = (VOID *)((UINTN)SmiStruct + SmiStruct->Header.Length);\r
}\r
\r
EFI_STATUS\r
EFIAPI\r
SmiHandlerProfileInfoEntrypoint (\r
- IN EFI_HANDLE ImageHandle,\r
- IN EFI_SYSTEM_TABLE *SystemTable\r
+ IN EFI_HANDLE ImageHandle,\r
+ IN EFI_SYSTEM_TABLE *SystemTable\r
)\r
{\r
- GetSmiHandlerProfileDatabase();\r
+ GetSmiHandlerProfileDatabase ();\r
\r
if (mSmiHandlerProfileDatabase == NULL) {\r
return EFI_SUCCESS;\r
//\r
// Dump all image\r
//\r
- Print(L"<?xml version=\"1.0\" encoding=\"utf-8\"?>\n");\r
- Print(L"<SmiHandlerProfile>\n");\r
- Print(L"<ImageDatabase>\n");\r
- Print(L" <!-- SMM image loaded -->\n");\r
- DumpSmmLoadedImage();\r
- Print(L"</ImageDatabase>\n\n");\r
+ Print (L"<?xml version=\"1.0\" encoding=\"utf-8\"?>\n");\r
+ Print (L"<SmiHandlerProfile>\n");\r
+ Print (L"<ImageDatabase>\n");\r
+ Print (L" <!-- SMM image loaded -->\n");\r
+ DumpSmmLoadedImage ();\r
+ Print (L"</ImageDatabase>\n\n");\r
\r
//\r
// Dump SMI Handler\r
//\r
- Print(L"<SmiHandlerDatabase>\n");\r
- Print(L" <!-- SMI Handler registered -->\n\n");\r
- Print(L" <SmiHandlerCategory Name=\"RootSmi\">\n");\r
- Print(L" <!-- The root SMI Handler registered by SmmCore -->\n");\r
- DumpSmiHandler(SmmCoreSmiHandlerCategoryRootHandler);\r
- Print(L" </SmiHandlerCategory>\n\n");\r
-\r
- Print(L" <SmiHandlerCategory Name=\"GuidSmi\">\n");\r
- Print(L" <!-- The GUID SMI Handler registered by SmmCore -->\n");\r
- DumpSmiHandler(SmmCoreSmiHandlerCategoryGuidHandler);\r
- Print(L" </SmiHandlerCategory>\n\n");\r
-\r
- Print(L" <SmiHandlerCategory Name=\"HardwareSmi\">\n");\r
- Print(L" <!-- The hardware SMI Handler registered by SmmChildDispatcher -->\n");\r
- DumpSmiHandler(SmmCoreSmiHandlerCategoryHardwareHandler);\r
- Print(L" </SmiHandlerCategory>\n\n");\r
-\r
- Print(L"</SmiHandlerDatabase>\n");\r
- Print(L"</SmiHandlerProfile>\n");\r
+ Print (L"<SmiHandlerDatabase>\n");\r
+ Print (L" <!-- SMI Handler registered -->\n\n");\r
+ Print (L" <SmiHandlerCategory Name=\"RootSmi\">\n");\r
+ Print (L" <!-- The root SMI Handler registered by SmmCore -->\n");\r
+ DumpSmiHandler (SmmCoreSmiHandlerCategoryRootHandler);\r
+ Print (L" </SmiHandlerCategory>\n\n");\r
+\r
+ Print (L" <SmiHandlerCategory Name=\"GuidSmi\">\n");\r
+ Print (L" <!-- The GUID SMI Handler registered by SmmCore -->\n");\r
+ DumpSmiHandler (SmmCoreSmiHandlerCategoryGuidHandler);\r
+ Print (L" </SmiHandlerCategory>\n\n");\r
+\r
+ Print (L" <SmiHandlerCategory Name=\"HardwareSmi\">\n");\r
+ Print (L" <!-- The hardware SMI Handler registered by SmmChildDispatcher -->\n");\r
+ DumpSmiHandler (SmmCoreSmiHandlerCategoryHardwareHandler);\r
+ Print (L" </SmiHandlerCategory>\n\n");\r
+\r
+ Print (L"</SmiHandlerDatabase>\n");\r
+ Print (L"</SmiHandlerProfile>\n");\r
\r
if (mSmiHandlerProfileDatabase != NULL) {\r
- FreePool(mSmiHandlerProfileDatabase);\r
+ FreePool (mSmiHandlerProfileDatabase);\r
}\r
\r
return EFI_SUCCESS;\r