VirtualBox

Ignore:
Timestamp:
Apr 14, 2023 3:17:44 PM (2 years ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
156854
Message:

Devices/EFI/FirmwareNew: Update to edk2-stable202302 and make it build, bugref:4643

Location:
trunk/src/VBox/Devices/EFI/FirmwareNew
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/Devices/EFI/FirmwareNew

  • trunk/src/VBox/Devices/EFI/FirmwareNew/MdeModulePkg/Application/SmiHandlerProfileInfo/SmiHandlerProfileInfo.c

    r85718 r99404  
    2424
    2525#define PROFILE_NAME_STRING_LENGTH  64
    26 CHAR8 mNameString[PROFILE_NAME_STRING_LENGTH + 1];
     26CHAR8  mNameString[PROFILE_NAME_STRING_LENGTH + 1];
    2727
    2828VOID   *mSmiHandlerProfileDatabase;
     
    4242{
    4343  UINTN  Index;
     44
    4445  for (Index = 0; Index < Size; Index++) {
    4546    Print (L"%02x", (UINTN)Data[Index]);
     
    5455**/
    5556VOID
    56 GetSmiHandlerProfileDatabase(
     57GetSmiHandlerProfileDatabase (
    5758  VOID
    5859  )
    5960{
    60   EFI_STATUS                                          Status;
    61   UINTN                                               CommSize;
    62   UINT8                                               *CommBuffer;
    63   EFI_SMM_COMMUNICATE_HEADER                          *CommHeader;
    64   SMI_HANDLER_PROFILE_PARAMETER_GET_INFO              *CommGetInfo;
    65   SMI_HANDLER_PROFILE_PARAMETER_GET_DATA_BY_OFFSET    *CommGetData;
    66   EFI_SMM_COMMUNICATION_PROTOCOL                      *SmmCommunication;
    67   UINTN                                               MinimalSizeNeeded;
    68   EDKII_PI_SMM_COMMUNICATION_REGION_TABLE             *PiSmmCommunicationRegionTable;
    69   UINT32                                              Index;
    70   EFI_MEMORY_DESCRIPTOR                               *Entry;
    71   VOID                                                *Buffer;
    72   UINTN                                               Size;
    73   UINTN                                               Offset;
    74 
    75   Status = gBS->LocateProtocol(&gEfiSmmCommunicationProtocolGuid, NULL, (VOID **)&SmmCommunication);
    76   if (EFI_ERROR(Status)) {
    77     Print(L"SmiHandlerProfile: Locate SmmCommunication protocol - %r\n", Status);
    78     return ;
     61  EFI_STATUS                                        Status;
     62  UINTN                                             CommSize;
     63  UINT8                                             *CommBuffer;
     64  EFI_SMM_COMMUNICATE_HEADER                        *CommHeader;
     65  SMI_HANDLER_PROFILE_PARAMETER_GET_INFO            *CommGetInfo;
     66  SMI_HANDLER_PROFILE_PARAMETER_GET_DATA_BY_OFFSET  *CommGetData;
     67  EFI_SMM_COMMUNICATION_PROTOCOL                    *SmmCommunication;
     68  UINTN                                             MinimalSizeNeeded;
     69  EDKII_PI_SMM_COMMUNICATION_REGION_TABLE           *PiSmmCommunicationRegionTable;
     70  UINT32                                            Index;
     71  EFI_MEMORY_DESCRIPTOR                             *Entry;
     72  VOID                                              *Buffer;
     73  UINTN                                             Size;
     74  UINTN                                             Offset;
     75
     76  Status = gBS->LocateProtocol (&gEfiSmmCommunicationProtocolGuid, NULL, (VOID **)&SmmCommunication);
     77  if (EFI_ERROR (Status)) {
     78    Print (L"SmiHandlerProfile: Locate SmmCommunication protocol - %r\n", Status);
     79    return;
    7980  }
    8081
    8182  MinimalSizeNeeded = EFI_PAGE_SIZE;
    8283
    83   Status = EfiGetSystemConfigurationTable(
     84  Status = EfiGetSystemConfigurationTable (
    8485             &gEdkiiPiSmmCommunicationRegionTableGuid,
    8586             (VOID **)&PiSmmCommunicationRegionTable
    8687             );
    87   if (EFI_ERROR(Status)) {
    88     Print(L"SmiHandlerProfile: Get PiSmmCommunicationRegionTable - %r\n", Status);
    89     return ;
    90   }
    91   ASSERT(PiSmmCommunicationRegionTable != NULL);
     88  if (EFI_ERROR (Status)) {
     89    Print (L"SmiHandlerProfile: Get PiSmmCommunicationRegionTable - %r\n", Status);
     90    return;
     91  }
     92
     93  ASSERT (PiSmmCommunicationRegionTable != NULL);
    9294  Entry = (EFI_MEMORY_DESCRIPTOR *)(PiSmmCommunicationRegionTable + 1);
    93   Size = 0;
     95  Size  = 0;
    9496  for (Index = 0; Index < PiSmmCommunicationRegionTable->NumberOfEntries; Index++) {
    9597    if (Entry->Type == EfiConventionalMemory) {
    96       Size = EFI_PAGES_TO_SIZE((UINTN)Entry->NumberOfPages);
     98      Size = EFI_PAGES_TO_SIZE ((UINTN)Entry->NumberOfPages);
    9799      if (Size >= MinimalSizeNeeded) {
    98100        break;
    99101      }
    100102    }
     103
    101104    Entry = (EFI_MEMORY_DESCRIPTOR *)((UINT8 *)Entry + PiSmmCommunicationRegionTable->DescriptorSize);
    102105  }
    103   ASSERT(Index < PiSmmCommunicationRegionTable->NumberOfEntries);
     106
     107  ASSERT (Index < PiSmmCommunicationRegionTable->NumberOfEntries);
    104108  CommBuffer = (UINT8 *)(UINTN)Entry->PhysicalStart;
    105109
     
    108112  //
    109113  CommHeader = (EFI_SMM_COMMUNICATE_HEADER *)&CommBuffer[0];
    110   CopyMem(&CommHeader->HeaderGuid, &gSmiHandlerProfileGuid, sizeof(gSmiHandlerProfileGuid));
    111   CommHeader->MessageLength = sizeof(SMI_HANDLER_PROFILE_PARAMETER_GET_INFO);
    112 
    113   CommGetInfo = (SMI_HANDLER_PROFILE_PARAMETER_GET_INFO *)&CommBuffer[OFFSET_OF(EFI_SMM_COMMUNICATE_HEADER, Data)];
    114   CommGetInfo->Header.Command = SMI_HANDLER_PROFILE_COMMAND_GET_INFO;
    115   CommGetInfo->Header.DataLength = sizeof(*CommGetInfo);
     114  CopyMem (&CommHeader->HeaderGuid, &gSmiHandlerProfileGuid, sizeof (gSmiHandlerProfileGuid));
     115  CommHeader->MessageLength = sizeof (SMI_HANDLER_PROFILE_PARAMETER_GET_INFO);
     116
     117  CommGetInfo                      = (SMI_HANDLER_PROFILE_PARAMETER_GET_INFO *)&CommBuffer[OFFSET_OF (EFI_SMM_COMMUNICATE_HEADER, Data)];
     118  CommGetInfo->Header.Command      = SMI_HANDLER_PROFILE_COMMAND_GET_INFO;
     119  CommGetInfo->Header.DataLength   = sizeof (*CommGetInfo);
    116120  CommGetInfo->Header.ReturnStatus = (UINT64)-1;
    117   CommGetInfo->DataSize = 0;
    118 
    119   CommSize = sizeof(EFI_GUID) + sizeof(UINTN) + CommHeader->MessageLength;
    120   Status = SmmCommunication->Communicate(SmmCommunication, CommBuffer, &CommSize);
    121   if (EFI_ERROR(Status)) {
    122     Print(L"SmiHandlerProfile: SmmCommunication - %r\n", Status);
    123     return ;
     121  CommGetInfo->DataSize            = 0;
     122
     123  CommSize = sizeof (EFI_GUID) + sizeof (UINTN) + CommHeader->MessageLength;
     124  Status   = SmmCommunication->Communicate (SmmCommunication, CommBuffer, &CommSize);
     125  if (EFI_ERROR (Status)) {
     126    Print (L"SmiHandlerProfile: SmmCommunication - %r\n", Status);
     127    return;
    124128  }
    125129
    126130  if (CommGetInfo->Header.ReturnStatus != 0) {
    127     Print(L"SmiHandlerProfile: GetInfo - 0x%0x\n", CommGetInfo->Header.ReturnStatus);
    128     return ;
     131    Print (L"SmiHandlerProfile: GetInfo - 0x%0x\n", CommGetInfo->Header.ReturnStatus);
     132    return;
    129133  }
    130134
     
    134138  // Get Data
    135139  //
    136   mSmiHandlerProfileDatabase = AllocateZeroPool(mSmiHandlerProfileDatabaseSize);
     140  mSmiHandlerProfileDatabase = AllocateZeroPool (mSmiHandlerProfileDatabaseSize);
    137141  if (mSmiHandlerProfileDatabase == NULL) {
    138142    Status = EFI_OUT_OF_RESOURCES;
    139     Print(L"SmiHandlerProfile: AllocateZeroPool (0x%x) for dump buffer - %r\n", mSmiHandlerProfileDatabaseSize, Status);
    140     return ;
     143    Print (L"SmiHandlerProfile: AllocateZeroPool (0x%x) for dump buffer - %r\n", mSmiHandlerProfileDatabaseSize, Status);
     144    return;
    141145  }
    142146
    143147  CommHeader = (EFI_SMM_COMMUNICATE_HEADER *)&CommBuffer[0];
    144   CopyMem(&CommHeader->HeaderGuid, &gSmiHandlerProfileGuid, sizeof(gSmiHandlerProfileGuid));
    145   CommHeader->MessageLength = sizeof(SMI_HANDLER_PROFILE_PARAMETER_GET_DATA_BY_OFFSET);
    146 
    147   CommGetData = (SMI_HANDLER_PROFILE_PARAMETER_GET_DATA_BY_OFFSET *)&CommBuffer[OFFSET_OF(EFI_SMM_COMMUNICATE_HEADER, Data)];
    148   CommGetData->Header.Command = SMI_HANDLER_PROFILE_COMMAND_GET_DATA_BY_OFFSET;
    149   CommGetData->Header.DataLength = sizeof(*CommGetData);
     148  CopyMem (&CommHeader->HeaderGuid, &gSmiHandlerProfileGuid, sizeof (gSmiHandlerProfileGuid));
     149  CommHeader->MessageLength = sizeof (SMI_HANDLER_PROFILE_PARAMETER_GET_DATA_BY_OFFSET);
     150
     151  CommGetData                      = (SMI_HANDLER_PROFILE_PARAMETER_GET_DATA_BY_OFFSET *)&CommBuffer[OFFSET_OF (EFI_SMM_COMMUNICATE_HEADER, Data)];
     152  CommGetData->Header.Command      = SMI_HANDLER_PROFILE_COMMAND_GET_DATA_BY_OFFSET;
     153  CommGetData->Header.DataLength   = sizeof (*CommGetData);
    150154  CommGetData->Header.ReturnStatus = (UINT64)-1;
    151155
    152   CommSize = sizeof(EFI_GUID) + sizeof(UINTN) + CommHeader->MessageLength;
    153   Buffer = (UINT8 *)CommHeader + CommSize;
    154   Size -= CommSize;
     156  CommSize = sizeof (EFI_GUID) + sizeof (UINTN) + CommHeader->MessageLength;
     157  Buffer   = (UINT8 *)CommHeader + CommSize;
     158  Size    -= CommSize;
    155159
    156160  CommGetData->DataBuffer = (PHYSICAL_ADDRESS)(UINTN)Buffer;
     
    163167      CommGetData->DataSize = (UINT64)(mSmiHandlerProfileDatabaseSize - CommGetData->DataOffset);
    164168    }
    165     Status = SmmCommunication->Communicate(SmmCommunication, CommBuffer, &CommSize);
    166     ASSERT_EFI_ERROR(Status);
     169
     170    Status = SmmCommunication->Communicate (SmmCommunication, CommBuffer, &CommSize);
     171    ASSERT_EFI_ERROR (Status);
    167172
    168173    if (CommGetData->Header.ReturnStatus != 0) {
    169       FreePool(mSmiHandlerProfileDatabase);
     174      FreePool (mSmiHandlerProfileDatabase);
    170175      mSmiHandlerProfileDatabase = NULL;
    171       Print(L"SmiHandlerProfile: GetData - 0x%x\n", CommGetData->Header.ReturnStatus);
    172       return ;
    173     }
    174     CopyMem((UINT8 *)mSmiHandlerProfileDatabase + Offset, (VOID *)(UINTN)CommGetData->DataBuffer, (UINTN)CommGetData->DataSize);
     176      Print (L"SmiHandlerProfile: GetData - 0x%x\n", CommGetData->Header.ReturnStatus);
     177      return;
     178    }
     179
     180    CopyMem ((UINT8 *)mSmiHandlerProfileDatabase + Offset, (VOID *)(UINTN)CommGetData->DataBuffer, (UINTN)CommGetData->DataSize);
    175181  }
    176182
    177183  DEBUG ((DEBUG_INFO, "SmiHandlerProfileSize - 0x%x\n", mSmiHandlerProfileDatabaseSize));
    178184
    179   return ;
     185  return;
    180186}
    181187
     
    194200VOID
    195201GetShortPdbFileName (
    196   IN  CHAR8     *PdbFileName,
    197   OUT CHAR8     *AsciiBuffer
    198   )
    199 {
    200   UINTN IndexPdb;     // Current work location within a Pdb string.
    201   UINTN IndexBuffer; // Current work location within a Buffer string.
    202   UINTN StartIndex;
    203   UINTN EndIndex;
     202  IN  CHAR8  *PdbFileName,
     203  OUT CHAR8  *AsciiBuffer
     204  )
     205{
     206  UINTN  IndexPdb;    // Current work location within a Pdb string.
     207  UINTN  IndexBuffer; // Current work location within a Buffer string.
     208  UINTN  StartIndex;
     209  UINTN  EndIndex;
    204210
    205211  ZeroMem (AsciiBuffer, PROFILE_NAME_STRING_LENGTH + 1);
     
    209215  } else {
    210216    StartIndex = 0;
    211     for (EndIndex = 0; PdbFileName[EndIndex] != 0; EndIndex++);
     217    for (EndIndex = 0; PdbFileName[EndIndex] != 0; EndIndex++) {
     218    }
     219
    212220    for (IndexPdb = 0; PdbFileName[IndexPdb] != 0; IndexPdb++) {
    213221      if ((PdbFileName[IndexPdb] == '\\') || (PdbFileName[IndexPdb] == '/')) {
     
    249257  )
    250258{
    251   EFI_STATUS                  Status;
    252   CHAR16                      *NameString;
    253   UINTN                       StringSize;
     259  EFI_STATUS  Status;
     260  CHAR16      *NameString;
     261  UINTN       StringSize;
    254262
    255263  if (ImageStruct == NULL) {
     
    261269  //
    262270  if (ImageStruct->PdbStringOffset != 0) {
    263     GetShortPdbFileName ((CHAR8 *) ((UINTN) ImageStruct + ImageStruct->PdbStringOffset), mNameString);
     271    GetShortPdbFileName ((CHAR8 *)((UINTN)ImageStruct + ImageStruct->PdbStringOffset), mNameString);
    264272    return mNameString;
    265273  }
     
    271279    NameString = NULL;
    272280    StringSize = 0;
    273     Status = GetSectionFromAnyFv (
    274               &ImageStruct->FileGuid,
    275               EFI_SECTION_USER_INTERFACE,
    276               0,
    277               (VOID **) &NameString,
    278               &StringSize
    279               );
     281    Status     = GetSectionFromAnyFv (
     282                   &ImageStruct->FileGuid,
     283                   EFI_SECTION_USER_INTERFACE,
     284                   0,
     285                   (VOID **)&NameString,
     286                   &StringSize
     287                   );
    280288    if (!EFI_ERROR (Status)) {
    281289      //
     
    285293        NameString[PROFILE_NAME_STRING_LENGTH] = 0;
    286294      }
     295
    287296      UnicodeStrToAsciiStrS (NameString, mNameString, sizeof (mNameString));
    288297      FreePool (NameString);
     
    307316SMM_CORE_IMAGE_DATABASE_STRUCTURE *
    308317GetImageFromRef (
    309   IN UINTN ImageRef
     318  IN UINTN  ImageRef
    310319  )
    311320{
     
    319328      }
    320329    }
     330
    321331    ImageStruct = (VOID *)((UINTN)ImageStruct + ImageStruct->Header.Length);
    322332  }
     
    329339**/
    330340VOID
    331 DumpSmmLoadedImage(
     341DumpSmmLoadedImage (
    332342  VOID
    333343  )
     
    341351    if (ImageStruct->Header.Signature == SMM_CORE_IMAGE_DATABASE_SIGNATURE) {
    342352      NameString = GetDriverNameString (ImageStruct);
    343       Print(L"  <Image Name=\"%a\"", NameString);
    344       Print(L" Base=\"0x%lx\" Size=\"0x%lx\"", ImageStruct->ImageBase, ImageStruct->ImageSize);
     353      Print (L"  <Image Name=\"%a\"", NameString);
     354      Print (L" Base=\"0x%lx\" Size=\"0x%lx\"", ImageStruct->ImageBase, ImageStruct->ImageSize);
    345355      if (ImageStruct->EntryPoint != 0) {
    346         Print(L" EntryPoint=\"0x%lx\"", ImageStruct->EntryPoint);
    347       }
    348       Print(L" FvFile=\"%g\"", &ImageStruct->FileGuid);
    349       Print(L" RefId=\"0x%x\"", ImageStruct->ImageRef);
    350       Print(L">\n");
     356        Print (L" EntryPoint=\"0x%lx\"", ImageStruct->EntryPoint);
     357      }
     358
     359      Print (L" FvFile=\"%g\"", &ImageStruct->FileGuid);
     360      Print (L" RefId=\"0x%x\"", ImageStruct->ImageRef);
     361      Print (L">\n");
    351362      if (ImageStruct->PdbStringOffset != 0) {
    352363        PdbString = (CHAR8 *)((UINTN)ImageStruct + ImageStruct->PdbStringOffset);
    353         Print(L"    <Pdb>%a</Pdb>\n", PdbString);
    354       }
    355       Print(L"  </Image>\n");
     364        Print (L"    <Pdb>%a</Pdb>\n", PdbString);
     365      }
     366
     367      Print (L"  </Image>\n");
    356368    }
    357369
     
    362374}
    363375
    364 CHAR8 *mSxTypeString[] = {
     376CHAR8  *mSxTypeString[] = {
    365377  "SxS0",
    366378  "SxS1",
     
    383395  )
    384396{
    385   if (Type >= 0 && Type < ARRAY_SIZE(mSxTypeString)) {
     397  if ((Type >= 0) && (Type < ARRAY_SIZE (mSxTypeString))) {
    386398    return mSxTypeString[Type];
    387399  } else {
    388     AsciiSPrint (mNameString, sizeof(mNameString), "0x%x", Type);
     400    AsciiSPrint (mNameString, sizeof (mNameString), "0x%x", Type);
    389401    return mNameString;
    390402  }
    391403}
    392404
    393 CHAR8 *mSxPhaseString[] = {
     405CHAR8  *mSxPhaseString[] = {
    394406  "SxEntry",
    395407  "SxExit",
     
    405417CHAR8 *
    406418SxPhaseToString (
    407   IN EFI_SLEEP_PHASE Phase
    408   )
    409 {
    410   if (Phase >= 0 && Phase < ARRAY_SIZE(mSxPhaseString)) {
     419  IN EFI_SLEEP_PHASE  Phase
     420  )
     421{
     422  if ((Phase >= 0) && (Phase < ARRAY_SIZE (mSxPhaseString))) {
    411423    return mSxPhaseString[Phase];
    412424  } else {
    413     AsciiSPrint (mNameString, sizeof(mNameString), "0x%x", Phase);
     425    AsciiSPrint (mNameString, sizeof (mNameString), "0x%x", Phase);
    414426    return mNameString;
    415427  }
    416428}
    417429
    418 CHAR8 *mPowerButtonPhaseString[] = {
     430CHAR8  *mPowerButtonPhaseString[] = {
    419431  "PowerButtonEntry",
    420432  "PowerButtonExit",
     
    433445  )
    434446{
    435   if (Phase >= 0 && Phase < ARRAY_SIZE(mPowerButtonPhaseString)) {
     447  if ((Phase >= 0) && (Phase < ARRAY_SIZE (mPowerButtonPhaseString))) {
    436448    return mPowerButtonPhaseString[Phase];
    437449  } else {
    438     AsciiSPrint (mNameString, sizeof(mNameString), "0x%x", Phase);
     450    AsciiSPrint (mNameString, sizeof (mNameString), "0x%x", Phase);
    439451    return mNameString;
    440452  }
    441453}
    442454
    443 CHAR8 *mStandbyButtonPhaseString[] = {
     455CHAR8  *mStandbyButtonPhaseString[] = {
    444456  "StandbyButtonEntry",
    445457  "StandbyButtonExit",
     
    458470  )
    459471{
    460   if (Phase >= 0 && Phase < ARRAY_SIZE(mStandbyButtonPhaseString)) {
     472  if ((Phase >= 0) && (Phase < ARRAY_SIZE (mStandbyButtonPhaseString))) {
    461473    return mStandbyButtonPhaseString[Phase];
    462474  } else {
    463     AsciiSPrint (mNameString, sizeof(mNameString), "0x%x", Phase);
     475    AsciiSPrint (mNameString, sizeof (mNameString), "0x%x", Phase);
    464476    return mNameString;
    465477  }
    466478}
    467479
    468 CHAR8 *mIoTrapTypeString[] = {
     480CHAR8  *mIoTrapTypeString[] = {
    469481  "WriteTrap",
    470482  "ReadTrap",
     
    484496  )
    485497{
    486   if (Type >= 0 && Type < ARRAY_SIZE(mIoTrapTypeString)) {
     498  if ((Type >= 0) && (Type < ARRAY_SIZE (mIoTrapTypeString))) {
    487499    return mIoTrapTypeString[Type];
    488500  } else {
    489     AsciiSPrint (mNameString, sizeof(mNameString), "0x%x", Type);
     501    AsciiSPrint (mNameString, sizeof (mNameString), "0x%x", Type);
    490502    return mNameString;
    491503  }
    492504}
    493505
    494 CHAR8 *mUsbTypeString[] = {
     506CHAR8  *mUsbTypeString[] = {
    495507  "UsbLegacy",
    496508  "UsbWake",
     
    506518CHAR8 *
    507519UsbTypeToString (
    508   IN EFI_USB_SMI_TYPE          Type
    509   )
    510 {
    511   if (Type >= 0 && Type < ARRAY_SIZE(mUsbTypeString)) {
     520  IN EFI_USB_SMI_TYPE  Type
     521  )
     522{
     523  if ((Type >= 0) && (Type < ARRAY_SIZE (mUsbTypeString))) {
    512524    return mUsbTypeString[Type];
    513525  } else {
    514     AsciiSPrint (mNameString, sizeof(mNameString), "0x%x", Type);
     526    AsciiSPrint (mNameString, sizeof (mNameString), "0x%x", Type);
    515527    return mNameString;
    516528  }
     
    526538VOID
    527539DumpSmiChildContext (
    528   IN EFI_GUID   *HandlerType,
    529   IN VOID       *Context,
    530   IN UINTN      ContextSize
    531   )
    532 {
    533   CHAR16        *Str;
     540  IN EFI_GUID  *HandlerType,
     541  IN VOID      *Context,
     542  IN UINTN     ContextSize
     543  )
     544{
     545  CHAR16  *Str;
    534546
    535547  if (CompareGuid (HandlerType, &gEfiSmmSwDispatch2ProtocolGuid)) {
    536     Print(L" SwSmi=\"0x%lx\"", ((SMI_HANDLER_PROFILE_SW_REGISTER_CONTEXT *)Context)->SwSmiInputValue);
     548    Print (L" SwSmi=\"0x%lx\"", ((SMI_HANDLER_PROFILE_SW_REGISTER_CONTEXT *)Context)->SwSmiInputValue);
    537549  } else if (CompareGuid (HandlerType, &gEfiSmmSxDispatch2ProtocolGuid)) {
    538     Print(L" SxType=\"%a\"", SxTypeToString(((EFI_SMM_SX_REGISTER_CONTEXT *)Context)->Type));
    539     Print(L" SxPhase=\"%a\"", SxPhaseToString(((EFI_SMM_SX_REGISTER_CONTEXT *)Context)->Phase));
     550    Print (L" SxType=\"%a\"", SxTypeToString (((EFI_SMM_SX_REGISTER_CONTEXT *)Context)->Type));
     551    Print (L" SxPhase=\"%a\"", SxPhaseToString (((EFI_SMM_SX_REGISTER_CONTEXT *)Context)->Phase));
    540552  } else if (CompareGuid (HandlerType, &gEfiSmmPowerButtonDispatch2ProtocolGuid)) {
    541     Print(L" PowerButtonPhase=\"%a\"", PowerButtonPhaseToString(((EFI_SMM_POWER_BUTTON_REGISTER_CONTEXT *)Context)->Phase));
     553    Print (L" PowerButtonPhase=\"%a\"", PowerButtonPhaseToString (((EFI_SMM_POWER_BUTTON_REGISTER_CONTEXT *)Context)->Phase));
    542554  } else if (CompareGuid (HandlerType, &gEfiSmmStandbyButtonDispatch2ProtocolGuid)) {
    543     Print(L" StandbyButtonPhase=\"%a\"", StandbyButtonPhaseToString(((EFI_SMM_STANDBY_BUTTON_REGISTER_CONTEXT *)Context)->Phase));
     555    Print (L" StandbyButtonPhase=\"%a\"", StandbyButtonPhaseToString (((EFI_SMM_STANDBY_BUTTON_REGISTER_CONTEXT *)Context)->Phase));
    544556  } else if (CompareGuid (HandlerType, &gEfiSmmPeriodicTimerDispatch2ProtocolGuid)) {
    545     Print(L" PeriodicTimerPeriod=\"%ld\"", ((EFI_SMM_PERIODIC_TIMER_REGISTER_CONTEXT *)Context)->Period);
    546     Print(L" PeriodicTimerSmiTickInterval=\"%ld\"", ((EFI_SMM_PERIODIC_TIMER_REGISTER_CONTEXT *)Context)->SmiTickInterval);
     557    Print (L" PeriodicTimerPeriod=\"%ld\"", ((EFI_SMM_PERIODIC_TIMER_REGISTER_CONTEXT *)Context)->Period);
     558    Print (L" PeriodicTimerSmiTickInterval=\"%ld\"", ((EFI_SMM_PERIODIC_TIMER_REGISTER_CONTEXT *)Context)->SmiTickInterval);
    547559  } else if (CompareGuid (HandlerType, &gEfiSmmGpiDispatch2ProtocolGuid)) {
    548     Print(L" GpiNum=\"0x%lx\"", ((EFI_SMM_GPI_REGISTER_CONTEXT *)Context)->GpiNum);
     560    Print (L" GpiNum=\"0x%lx\"", ((EFI_SMM_GPI_REGISTER_CONTEXT *)Context)->GpiNum);
    549561  } else if (CompareGuid (HandlerType, &gEfiSmmIoTrapDispatch2ProtocolGuid)) {
    550     Print(L" IoTrapAddress=\"0x%x\"", ((EFI_SMM_IO_TRAP_REGISTER_CONTEXT *)Context)->Address);
    551     Print(L" IoTrapLength=\"0x%x\"", ((EFI_SMM_IO_TRAP_REGISTER_CONTEXT *)Context)->Length);
    552     Print(L" IoTrapType=\"%a\"", IoTrapTypeToString(((EFI_SMM_IO_TRAP_REGISTER_CONTEXT *)Context)->Type));
     562    Print (L" IoTrapAddress=\"0x%x\"", ((EFI_SMM_IO_TRAP_REGISTER_CONTEXT *)Context)->Address);
     563    Print (L" IoTrapLength=\"0x%x\"", ((EFI_SMM_IO_TRAP_REGISTER_CONTEXT *)Context)->Length);
     564    Print (L" IoTrapType=\"%a\"", IoTrapTypeToString (((EFI_SMM_IO_TRAP_REGISTER_CONTEXT *)Context)->Type));
    553565  } else if (CompareGuid (HandlerType, &gEfiSmmUsbDispatch2ProtocolGuid)) {
    554     Print(L" UsbType=\"0x%x\"", UsbTypeToString(((SMI_HANDLER_PROFILE_USB_REGISTER_CONTEXT *)Context)->Type));
    555     Str = ConvertDevicePathToText((EFI_DEVICE_PATH_PROTOCOL *)(((SMI_HANDLER_PROFILE_USB_REGISTER_CONTEXT *)Context) + 1), TRUE, TRUE);
    556     Print(L" UsbDevicePath=\"%s\"", Str);
     566    Print (L" UsbType=\"0x%x\"", UsbTypeToString (((SMI_HANDLER_PROFILE_USB_REGISTER_CONTEXT *)Context)->Type));
     567    Str = ConvertDevicePathToText ((EFI_DEVICE_PATH_PROTOCOL *)(((SMI_HANDLER_PROFILE_USB_REGISTER_CONTEXT *)Context) + 1), TRUE, TRUE);
     568    Print (L" UsbDevicePath=\"%s\"", Str);
    557569    if (Str != NULL) {
    558570      FreePool (Str);
    559571    }
    560572  } else {
    561     Print(L" Context=\"");
     573    Print (L" Context=\"");
    562574    InternalDumpData (Context, ContextSize);
    563     Print(L"\"");
     575    Print (L"\"");
    564576  }
    565577}
     
    571583**/
    572584VOID
    573 DumpSmiHandler(
    574   IN UINT32 HandlerCategory
     585DumpSmiHandler (
     586  IN UINT32  HandlerCategory
    575587  )
    576588{
     
    585597    if ((SmiStruct->Header.Signature == SMM_CORE_SMI_DATABASE_SIGNATURE) && (SmiStruct->HandlerCategory == HandlerCategory)) {
    586598      SmiHandlerStruct = (VOID *)(SmiStruct + 1);
    587       Print(L"  <SmiEntry");
     599      Print (L"  <SmiEntry");
    588600      if (!IsZeroGuid (&SmiStruct->HandlerType)) {
    589         Print(L" HandlerType=\"%g\"", &SmiStruct->HandlerType);
    590       }
    591       Print(L">\n");
     601        Print (L" HandlerType=\"%g\"", &SmiStruct->HandlerType);
     602      }
     603
     604      Print (L">\n");
    592605      for (Index = 0; Index < SmiStruct->HandlerCount; Index++) {
    593         Print(L"    <SmiHandler");
     606        Print (L"    <SmiHandler");
    594607        if (SmiHandlerStruct->ContextBufferSize != 0) {
    595608          DumpSmiChildContext (&SmiStruct->HandlerType, (UINT8 *)SmiHandlerStruct + SmiHandlerStruct->ContextBufferOffset, SmiHandlerStruct->ContextBufferSize);
    596609        }
    597         Print(L">\n");
    598         ImageStruct = GetImageFromRef((UINTN)SmiHandlerStruct->ImageRef);
    599         NameString = GetDriverNameString (ImageStruct);
    600         Print(L"      <Module RefId=\"0x%x\" Name=\"%a\">\n", SmiHandlerStruct->ImageRef, NameString);
     610
     611        Print (L">\n");
     612        ImageStruct = GetImageFromRef ((UINTN)SmiHandlerStruct->ImageRef);
     613        NameString  = GetDriverNameString (ImageStruct);
     614        Print (L"      <Module RefId=\"0x%x\" Name=\"%a\">\n", SmiHandlerStruct->ImageRef, NameString);
    601615        if ((ImageStruct != NULL) && (ImageStruct->PdbStringOffset != 0)) {
    602           Print(L"      <Pdb>%a</Pdb>\n", (UINT8 *)ImageStruct + ImageStruct->PdbStringOffset);
     616          Print (L"      <Pdb>%a</Pdb>\n", (UINT8 *)ImageStruct + ImageStruct->PdbStringOffset);
    603617        }
    604         Print(L"      </Module>\n");
    605         Print(L"      <Handler Address=\"0x%lx\">\n", SmiHandlerStruct->Handler);
     618
     619        Print (L"      </Module>\n");
     620        Print (L"      <Handler Address=\"0x%lx\">\n", SmiHandlerStruct->Handler);
    606621        if (ImageStruct != NULL) {
    607           Print(L"         <RVA>0x%x</RVA>\n", (UINTN) (SmiHandlerStruct->Handler - ImageStruct->ImageBase));
     622          Print (L"         <RVA>0x%x</RVA>\n", (UINTN)(SmiHandlerStruct->Handler - ImageStruct->ImageBase));
    608623        }
    609         Print(L"      </Handler>\n", SmiHandlerStruct->Handler);
    610         Print(L"      <Caller Address=\"0x%lx\">\n", SmiHandlerStruct->CallerAddr);
     624
     625        Print (L"      </Handler>\n", SmiHandlerStruct->Handler);
     626        Print (L"      <Caller Address=\"0x%lx\">\n", SmiHandlerStruct->CallerAddr);
    611627        if (ImageStruct != NULL) {
    612           Print(L"         <RVA>0x%x</RVA>\n", (UINTN) (SmiHandlerStruct->CallerAddr - ImageStruct->ImageBase));
     628          Print (L"         <RVA>0x%x</RVA>\n", (UINTN)(SmiHandlerStruct->CallerAddr - ImageStruct->ImageBase));
    613629        }
    614         Print(L"      </Caller>\n", SmiHandlerStruct->Handler);
     630
     631        Print (L"      </Caller>\n", SmiHandlerStruct->Handler);
    615632        SmiHandlerStruct = (VOID *)((UINTN)SmiHandlerStruct + SmiHandlerStruct->Length);
    616         Print(L"    </SmiHandler>\n");
    617       }
    618       Print(L"  </SmiEntry>\n");
    619     }
     633        Print (L"    </SmiHandler>\n");
     634      }
     635
     636      Print (L"  </SmiEntry>\n");
     637    }
     638
    620639    SmiStruct = (VOID *)((UINTN)SmiStruct + SmiStruct->Header.Length);
    621640  }
     
    636655EFIAPI
    637656SmiHandlerProfileInfoEntrypoint (
    638   IN EFI_HANDLE           ImageHandle,
    639   IN EFI_SYSTEM_TABLE     *SystemTable
    640   )
    641 {
    642   GetSmiHandlerProfileDatabase();
     657  IN EFI_HANDLE        ImageHandle,
     658  IN EFI_SYSTEM_TABLE  *SystemTable
     659  )
     660{
     661  GetSmiHandlerProfileDatabase ();
    643662
    644663  if (mSmiHandlerProfileDatabase == NULL) {
     
    649668  // Dump all image
    650669  //
    651   Print(L"<?xml version=\"1.0\" encoding=\"utf-8\"?>\n");
    652   Print(L"<SmiHandlerProfile>\n");
    653   Print(L"<ImageDatabase>\n");
    654   Print(L"  <!-- SMM image loaded -->\n");
    655   DumpSmmLoadedImage();
    656   Print(L"</ImageDatabase>\n\n");
     670  Print (L"<?xml version=\"1.0\" encoding=\"utf-8\"?>\n");
     671  Print (L"<SmiHandlerProfile>\n");
     672  Print (L"<ImageDatabase>\n");
     673  Print (L"  <!-- SMM image loaded -->\n");
     674  DumpSmmLoadedImage ();
     675  Print (L"</ImageDatabase>\n\n");
    657676
    658677  //
    659678  // Dump SMI Handler
    660679  //
    661   Print(L"<SmiHandlerDatabase>\n");
    662   Print(L"  <!-- SMI Handler registered -->\n\n");
    663   Print(L"  <SmiHandlerCategory Name=\"RootSmi\">\n");
    664   Print(L"  <!-- The root SMI Handler registered by SmmCore -->\n");
    665   DumpSmiHandler(SmmCoreSmiHandlerCategoryRootHandler);
    666   Print(L"  </SmiHandlerCategory>\n\n");
    667 
    668   Print(L"  <SmiHandlerCategory Name=\"GuidSmi\">\n");
    669   Print(L"  <!-- The GUID SMI Handler registered by SmmCore -->\n");
    670   DumpSmiHandler(SmmCoreSmiHandlerCategoryGuidHandler);
    671   Print(L"  </SmiHandlerCategory>\n\n");
    672 
    673   Print(L"  <SmiHandlerCategory Name=\"HardwareSmi\">\n");
    674   Print(L"  <!-- The hardware SMI Handler registered by SmmChildDispatcher -->\n");
    675   DumpSmiHandler(SmmCoreSmiHandlerCategoryHardwareHandler);
    676   Print(L"  </SmiHandlerCategory>\n\n");
    677 
    678   Print(L"</SmiHandlerDatabase>\n");
    679   Print(L"</SmiHandlerProfile>\n");
     680  Print (L"<SmiHandlerDatabase>\n");
     681  Print (L"  <!-- SMI Handler registered -->\n\n");
     682  Print (L"  <SmiHandlerCategory Name=\"RootSmi\">\n");
     683  Print (L"  <!-- The root SMI Handler registered by SmmCore -->\n");
     684  DumpSmiHandler (SmmCoreSmiHandlerCategoryRootHandler);
     685  Print (L"  </SmiHandlerCategory>\n\n");
     686
     687  Print (L"  <SmiHandlerCategory Name=\"GuidSmi\">\n");
     688  Print (L"  <!-- The GUID SMI Handler registered by SmmCore -->\n");
     689  DumpSmiHandler (SmmCoreSmiHandlerCategoryGuidHandler);
     690  Print (L"  </SmiHandlerCategory>\n\n");
     691
     692  Print (L"  <SmiHandlerCategory Name=\"HardwareSmi\">\n");
     693  Print (L"  <!-- The hardware SMI Handler registered by SmmChildDispatcher -->\n");
     694  DumpSmiHandler (SmmCoreSmiHandlerCategoryHardwareHandler);
     695  Print (L"  </SmiHandlerCategory>\n\n");
     696
     697  Print (L"</SmiHandlerDatabase>\n");
     698  Print (L"</SmiHandlerProfile>\n");
    680699
    681700  if (mSmiHandlerProfileDatabase != NULL) {
    682     FreePool(mSmiHandlerProfileDatabase);
     701    FreePool (mSmiHandlerProfileDatabase);
    683702  }
    684703
Note: See TracChangeset for help on using the changeset viewer.

© 2025 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette