VirtualBox

Ignore:
Timestamp:
Mar 31, 2025 11:31:09 AM (4 weeks ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
168237
Message:

Devices/EFI/FirmwareNew: Merge edk2-stable202502 from the vendor branch and make it build for the important platforms, bugref:4643

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

Legend:

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

  • trunk/src/VBox/Devices/EFI/FirmwareNew/IntelFsp2WrapperPkg/Library/BaseFspWrapperApiLib/BaseFspWrapperApiLib.inf

    r80721 r108794  
    6464  gIntelFsp2WrapperTokenSpaceGuid.PcdFspmBaseAddress  ## CONSUMES
    6565  gIntelFsp2WrapperTokenSpaceGuid.PcdFspsBaseAddress  ## CONSUMES
     66  gIntelFsp2WrapperTokenSpaceGuid.PcdFspiBaseAddress  ## CONSUMES
  • trunk/src/VBox/Devices/EFI/FirmwareNew/IntelFsp2WrapperPkg/Library/BaseFspWrapperApiLib/FspWrapperApiLib.c

    r99404 r108794  
    231231  return Status;
    232232}
     233
     234/**
     235  Call FSP API - FspSmmInit.
     236
     237  @param[in] FspiUpdDataPtr Address pointer to the Smm Init parameters structure.
     238
     239  @return EFI status returned by FspSmmInit API.
     240**/
     241EFI_STATUS
     242EFIAPI
     243CallFspSmmInit (
     244  IN VOID  *FspiUpdDataPtr
     245  )
     246{
     247  FSP_INFO_HEADER  *FspHeader;
     248  FSP_SMM_INIT     FspSmmInitApi;
     249  EFI_STATUS       Status;
     250  BOOLEAN          InterruptState;
     251
     252  FspHeader = (FSP_INFO_HEADER *)FspFindFspHeader (PcdGet32 (PcdFspiBaseAddress));
     253  if (FspHeader == NULL) {
     254    return EFI_DEVICE_ERROR;
     255  }
     256
     257  FspSmmInitApi  = (FSP_SMM_INIT)((UINTN)FspHeader->ImageBase + FspHeader->FspSmmInitEntryOffset);
     258  InterruptState = SaveAndDisableInterrupts ();
     259  if ((FspHeader->ImageAttribute & IMAGE_ATTRIBUTE_64BIT_MODE_SUPPORT) == FSP_IA32) {
     260    Status = Execute32BitCode ((UINTN)FspSmmInitApi, (UINTN)FspiUpdDataPtr, (UINTN)NULL);
     261  } else {
     262    Status = Execute64BitCode ((UINTN)FspSmmInitApi, (UINTN)FspiUpdDataPtr, (UINTN)NULL);
     263  }
     264
     265  SetInterruptState (InterruptState);
     266
     267  return Status;
     268}
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