/** @file\r
Main file for LoadPciRom shell Debug1 function.\r
\r
- Copyright (c) 2005 - 2012, Intel Corporation. All rights reserved.<BR>\r
+ (C) Copyright 2015 Hewlett-Packard Development Company, L.P.<BR>\r
+ Copyright (c) 2005 - 2016, 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
@retval EFI_ABORTED The abort mechanism was received.\r
**/\r
EFI_STATUS\r
-EFIAPI\r
LoadPciRomConnectAllDriversToAllControllers (\r
VOID\r
);\r
@retval Other value Unknown error.\r
**/\r
EFI_STATUS\r
-EFIAPI\r
LoadEfiDriversFromRomImage (\r
VOID *RomBar,\r
UINTN RomSize,\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, ProblemParam);\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
}\r
} else {\r
if (ShellCommandLineGetCount(Package) < 2) {\r
- ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_GEN_TOO_FEW), gShellDebug1HiiHandle);\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
){\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_FILE_OPEN_FAIL), gShellDebug1HiiHandle, Param, 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
; 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_FILE_OPEN_FAIL), gShellDebug1HiiHandle, Node->FullName);\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, Node->FullName);\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
File1Buffer = AllocateZeroPool (SourceSize);\r
- ASSERT(File1Buffer != NULL);\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_READ_FAIL), gShellDebug1HiiHandle, Node->FullName);\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
FreePool(File1Buffer);\r
}\r
} else if (ShellStatus == SHELL_SUCCESS) {\r
- ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_FILE_NOT_SPEC), gShellDebug1HiiHandle);\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
@retval Other value Unknown error.\r
**/\r
EFI_STATUS\r
-EFIAPI\r
LoadEfiDriversFromRomImage (\r
VOID *RomBar,\r
UINTN RomSize,\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, FileName, 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
&ImageHandle\r
);\r
if (EFI_ERROR (Status)) {\r
- ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_LOADPCIROM_LOAD_FAIL), gShellDebug1HiiHandle, FileName, ImageIndex, Status);\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, FileName, 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
@retval EFI_ABORTED The abort mechanism was received.\r
**/\r
EFI_STATUS\r
-EFIAPI\r
LoadPciRomConnectAllDriversToAllControllers (\r
VOID\r
)\r
-\r
{\r
EFI_STATUS Status;\r
- UINTN AllHandleCount;\r
- EFI_HANDLE *AllHandleBuffer;\r
- UINTN Index;\r
UINTN HandleCount;\r
EFI_HANDLE *HandleBuffer;\r
- UINTN *HandleType;\r
- UINTN HandleIndex;\r
- BOOLEAN Parent;\r
- BOOLEAN Device;\r
-\r
- Status = gBS->LocateHandleBuffer(\r
- AllHandles,\r
- NULL,\r
- NULL,\r
- &AllHandleCount,\r
- &AllHandleBuffer\r
- );\r
+ UINTN Index;\r
+\r
+ Status = gBS->LocateHandleBuffer (\r
+ AllHandles,\r
+ NULL,\r
+ NULL,\r
+ &HandleCount,\r
+ &HandleBuffer\r
+ );\r
if (EFI_ERROR (Status)) {\r
return Status;\r
}\r
\r
- for (Index = 0; Index < AllHandleCount; Index++) {\r
+ for (Index = 0; Index < HandleCount; Index++) {\r
if (ShellGetExecutionBreakFlag ()) {\r
Status = EFI_ABORTED;\r
- goto Done;\r
- }\r
- //\r
- // Scan the handle database\r
- //\r
- Status = ParseHandleDatabaseByRelationshipWithType(\r
- NULL,\r
- AllHandleBuffer[Index],\r
- &HandleCount,\r
- &HandleBuffer,\r
- &HandleType\r
- );\r
-/*\r
- Status = LibScanHandleDatabase (\r
- NULL,\r
- NULL,\r
- AllHandleBuffer[Index],\r
- NULL,\r
- &HandleCount,\r
- &HandleBuffer,\r
- &HandleType\r
- );\r
-*/\r
- if (EFI_ERROR (Status)) {\r
- goto Done;\r
- }\r
-\r
- Device = TRUE;\r
- if ((HandleType[Index] & HR_DRIVER_BINDING_HANDLE) != 0) {\r
- Device = FALSE;\r
- }\r
-\r
- if ((HandleType[Index] & HR_IMAGE_HANDLE) != 0) {\r
- Device = FALSE;\r
- }\r
-\r
- if (Device) {\r
- Parent = FALSE;\r
- for (HandleIndex = 0; HandleIndex < HandleCount; HandleIndex++) {\r
- if ((HandleType[HandleIndex] & HR_PARENT_HANDLE) != 0) {\r
- Parent = TRUE;\r
- }\r
- }\r
-\r
- if (!Parent) {\r
- if ((HandleType[Index] & HR_DEVICE_HANDLE) != 0) {\r
- Status = gBS->ConnectController (\r
- AllHandleBuffer[Index],\r
- NULL,\r
- NULL,\r
- TRUE\r
- );\r
- }\r
- }\r
+ break;\r
}\r
+ gBS->ConnectController (HandleBuffer[Index], NULL, NULL, TRUE);\r
+ }\r
\r
+ if (HandleBuffer != NULL) {\r
FreePool (HandleBuffer);\r
- FreePool (HandleType);\r
}\r
-\r
-Done:\r
- FreePool (AllHandleBuffer);\r
return Status;\r
}\r