From 889ac6a8b7d632c7c2dc203bd20b722b9ee57719 Mon Sep 17 00:00:00 2001 From: Ronald Cron Date: Tue, 29 Jul 2014 14:15:15 +0000 Subject: ArmPlatformPkg/Bds: Got rid of RequestBootType argument Removed "RequestBootType" argument of the "*CreateDevicePathNode()" and "*UpdateDevicePathNode()" functions. A boolean field "Request BootType" has been added to the BDS_LOAD_OPTION_SUPPORT structure and is used by the "BootMenuAddBootOption()" and "BootMenuUpdateBootOption()" functions instead. Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Ronald Cron Reviewed-By: Olivier Martin git-svn-id: https://svn.code.sf.net/p/edk2/code/trunk/edk2@15713 6f19259b-4bc3-4df7-8a09-765794883524 --- ArmPlatformPkg/Bds/BdsInternal.h | 8 +++-- ArmPlatformPkg/Bds/BootMenu.c | 20 +++++------ ArmPlatformPkg/Bds/BootOptionSupport.c | 63 +++++++++++++--------------------- 3 files changed, 38 insertions(+), 53 deletions(-) diff --git a/ArmPlatformPkg/Bds/BdsInternal.h b/ArmPlatformPkg/Bds/BdsInternal.h index d5b1b79c38..32e4b65d2b 100644 --- a/ArmPlatformPkg/Bds/BdsInternal.h +++ b/ArmPlatformPkg/Bds/BdsInternal.h @@ -102,8 +102,12 @@ typedef struct _BDS_LOAD_OPTION_SUPPORT { BDS_SUPPORTED_DEVICE_TYPE Type; EFI_STATUS (*ListDevices)(IN OUT LIST_ENTRY* BdsLoadOptionList); BOOLEAN (*IsSupported)(IN EFI_DEVICE_PATH *DevicePath); - EFI_STATUS (*CreateDevicePathNode)(IN CHAR16* FileName, OUT EFI_DEVICE_PATH_PROTOCOL **DevicePathNodes, OUT BOOLEAN *RequestBootType); - EFI_STATUS (*UpdateDevicePathNode)(IN EFI_DEVICE_PATH *OldDevicePath, IN CHAR16* FileName, OUT EFI_DEVICE_PATH_PROTOCOL** NewDevicePath, OUT BOOLEAN *RequestBootType); + EFI_STATUS (*CreateDevicePathNode)(IN CHAR16* FileName, OUT EFI_DEVICE_PATH_PROTOCOL **DevicePathNodes); + EFI_STATUS (*UpdateDevicePathNode)(IN EFI_DEVICE_PATH *OldDevicePath, IN CHAR16* FileName, OUT EFI_DEVICE_PATH_PROTOCOL** NewDevicePath); + + /// Define if the boot menu should request if the file is a EFI binary or a Linux kernel + /// Example: PXE boot always deliver a UEFI application. + BOOLEAN RequestBootType; } BDS_LOAD_OPTION_SUPPORT; #define LOAD_OPTION_ENTRY_FROM_LINK(a) BASE_CR(a, BDS_LOAD_OPTION_ENTRY, Link) diff --git a/ArmPlatformPkg/Bds/BootMenu.c b/ArmPlatformPkg/Bds/BootMenu.c index 39013cf802..065e2ee9c1 100644 --- a/ArmPlatformPkg/Bds/BootMenu.c +++ b/ArmPlatformPkg/Bds/BootMenu.c @@ -134,7 +134,6 @@ BootMenuAddBootOption ( UINTN InitrdSize; UINT8* OptionalData; UINTN OptionalDataSize; - BOOLEAN RequestBootType; Attributes = 0; SupportedBootDevice = NULL; @@ -147,8 +146,7 @@ BootMenuAddBootOption ( } // Create the specific device path node - RequestBootType = TRUE; - Status = SupportedBootDevice->Support->CreateDevicePathNode (L"EFI Application or the kernel", &DevicePathNodes, &RequestBootType); + Status = SupportedBootDevice->Support->CreateDevicePathNode (L"EFI Application or the kernel", &DevicePathNodes); if (EFI_ERROR(Status)) { Status = EFI_ABORTED; goto EXIT; @@ -160,7 +158,7 @@ BootMenuAddBootOption ( goto EXIT; } - if (RequestBootType) { + if (SupportedBootDevice->Support->RequestBootType) { Status = BootDeviceGetType (DevicePath, &BootType, &Attributes); if (EFI_ERROR(Status)) { Status = EFI_ABORTED; @@ -180,7 +178,7 @@ BootMenuAddBootOption ( if (InitrdSupport) { // Create the specific device path node - Status = SupportedBootDevice->Support->CreateDevicePathNode (L"initrd", &InitrdPathNodes, NULL); + Status = SupportedBootDevice->Support->CreateDevicePathNode (L"initrd", &InitrdPathNodes); if (EFI_ERROR(Status) && Status != EFI_NOT_FOUND) { // EFI_NOT_FOUND is returned on empty input string, but we can boot without an initrd Status = EFI_ABORTED; goto EXIT; @@ -409,7 +407,6 @@ BootMenuUpdateBootOption ( BOOLEAN InitrdSupport; UINT8* OptionalData; UINTN OptionalDataSize; - BOOLEAN RequestBootType; BOOLEAN IsPrintable; BOOLEAN IsUnicode; @@ -426,14 +423,13 @@ BootMenuUpdateBootOption ( return EFI_UNSUPPORTED; } - RequestBootType = TRUE; - Status = DeviceSupport->UpdateDevicePathNode (BootOption->FilePathList, L"EFI Application or the kernel", &DevicePath, &RequestBootType); + Status = DeviceSupport->UpdateDevicePathNode (BootOption->FilePathList, L"EFI Application or the kernel", &DevicePath); if (EFI_ERROR(Status)) { Status = EFI_ABORTED; goto EXIT; } - if (RequestBootType) { + if (DeviceSupport->RequestBootType) { Status = BootDeviceGetType (DevicePath, &BootType, &BootOption->Attributes); if (EFI_ERROR(Status)) { Status = EFI_ABORTED; @@ -468,7 +464,7 @@ BootMenuUpdateBootOption ( if (InitrdSupport) { if (InitrdSize > 0) { // Case we update the initrd device path - Status = DeviceSupport->UpdateDevicePathNode ((EFI_DEVICE_PATH*)((UINTN)(LinuxArguments + 1) + CmdLineSize), L"initrd", &InitrdPath, NULL); + Status = DeviceSupport->UpdateDevicePathNode ((EFI_DEVICE_PATH*)((UINTN)(LinuxArguments + 1) + CmdLineSize), L"initrd", &InitrdPath); if (EFI_ERROR(Status) && Status != EFI_NOT_FOUND) {// EFI_NOT_FOUND is returned on empty input string, but we can boot without an initrd Status = EFI_ABORTED; goto EXIT; @@ -477,7 +473,7 @@ BootMenuUpdateBootOption ( } else { // Case we create the initrd device path - Status = DeviceSupport->CreateDevicePathNode (L"initrd", &InitrdPathNodes, NULL); + Status = DeviceSupport->CreateDevicePathNode (L"initrd", &InitrdPathNodes); if (EFI_ERROR(Status) && Status != EFI_NOT_FOUND) { // EFI_NOT_FOUND is returned on empty input string, but we can boot without an initrd Status = EFI_ABORTED; goto EXIT; @@ -611,7 +607,7 @@ UpdateFdtPath ( } // Create the specific device path node - Status = SupportedBootDevice->Support->CreateDevicePathNode (L"FDT blob", &FdtDevicePathNodes, NULL); + Status = SupportedBootDevice->Support->CreateDevicePathNode (L"FDT blob", &FdtDevicePathNodes); if (EFI_ERROR(Status)) { Status = EFI_ABORTED; goto EXIT; diff --git a/ArmPlatformPkg/Bds/BootOptionSupport.c b/ArmPlatformPkg/Bds/BootOptionSupport.c index 8708d306f3..42ddba34a5 100644 --- a/ArmPlatformPkg/Bds/BootOptionSupport.c +++ b/ArmPlatformPkg/Bds/BootOptionSupport.c @@ -34,16 +34,14 @@ BdsLoadOptionFileSystemList ( EFI_STATUS BdsLoadOptionFileSystemCreateDevicePath ( IN CHAR16* FileName, - OUT EFI_DEVICE_PATH_PROTOCOL **DevicePathNodes, - OUT BOOLEAN *RequestBootType + OUT EFI_DEVICE_PATH_PROTOCOL **DevicePathNodes ); EFI_STATUS BdsLoadOptionFileSystemUpdateDevicePath ( IN EFI_DEVICE_PATH *OldDevicePath, IN CHAR16* FileName, - OUT EFI_DEVICE_PATH_PROTOCOL **NewDevicePath, - OUT BOOLEAN *RequestBootType + OUT EFI_DEVICE_PATH_PROTOCOL **NewDevicePath ); BOOLEAN @@ -59,16 +57,14 @@ BdsLoadOptionMemMapList ( EFI_STATUS BdsLoadOptionMemMapCreateDevicePath ( IN CHAR16* FileName, - OUT EFI_DEVICE_PATH_PROTOCOL **DevicePathNodes, - OUT BOOLEAN *RequestBootType + OUT EFI_DEVICE_PATH_PROTOCOL **DevicePathNodes ); EFI_STATUS BdsLoadOptionMemMapUpdateDevicePath ( IN EFI_DEVICE_PATH *OldDevicePath, IN CHAR16* FileName, - OUT EFI_DEVICE_PATH_PROTOCOL **NewDevicePath, - OUT BOOLEAN *RequestBootType + OUT EFI_DEVICE_PATH_PROTOCOL **NewDevicePath ); BOOLEAN @@ -84,16 +80,14 @@ BdsLoadOptionPxeList ( EFI_STATUS BdsLoadOptionPxeCreateDevicePath ( IN CHAR16* FileName, - OUT EFI_DEVICE_PATH_PROTOCOL **DevicePathNodes, - OUT BOOLEAN *RequestBootType + OUT EFI_DEVICE_PATH_PROTOCOL **DevicePathNodes ); EFI_STATUS BdsLoadOptionPxeUpdateDevicePath ( IN EFI_DEVICE_PATH *OldDevicePath, IN CHAR16* FileName, - OUT EFI_DEVICE_PATH_PROTOCOL **NewDevicePath, - OUT BOOLEAN *RequestBootType + OUT EFI_DEVICE_PATH_PROTOCOL **NewDevicePath ); BOOLEAN @@ -109,16 +103,14 @@ BdsLoadOptionTftpList ( EFI_STATUS BdsLoadOptionTftpCreateDevicePath ( IN CHAR16* FileName, - OUT EFI_DEVICE_PATH_PROTOCOL **DevicePathNodes, - OUT BOOLEAN *RequestBootType + OUT EFI_DEVICE_PATH_PROTOCOL **DevicePathNodes ); EFI_STATUS BdsLoadOptionTftpUpdateDevicePath ( IN EFI_DEVICE_PATH *OldDevicePath, IN CHAR16* FileName, - OUT EFI_DEVICE_PATH_PROTOCOL **NewDevicePath, - OUT BOOLEAN *RequestBootType + OUT EFI_DEVICE_PATH_PROTOCOL **NewDevicePath ); BOOLEAN @@ -132,28 +124,32 @@ BDS_LOAD_OPTION_SUPPORT BdsLoadOptionSupportList[] = { BdsLoadOptionFileSystemList, BdsLoadOptionFileSystemIsSupported, BdsLoadOptionFileSystemCreateDevicePath, - BdsLoadOptionFileSystemUpdateDevicePath + BdsLoadOptionFileSystemUpdateDevicePath, + TRUE }, { BDS_DEVICE_MEMMAP, BdsLoadOptionMemMapList, BdsLoadOptionMemMapIsSupported, BdsLoadOptionMemMapCreateDevicePath, - BdsLoadOptionMemMapUpdateDevicePath + BdsLoadOptionMemMapUpdateDevicePath, + TRUE }, { BDS_DEVICE_PXE, BdsLoadOptionPxeList, BdsLoadOptionPxeIsSupported, BdsLoadOptionPxeCreateDevicePath, - BdsLoadOptionPxeUpdateDevicePath + BdsLoadOptionPxeUpdateDevicePath, + FALSE }, { BDS_DEVICE_TFTP, BdsLoadOptionTftpList, BdsLoadOptionTftpIsSupported, BdsLoadOptionTftpCreateDevicePath, - BdsLoadOptionTftpUpdateDevicePath + BdsLoadOptionTftpUpdateDevicePath, + TRUE } }; @@ -384,8 +380,7 @@ BdsLoadOptionFileSystemList ( EFI_STATUS BdsLoadOptionFileSystemCreateDevicePath ( IN CHAR16* FileName, - OUT EFI_DEVICE_PATH_PROTOCOL **DevicePathNodes, - OUT BOOLEAN *RequestBootType + OUT EFI_DEVICE_PATH_PROTOCOL **DevicePathNodes ) { EFI_STATUS Status; @@ -421,8 +416,7 @@ EFI_STATUS BdsLoadOptionFileSystemUpdateDevicePath ( IN EFI_DEVICE_PATH *OldDevicePath, IN CHAR16* FileName, - OUT EFI_DEVICE_PATH_PROTOCOL **NewDevicePath, - OUT BOOLEAN *RequestBootType + OUT EFI_DEVICE_PATH_PROTOCOL **NewDevicePath ) { EFI_STATUS Status; @@ -571,8 +565,7 @@ BdsLoadOptionMemMapList ( EFI_STATUS BdsLoadOptionMemMapCreateDevicePath ( IN CHAR16* FileName, - OUT EFI_DEVICE_PATH_PROTOCOL **DevicePathNodes, - OUT BOOLEAN *RequestBootType + OUT EFI_DEVICE_PATH_PROTOCOL **DevicePathNodes ) { EFI_STATUS Status; @@ -612,8 +605,7 @@ EFI_STATUS BdsLoadOptionMemMapUpdateDevicePath ( IN EFI_DEVICE_PATH *OldDevicePath, IN CHAR16* FileName, - OUT EFI_DEVICE_PATH_PROTOCOL **NewDevicePath, - OUT BOOLEAN *RequestBootType + OUT EFI_DEVICE_PATH_PROTOCOL **NewDevicePath ) { EFI_STATUS Status; @@ -714,16 +706,12 @@ BdsLoadOptionPxeList ( EFI_STATUS BdsLoadOptionPxeCreateDevicePath ( IN CHAR16* FileName, - OUT EFI_DEVICE_PATH_PROTOCOL **DevicePathNodes, - OUT BOOLEAN *RequestBootType + OUT EFI_DEVICE_PATH_PROTOCOL **DevicePathNodes ) { *DevicePathNodes = (EFI_DEVICE_PATH_PROTOCOL *) AllocatePool (END_DEVICE_PATH_LENGTH); SetDevicePathEndNode (*DevicePathNodes); - if (RequestBootType) { - *RequestBootType = FALSE; - } return EFI_SUCCESS; } @@ -742,8 +730,7 @@ EFI_STATUS BdsLoadOptionPxeUpdateDevicePath ( IN EFI_DEVICE_PATH *OldDevicePath, IN CHAR16* FileName, - OUT EFI_DEVICE_PATH_PROTOCOL **NewDevicePath, - OUT BOOLEAN *RequestBootType + OUT EFI_DEVICE_PATH_PROTOCOL **NewDevicePath ) { // @@ -837,8 +824,7 @@ BdsLoadOptionTftpList ( EFI_STATUS BdsLoadOptionTftpCreateDevicePath ( IN CHAR16* FileName, - OUT EFI_DEVICE_PATH_PROTOCOL **DevicePathNodes, - OUT BOOLEAN *RequestBootType + OUT EFI_DEVICE_PATH_PROTOCOL **DevicePathNodes ) { EFI_STATUS Status; @@ -913,8 +899,7 @@ EFI_STATUS BdsLoadOptionTftpUpdateDevicePath ( IN EFI_DEVICE_PATH *OldDevicePath, IN CHAR16* FileName, - OUT EFI_DEVICE_PATH_PROTOCOL **NewDevicePath, - OUT BOOLEAN *RequestBootType + OUT EFI_DEVICE_PATH_PROTOCOL **NewDevicePath ) { ASSERT (0); -- cgit v1.2.3