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/ShellPkg/Library/UefiShellLevel2CommandsLib/Load.c

    r85718 r99404  
    1313// IntelFrameworkModulePkg\Library\GenericBdsLib\BdsConnect.c
    1414// function name: BdsLibConnectAllEfi
     15
    1516/**
    1617  This function will connect all current system handles recursively. The
     
    3839                  &HandleCount,
    3940                  &HandleBuffer
    40                  );
     41                  );
    4142  if (EFI_ERROR (Status)) {
    4243    return Status;
     
    6869**/
    6970EFI_STATUS
    70 LoadDriver(
     71LoadDriver (
    7172  IN CONST CHAR16   *FileName,
    7273  IN CONST BOOLEAN  Connect
    7374  )
    7475{
    75   EFI_HANDLE                    LoadedDriverHandle;
    76   EFI_STATUS                    Status;
    77   EFI_DEVICE_PATH_PROTOCOL      *FilePath;
    78   EFI_LOADED_IMAGE_PROTOCOL     *LoadedDriverImage;
    79 
    80   LoadedDriverImage   = NULL;
    81   FilePath            = NULL;
    82   LoadedDriverHandle  = NULL;
    83   Status              = EFI_SUCCESS;
     76  EFI_HANDLE                 LoadedDriverHandle;
     77  EFI_STATUS                 Status;
     78  EFI_DEVICE_PATH_PROTOCOL   *FilePath;
     79  EFI_LOADED_IMAGE_PROTOCOL  *LoadedDriverImage;
     80
     81  LoadedDriverImage  = NULL;
     82  FilePath           = NULL;
     83  LoadedDriverHandle = NULL;
     84  Status             = EFI_SUCCESS;
    8485
    8586  ASSERT (FileName != NULL);
     
    8889  // Fix local copies of the protocol pointers
    8990  //
    90   Status = CommandInit();
    91   ASSERT_EFI_ERROR(Status);
     91  Status = CommandInit ();
     92  ASSERT_EFI_ERROR (Status);
    9293
    9394  //
    9495  // Convert to DEVICE_PATH
    9596  //
    96   FilePath = gEfiShellProtocol->GetDevicePathFromFilePath(FileName);
     97  FilePath = gEfiShellProtocol->GetDevicePathFromFilePath (FileName);
    9798
    9899  if (FilePath == NULL) {
    99     ASSERT(FALSE);
     100    ASSERT (FALSE);
    100101    return (EFI_INVALID_PARAMETER);
    101102  }
     
    104105  // Use LoadImage to get it into memory
    105106  //
    106   Status = gBS->LoadImage(
    107     FALSE,
    108     gImageHandle,
    109     FilePath,
    110     NULL,
    111     0,
    112     &LoadedDriverHandle);
    113 
    114   if (EFI_ERROR(Status)) {
     107  Status = gBS->LoadImage (
     108                  FALSE,
     109                  gImageHandle,
     110                  FilePath,
     111                  NULL,
     112                  0,
     113                  &LoadedDriverHandle
     114                  );
     115
     116  if (EFI_ERROR (Status)) {
    115117    //
    116118    // With EFI_SECURITY_VIOLATION retval, the Image was loaded and an ImageHandle was created
     
    122124      gBS->UnloadImage (LoadedDriverHandle);
    123125    }
    124     ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_LOAD_NOT_IMAGE), gShellLevel2HiiHandle, FileName, Status);
     126
     127    ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_LOAD_NOT_IMAGE), gShellLevel2HiiHandle, FileName, Status);
    125128  } else {
    126129    //
    127130    // Make sure it is a driver image
    128131    //
    129     Status = gBS->HandleProtocol (LoadedDriverHandle, &gEfiLoadedImageProtocolGuid, (VOID *) &LoadedDriverImage);
     132    Status = gBS->HandleProtocol (LoadedDriverHandle, &gEfiLoadedImageProtocolGuid, (VOID *)&LoadedDriverImage);
    130133
    131134    ASSERT (LoadedDriverImage != NULL);
    132135
    133     if ( EFI_ERROR(Status)
    134       || ( LoadedDriverImage->ImageCodeType != EfiBootServicesCode
    135         && LoadedDriverImage->ImageCodeType != EfiRuntimeServicesCode)
    136      ){
    137       ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_LOAD_NOT_DRIVER), gShellLevel2HiiHandle, FileName);
     136    if (  EFI_ERROR (Status)
     137       || (  (LoadedDriverImage->ImageCodeType != EfiBootServicesCode)
     138          && (LoadedDriverImage->ImageCodeType != EfiRuntimeServicesCode))
     139          )
     140    {
     141      ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_LOAD_NOT_DRIVER), gShellLevel2HiiHandle, FileName);
    138142
    139143      //
    140144      // Exit and unload the non-driver image
    141145      //
    142       gBS->Exit(LoadedDriverHandle, EFI_INVALID_PARAMETER, 0, NULL);
     146      gBS->Exit (LoadedDriverHandle, EFI_INVALID_PARAMETER, 0, NULL);
    143147      Status = EFI_INVALID_PARAMETER;
    144148    }
    145149  }
    146150
    147   if (!EFI_ERROR(Status)) {
     151  if (!EFI_ERROR (Status)) {
    148152    //
    149153    // Start the image
    150154    //
    151     Status = gBS->StartImage(LoadedDriverHandle, NULL, NULL);
    152     if (EFI_ERROR(Status)) {
    153       ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_LOAD_ERROR), gShellLevel2HiiHandle, FileName, Status);
     155    Status = gBS->StartImage (LoadedDriverHandle, NULL, NULL);
     156    if (EFI_ERROR (Status)) {
     157      ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_LOAD_ERROR), gShellLevel2HiiHandle, FileName, Status);
    154158    } else {
    155       ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_LOAD_LOADED), gShellLevel2HiiHandle, FileName, LoadedDriverImage->ImageBase, Status);
    156     }
    157   }
    158 
    159   if (!EFI_ERROR(Status) && Connect) {
     159      ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_LOAD_LOADED), gShellLevel2HiiHandle, FileName, LoadedDriverImage->ImageBase, Status);
     160    }
     161  }
     162
     163  if (!EFI_ERROR (Status) && Connect) {
    160164    //
    161165    // Connect it...
    162166    //
    163     Status = ConnectAllEfi();
     167    Status = ConnectAllEfi ();
    164168  }
    165169
     
    168172  //
    169173  if (FilePath != NULL) {
    170     FreePool(FilePath);
     174    FreePool (FilePath);
    171175  }
    172176
     
    174178}
    175179
    176 STATIC CONST SHELL_PARAM_ITEM LoadParamList[] = {
    177   {L"-nc", TypeFlag},
    178   {NULL, TypeMax}
    179   };
     180STATIC CONST SHELL_PARAM_ITEM  LoadParamList[] = {
     181  { L"-nc", TypeFlag },
     182  { NULL,   TypeMax  }
     183};
    180184
    181185/**
     
    192196  )
    193197{
    194   EFI_STATUS          Status;
    195   LIST_ENTRY          *Package;
    196   CHAR16              *ProblemParam;
    197   SHELL_STATUS        ShellStatus;
    198   UINTN               ParamCount;
    199   EFI_SHELL_FILE_INFO *ListHead;
    200   EFI_SHELL_FILE_INFO *Node;
    201 
    202   ListHead            = NULL;
    203   ProblemParam        = NULL;
    204   ShellStatus         = SHELL_SUCCESS;
     198  EFI_STATUS           Status;
     199  LIST_ENTRY           *Package;
     200  CHAR16               *ProblemParam;
     201  SHELL_STATUS         ShellStatus;
     202  UINTN                ParamCount;
     203  EFI_SHELL_FILE_INFO  *ListHead;
     204  EFI_SHELL_FILE_INFO  *Node;
     205
     206  ListHead     = NULL;
     207  ProblemParam = NULL;
     208  ShellStatus  = SHELL_SUCCESS;
    205209
    206210  //
    207211  // initialize the shell lib (we must be in non-auto-init...)
    208212  //
    209   Status = ShellInitialize();
    210   ASSERT_EFI_ERROR(Status);
     213  Status = ShellInitialize ();
     214  ASSERT_EFI_ERROR (Status);
    211215
    212216  //
     
    214218  //
    215219  Status = ShellCommandLineParse (LoadParamList, &Package, &ProblemParam, TRUE);
    216   if (EFI_ERROR(Status)) {
    217     if (Status == EFI_VOLUME_CORRUPTED && ProblemParam != NULL) {
    218       ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_GEN_PROBLEM), gShellLevel2HiiHandle, L"load", ProblemParam);
    219       FreePool(ProblemParam);
     220  if (EFI_ERROR (Status)) {
     221    if ((Status == EFI_VOLUME_CORRUPTED) && (ProblemParam != NULL)) {
     222      ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_GEN_PROBLEM), gShellLevel2HiiHandle, L"load", ProblemParam);
     223      FreePool (ProblemParam);
    220224      ShellStatus = SHELL_INVALID_PARAMETER;
    221225    } else {
    222       ASSERT(FALSE);
     226      ASSERT (FALSE);
    223227    }
    224228  } else {
     
    226230    // check for "-?"
    227231    //
    228     if (ShellCommandLineGetFlag(Package, L"-?")) {
    229       ASSERT(FALSE);
    230     } else if (ShellCommandLineGetRawValue(Package, 1) == NULL) {
     232    if (ShellCommandLineGetFlag (Package, L"-?")) {
     233      ASSERT (FALSE);
     234    } else if (ShellCommandLineGetRawValue (Package, 1) == NULL) {
    231235      //
    232236      // we didnt get a single file to load parameter
    233237      //
    234       ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_GEN_TOO_FEW), gShellLevel2HiiHandle, L"load");
     238      ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_GEN_TOO_FEW), gShellLevel2HiiHandle, L"load");
    235239      ShellStatus = SHELL_INVALID_PARAMETER;
    236240    } else {
    237241      for ( ParamCount = 1
    238           ; ShellCommandLineGetRawValue(Package, ParamCount) != NULL
    239           ; ParamCount++
    240          ){
    241         Status = ShellOpenFileMetaArg((CHAR16*)ShellCommandLineGetRawValue(Package, ParamCount), EFI_FILE_MODE_READ, &ListHead);
    242         if (!EFI_ERROR(Status)) {
    243           for ( Node = (EFI_SHELL_FILE_INFO *)GetFirstNode(&ListHead->Link)
    244               ; !IsNull(&ListHead->Link, &Node->Link)
    245               ; Node = (EFI_SHELL_FILE_INFO *)GetNextNode(&ListHead->Link, &Node->Link)
    246              ){
     242            ; ShellCommandLineGetRawValue (Package, ParamCount) != NULL
     243            ; ParamCount++
     244            )
     245      {
     246        Status = ShellOpenFileMetaArg ((CHAR16 *)ShellCommandLineGetRawValue (Package, ParamCount), EFI_FILE_MODE_READ, &ListHead);
     247        if (!EFI_ERROR (Status)) {
     248          for ( Node = (EFI_SHELL_FILE_INFO *)GetFirstNode (&ListHead->Link)
     249                ; !IsNull (&ListHead->Link, &Node->Link)
     250                ; Node = (EFI_SHELL_FILE_INFO *)GetNextNode (&ListHead->Link, &Node->Link)
     251                )
     252          {
    247253            //
    248254            // once we have an error preserve that value, but finish the loop.
    249255            //
    250             if (EFI_ERROR(Status)) {
    251               LoadDriver(Node->FullName, (BOOLEAN)(ShellCommandLineGetFlag(Package, L"-nc")==FALSE));
     256            if (EFI_ERROR (Status)) {
     257              LoadDriver (Node->FullName, (BOOLEAN)(ShellCommandLineGetFlag (Package, L"-nc") == FALSE));
    252258            } else {
    253               Status = LoadDriver(Node->FullName, (BOOLEAN)(ShellCommandLineGetFlag(Package, L"-nc")==FALSE));
     259              Status = LoadDriver (Node->FullName, (BOOLEAN)(ShellCommandLineGetFlag (Package, L"-nc") == FALSE));
    254260            }
    255261          } // for loop for multi-open
    256           if (EFI_ERROR(Status)) {
    257             ShellCloseFileMetaArg(&ListHead);
     262
     263          if (EFI_ERROR (Status)) {
     264            ShellCloseFileMetaArg (&ListHead);
    258265          } else {
    259             Status = ShellCloseFileMetaArg(&ListHead);;
     266            Status = ShellCloseFileMetaArg (&ListHead);
    260267          }
    261268        } else {
     
    263270          // no files found.
    264271          //
    265           ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_GEN_FILE_NF), gShellLevel2HiiHandle, L"load", (CHAR16*)ShellCommandLineGetRawValue(Package, ParamCount));
     272          ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_GEN_FILE_NF), gShellLevel2HiiHandle, L"load", (CHAR16 *)ShellCommandLineGetRawValue (Package, ParamCount));
    266273          ShellStatus = SHELL_NOT_FOUND;
    267274        }
     
    275282  }
    276283
    277   if (EFI_ERROR(Status) && ShellStatus == SHELL_SUCCESS) {
     284  if (EFI_ERROR (Status) && (ShellStatus == SHELL_SUCCESS)) {
    278285    ShellStatus = SHELL_DEVICE_ERROR;
    279286  }
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