**/\r
EFI_STATUS\r
LoadEfiDriversFromRomImage (\r
- VOID *RomBar,\r
- UINTN RomSize,\r
- CONST CHAR16 *FileName\r
+ VOID *RomBar,\r
+ UINTN RomSize,\r
+ CONST CHAR16 *FileName\r
);\r
\r
-STATIC CONST SHELL_PARAM_ITEM ParamList[] = {\r
- {L"-nc", TypeFlag},\r
- {NULL, TypeMax}\r
- };\r
+STATIC CONST SHELL_PARAM_ITEM ParamList[] = {\r
+ { L"-nc", TypeFlag },\r
+ { NULL, TypeMax }\r
+};\r
\r
/**\r
Function for 'loadpcirom' command.\r
IN EFI_SYSTEM_TABLE *SystemTable\r
)\r
{\r
- EFI_SHELL_FILE_INFO *FileList;\r
- UINTN SourceSize;\r
- UINT8 *File1Buffer;\r
- EFI_STATUS Status;\r
- LIST_ENTRY *Package;\r
- CHAR16 *ProblemParam;\r
- SHELL_STATUS ShellStatus;\r
- BOOLEAN Connect;\r
- CONST CHAR16 *Param;\r
- UINTN ParamCount;\r
- EFI_SHELL_FILE_INFO *Node;\r
+ EFI_SHELL_FILE_INFO *FileList;\r
+ UINTN SourceSize;\r
+ UINT8 *File1Buffer;\r
+ EFI_STATUS Status;\r
+ LIST_ENTRY *Package;\r
+ CHAR16 *ProblemParam;\r
+ SHELL_STATUS ShellStatus;\r
+ BOOLEAN Connect;\r
+ CONST CHAR16 *Param;\r
+ UINTN ParamCount;\r
+ EFI_SHELL_FILE_INFO *Node;\r
+\r
//\r
// Local variable initializations\r
//\r
ShellStatus = SHELL_SUCCESS;\r
FileList = NULL;\r
\r
-\r
//\r
// verify number of arguments\r
//\r
Status = ShellCommandLineParse (ParamList, &Package, &ProblemParam, TRUE);\r
- if (EFI_ERROR(Status)) {\r
- if (Status == EFI_VOLUME_CORRUPTED && ProblemParam != NULL) {\r
- ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_GEN_PROBLEM), gShellDebug1HiiHandle, L"loadpcirom", ProblemParam);\r
- FreePool(ProblemParam);\r
+ if (EFI_ERROR (Status)) {\r
+ if ((Status == EFI_VOLUME_CORRUPTED) && (ProblemParam != NULL)) {\r
+ ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_GEN_PROBLEM), gShellDebug1HiiHandle, L"loadpcirom", ProblemParam);\r
+ FreePool (ProblemParam);\r
ShellStatus = SHELL_INVALID_PARAMETER;\r
} else {\r
- ASSERT(FALSE);\r
+ ASSERT (FALSE);\r
}\r
} else {\r
- if (ShellCommandLineGetCount(Package) < 2) {\r
- ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_GEN_TOO_FEW), gShellDebug1HiiHandle, L"loadpcirom");\r
+ if (ShellCommandLineGetCount (Package) < 2) {\r
+ ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_GEN_TOO_FEW), gShellDebug1HiiHandle, L"loadpcirom");\r
ShellStatus = SHELL_INVALID_PARAMETER;\r
} else {\r
- if (ShellCommandLineGetFlag(Package, L"-nc")) {\r
+ if (ShellCommandLineGetFlag (Package, L"-nc")) {\r
Connect = FALSE;\r
} else {\r
Connect = TRUE;\r
// get a list with each file specified by parameters\r
// if parameter is a directory then add all the files below it to the list\r
//\r
- for ( ParamCount = 1, Param = ShellCommandLineGetRawValue(Package, ParamCount)\r
- ; Param != NULL\r
- ; ParamCount++, Param = ShellCommandLineGetRawValue(Package, ParamCount)\r
- ){\r
- Status = ShellOpenFileMetaArg((CHAR16*)Param, EFI_FILE_MODE_WRITE|EFI_FILE_MODE_READ, &FileList);\r
- if (EFI_ERROR(Status)) {\r
- ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_GEN_FILE_OPEN_FAIL), gShellDebug1HiiHandle, L"loadpcirom", Param);\r
+ for ( ParamCount = 1, Param = ShellCommandLineGetRawValue (Package, ParamCount)\r
+ ; Param != NULL\r
+ ; ParamCount++, Param = ShellCommandLineGetRawValue (Package, ParamCount)\r
+ )\r
+ {\r
+ Status = ShellOpenFileMetaArg ((CHAR16 *)Param, EFI_FILE_MODE_WRITE|EFI_FILE_MODE_READ, &FileList);\r
+ if (EFI_ERROR (Status)) {\r
+ ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_GEN_FILE_OPEN_FAIL), gShellDebug1HiiHandle, L"loadpcirom", Param);\r
ShellStatus = SHELL_ACCESS_DENIED;\r
break;\r
}\r
}\r
- if (ShellStatus == SHELL_SUCCESS && FileList != NULL) {\r
+\r
+ if ((ShellStatus == SHELL_SUCCESS) && (FileList != NULL)) {\r
//\r
// loop through the list and make sure we are not aborting...\r
//\r
- for ( Node = (EFI_SHELL_FILE_INFO*)GetFirstNode(&FileList->Link)\r
- ; !IsNull(&FileList->Link, &Node->Link) && !ShellGetExecutionBreakFlag()\r
- ; Node = (EFI_SHELL_FILE_INFO*)GetNextNode(&FileList->Link, &Node->Link)\r
- ){\r
- if (EFI_ERROR(Node->Status)){\r
- ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_GEN_FILE_OPEN_FAIL), gShellDebug1HiiHandle, L"loadpcirom", Node->FullName);\r
+ for ( Node = (EFI_SHELL_FILE_INFO *)GetFirstNode (&FileList->Link)\r
+ ; !IsNull (&FileList->Link, &Node->Link) && !ShellGetExecutionBreakFlag ()\r
+ ; Node = (EFI_SHELL_FILE_INFO *)GetNextNode (&FileList->Link, &Node->Link)\r
+ )\r
+ {\r
+ if (EFI_ERROR (Node->Status)) {\r
+ ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_GEN_FILE_OPEN_FAIL), gShellDebug1HiiHandle, L"loadpcirom", Node->FullName);\r
ShellStatus = SHELL_INVALID_PARAMETER;\r
continue;\r
}\r
- if (FileHandleIsDirectory(Node->Handle) == EFI_SUCCESS) {\r
- ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_FILE_NOT_DIR), gShellDebug1HiiHandle, L"loadpcirom", Node->FullName);\r
+\r
+ if (FileHandleIsDirectory (Node->Handle) == EFI_SUCCESS) {\r
+ ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_FILE_NOT_DIR), gShellDebug1HiiHandle, L"loadpcirom", Node->FullName);\r
ShellStatus = SHELL_INVALID_PARAMETER;\r
continue;\r
}\r
- SourceSize = (UINTN) Node->Info->FileSize;\r
+\r
+ SourceSize = (UINTN)Node->Info->FileSize;\r
File1Buffer = AllocateZeroPool (SourceSize);\r
if (File1Buffer == NULL) {\r
ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_GEN_OUT_MEM), gShellDebug1HiiHandle, L"loadpcirom");\r
ShellStatus = SHELL_OUT_OF_RESOURCES;\r
continue;\r
}\r
- Status = gEfiShellProtocol->ReadFile(Node->Handle, &SourceSize, File1Buffer);\r
- if (EFI_ERROR(Status)) {\r
- ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_FILE_READ_FAIL), gShellDebug1HiiHandle, L"loadpcirom", Node->FullName);\r
+\r
+ Status = gEfiShellProtocol->ReadFile (Node->Handle, &SourceSize, File1Buffer);\r
+ if (EFI_ERROR (Status)) {\r
+ ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_FILE_READ_FAIL), gShellDebug1HiiHandle, L"loadpcirom", Node->FullName);\r
ShellStatus = SHELL_INVALID_PARAMETER;\r
} else {\r
Status = LoadEfiDriversFromRomImage (\r
- File1Buffer,\r
- SourceSize,\r
- Node->FullName\r
- );\r
+ File1Buffer,\r
+ SourceSize,\r
+ Node->FullName\r
+ );\r
\r
- ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_LOAD_PCI_ROM_RES), gShellDebug1HiiHandle, Node->FullName, Status);\r
+ ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_LOAD_PCI_ROM_RES), gShellDebug1HiiHandle, Node->FullName, Status);\r
}\r
- FreePool(File1Buffer);\r
+\r
+ FreePool (File1Buffer);\r
}\r
} else if (ShellStatus == SHELL_SUCCESS) {\r
- ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_FILE_NOT_SPEC), gShellDebug1HiiHandle, "loadpcirom");\r
+ ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_FILE_NOT_SPEC), gShellDebug1HiiHandle, "loadpcirom");\r
ShellStatus = SHELL_NOT_FOUND;\r
}\r
- if (FileList != NULL && !IsListEmpty(&FileList->Link)) {\r
- Status = ShellCloseFileMetaArg(&FileList);\r
+\r
+ if ((FileList != NULL) && !IsListEmpty (&FileList->Link)) {\r
+ Status = ShellCloseFileMetaArg (&FileList);\r
}\r
+\r
FileList = NULL;\r
\r
if (Connect) {\r
**/\r
EFI_STATUS\r
LoadEfiDriversFromRomImage (\r
- VOID *RomBar,\r
- UINTN RomSize,\r
- CONST CHAR16 *FileName\r
+ VOID *RomBar,\r
+ UINTN RomSize,\r
+ CONST CHAR16 *FileName\r
)\r
\r
{\r
EFI_DECOMPRESS_PROTOCOL *Decompress;\r
UINT32 InitializationSize;\r
\r
- ImageIndex = 0;\r
- ReturnStatus = EFI_NOT_FOUND;\r
- RomBarOffset = (UINTN) RomBar;\r
+ ImageIndex = 0;\r
+ ReturnStatus = EFI_NOT_FOUND;\r
+ RomBarOffset = (UINTN)RomBar;\r
\r
do {\r
-\r
- EfiRomHeader = (EFI_PCI_EXPANSION_ROM_HEADER *) (UINTN) RomBarOffset;\r
+ EfiRomHeader = (EFI_PCI_EXPANSION_ROM_HEADER *)(UINTN)RomBarOffset;\r
\r
if (EfiRomHeader->Signature != PCI_EXPANSION_ROM_HEADER_SIGNATURE) {\r
- ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_LOADPCIROM_CORRUPT), gShellDebug1HiiHandle, L"loadpcirom", FileName, ImageIndex);\r
-// PrintToken (STRING_TOKEN (STR_LOADPCIROM_IMAGE_CORRUPT), HiiHandle, ImageIndex);\r
+ ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_LOADPCIROM_CORRUPT), gShellDebug1HiiHandle, L"loadpcirom", FileName, ImageIndex);\r
+ // PrintToken (STRING_TOKEN (STR_LOADPCIROM_IMAGE_CORRUPT), HiiHandle, ImageIndex);\r
return ReturnStatus;\r
}\r
\r
// If the pointer to the PCI Data Structure is invalid, no further images can be located.\r
// The PCI Data Structure must be DWORD aligned.\r
//\r
- if (EfiRomHeader->PcirOffset == 0 ||\r
- (EfiRomHeader->PcirOffset & 3) != 0 ||\r
- RomBarOffset - (UINTN)RomBar + EfiRomHeader->PcirOffset + sizeof (PCI_DATA_STRUCTURE) > RomSize) {\r
+ if ((EfiRomHeader->PcirOffset == 0) ||\r
+ ((EfiRomHeader->PcirOffset & 3) != 0) ||\r
+ (RomBarOffset - (UINTN)RomBar + EfiRomHeader->PcirOffset + sizeof (PCI_DATA_STRUCTURE) > RomSize))\r
+ {\r
break;\r
}\r
\r
- Pcir = (PCI_DATA_STRUCTURE *) (UINTN) (RomBarOffset + EfiRomHeader->PcirOffset);\r
+ Pcir = (PCI_DATA_STRUCTURE *)(UINTN)(RomBarOffset + EfiRomHeader->PcirOffset);\r
//\r
// If a valid signature is not present in the PCI Data Structure, no further images can be located.\r
//\r
if (Pcir->Signature != PCI_DATA_STRUCTURE_SIGNATURE) {\r
break;\r
}\r
+\r
ImageSize = Pcir->ImageLength * 512;\r
if (RomBarOffset - (UINTN)RomBar + ImageSize > RomSize) {\r
break;\r
if ((Pcir->CodeType == PCI_CODE_TYPE_EFI_IMAGE) &&\r
(EfiRomHeader->EfiSignature == EFI_PCI_EXPANSION_ROM_HEADER_EFISIGNATURE) &&\r
((EfiRomHeader->EfiSubsystem == EFI_IMAGE_SUBSYSTEM_EFI_BOOT_SERVICE_DRIVER) ||\r
- (EfiRomHeader->EfiSubsystem == EFI_IMAGE_SUBSYSTEM_EFI_RUNTIME_DRIVER))) {\r
-\r
- ImageOffset = EfiRomHeader->EfiImageHeaderOffset;\r
- InitializationSize = EfiRomHeader->InitializationSize * 512;\r
-\r
- if (InitializationSize <= ImageSize && ImageOffset < InitializationSize) {\r
+ (EfiRomHeader->EfiSubsystem == EFI_IMAGE_SUBSYSTEM_EFI_RUNTIME_DRIVER)))\r
+ {\r
+ ImageOffset = EfiRomHeader->EfiImageHeaderOffset;\r
+ InitializationSize = EfiRomHeader->InitializationSize * 512;\r
\r
- ImageBuffer = (VOID *) (UINTN) (RomBarOffset + ImageOffset);\r
+ if ((InitializationSize <= ImageSize) && (ImageOffset < InitializationSize)) {\r
+ ImageBuffer = (VOID *)(UINTN)(RomBarOffset + ImageOffset);\r
ImageLength = InitializationSize - ImageOffset;\r
DecompressedImageBuffer = NULL;\r
\r
}\r
\r
if (EfiRomHeader->CompressionType == EFI_PCI_EXPANSION_ROM_HEADER_COMPRESSED) {\r
- Status = gBS->LocateProtocol (&gEfiDecompressProtocolGuid, NULL, (VOID**)&Decompress);\r
- ASSERT_EFI_ERROR(Status);\r
+ Status = gBS->LocateProtocol (&gEfiDecompressProtocolGuid, NULL, (VOID **)&Decompress);\r
+ ASSERT_EFI_ERROR (Status);\r
if (EFI_ERROR (Status)) {\r
SkipImage = TRUE;\r
} else {\r
SkipImage = TRUE;\r
- Status = Decompress->GetInfo (\r
- Decompress,\r
- ImageBuffer,\r
- ImageLength,\r
- &DestinationSize,\r
- &ScratchSize\r
- );\r
+ Status = Decompress->GetInfo (\r
+ Decompress,\r
+ ImageBuffer,\r
+ ImageLength,\r
+ &DestinationSize,\r
+ &ScratchSize\r
+ );\r
if (!EFI_ERROR (Status)) {\r
DecompressedImageBuffer = AllocateZeroPool (DestinationSize);\r
if (ImageBuffer != NULL) {\r
Scratch = AllocateZeroPool (ScratchSize);\r
if (Scratch != NULL) {\r
Status = Decompress->Decompress (\r
- Decompress,\r
- ImageBuffer,\r
- ImageLength,\r
- DecompressedImageBuffer,\r
- DestinationSize,\r
- Scratch,\r
- ScratchSize\r
- );\r
+ Decompress,\r
+ ImageBuffer,\r
+ ImageLength,\r
+ DecompressedImageBuffer,\r
+ DestinationSize,\r
+ Scratch,\r
+ ScratchSize\r
+ );\r
if (!EFI_ERROR (Status)) {\r
ImageBuffer = DecompressedImageBuffer;\r
ImageLength = DestinationSize;\r
FilePath = FileDevicePath (NULL, RomFileName);\r
\r
Status = gBS->LoadImage (\r
- TRUE,\r
- gImageHandle,\r
- FilePath,\r
- ImageBuffer,\r
- ImageLength,\r
- &ImageHandle\r
- );\r
+ TRUE,\r
+ gImageHandle,\r
+ FilePath,\r
+ ImageBuffer,\r
+ ImageLength,\r
+ &ImageHandle\r
+ );\r
if (EFI_ERROR (Status)) {\r
//\r
// With EFI_SECURITY_VIOLATION retval, the Image was loaded and an ImageHandle was created\r
if (Status == EFI_SECURITY_VIOLATION) {\r
gBS->UnloadImage (ImageHandle);\r
}\r
- ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_LOADPCIROM_LOAD_FAIL), gShellDebug1HiiHandle, L"loadpcirom", FileName, ImageIndex);\r
-// PrintToken (STRING_TOKEN (STR_LOADPCIROM_LOAD_IMAGE_ERROR), HiiHandle, ImageIndex, Status);\r
+\r
+ ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_LOADPCIROM_LOAD_FAIL), gShellDebug1HiiHandle, L"loadpcirom", FileName, ImageIndex);\r
+ // PrintToken (STRING_TOKEN (STR_LOADPCIROM_LOAD_IMAGE_ERROR), HiiHandle, ImageIndex, Status);\r
} else {\r
Status = gBS->StartImage (ImageHandle, NULL, NULL);\r
if (EFI_ERROR (Status)) {\r
- ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_LOADPCIROM_START_FAIL), gShellDebug1HiiHandle, L"loadpcirom", FileName, ImageIndex);\r
-// PrintToken (STRING_TOKEN (STR_LOADPCIROM_START_IMAGE), HiiHandle, ImageIndex, Status);\r
+ ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_LOADPCIROM_START_FAIL), gShellDebug1HiiHandle, L"loadpcirom", FileName, ImageIndex);\r
+ // PrintToken (STRING_TOKEN (STR_LOADPCIROM_START_IMAGE), HiiHandle, ImageIndex, Status);\r
} else {\r
ReturnStatus = Status;\r
}\r
if (DecompressedImageBuffer != NULL) {\r
FreePool (DecompressedImageBuffer);\r
}\r
-\r
}\r
}\r
\r
RomBarOffset = RomBarOffset + ImageSize;\r
ImageIndex++;\r
- } while (((Pcir->Indicator & 0x80) == 0x00) && ((RomBarOffset - (UINTN) RomBar) < RomSize));\r
+ } while (((Pcir->Indicator & 0x80) == 0x00) && ((RomBarOffset - (UINTN)RomBar) < RomSize));\r
\r
return ReturnStatus;\r
}\r
Status = EFI_ABORTED;\r
break;\r
}\r
+\r
gBS->ConnectController (HandleBuffer[Index], NULL, NULL, TRUE);\r
}\r
\r
if (HandleBuffer != NULL) {\r
FreePool (HandleBuffer);\r
}\r
+\r
return Status;\r
}\r