X-Git-Url: https://git.proxmox.com/?p=mirror_edk2.git;a=blobdiff_plain;f=ArmPkg%2FLibrary%2FPlatformBootManagerLib%2FPlatformBm.c;h=2fb1a4aa4fb881a199aea5c5130acf722e7bdf16;hp=097df3e9e4503bcd1197237d7ed87cad9051f107;hb=429309e0c6b74792d679681a8edd0d5ae0ff850c;hpb=7c2a6033c149625482a18cd51b65513c8fb8fe15 diff --git a/ArmPkg/Library/PlatformBootManagerLib/PlatformBm.c b/ArmPkg/Library/PlatformBootManagerLib/PlatformBm.c index 097df3e9e4..2fb1a4aa4f 100644 --- a/ArmPkg/Library/PlatformBootManagerLib/PlatformBm.c +++ b/ArmPkg/Library/PlatformBootManagerLib/PlatformBm.c @@ -37,23 +37,23 @@ #include "PlatformBm.h" -#define DP_NODE_LEN(Type) { (UINT8)sizeof (Type), (UINT8)(sizeof (Type) >> 8) } +#define DP_NODE_LEN(Type) { (UINT8)sizeof (Type), (UINT8)(sizeof (Type) >> 8) } #pragma pack (1) typedef struct { - VENDOR_DEVICE_PATH SerialDxe; - UART_DEVICE_PATH Uart; - VENDOR_DEFINED_DEVICE_PATH TermType; - EFI_DEVICE_PATH_PROTOCOL End; + VENDOR_DEVICE_PATH SerialDxe; + UART_DEVICE_PATH Uart; + VENDOR_DEFINED_DEVICE_PATH TermType; + EFI_DEVICE_PATH_PROTOCOL End; } PLATFORM_SERIAL_CONSOLE; #pragma pack () -STATIC PLATFORM_SERIAL_CONSOLE mSerialConsole = { +STATIC PLATFORM_SERIAL_CONSOLE mSerialConsole = { // // VENDOR_DEVICE_PATH SerialDxe // { - { HARDWARE_DEVICE_PATH, HW_VENDOR_DP, DP_NODE_LEN (VENDOR_DEVICE_PATH) }, + { HARDWARE_DEVICE_PATH, HW_VENDOR_DP, DP_NODE_LEN (VENDOR_DEVICE_PATH) }, EDKII_SERIAL_PORT_LIB_VENDOR_GUID }, @@ -61,7 +61,7 @@ STATIC PLATFORM_SERIAL_CONSOLE mSerialConsole = { // UART_DEVICE_PATH Uart // { - { MESSAGING_DEVICE_PATH, MSG_UART_DP, DP_NODE_LEN (UART_DEVICE_PATH) }, + { MESSAGING_DEVICE_PATH, MSG_UART_DP, DP_NODE_LEN (UART_DEVICE_PATH) }, 0, // Reserved FixedPcdGet64 (PcdUartDefaultBaudRate), // BaudRate FixedPcdGet8 (PcdUartDefaultDataBits), // DataBits @@ -91,15 +91,14 @@ STATIC PLATFORM_SERIAL_CONSOLE mSerialConsole = { } }; - #pragma pack (1) typedef struct { - USB_CLASS_DEVICE_PATH Keyboard; - EFI_DEVICE_PATH_PROTOCOL End; + USB_CLASS_DEVICE_PATH Keyboard; + EFI_DEVICE_PATH_PROTOCOL End; } PLATFORM_USB_KEYBOARD; #pragma pack () -STATIC PLATFORM_USB_KEYBOARD mUsbKeyboard = { +STATIC PLATFORM_USB_KEYBOARD mUsbKeyboard = { // // USB_CLASS_DEVICE_PATH Keyboard // @@ -124,7 +123,6 @@ STATIC PLATFORM_USB_KEYBOARD mUsbKeyboard = { } }; - /** Check if the handle satisfies a particular condition. @@ -138,12 +136,11 @@ STATIC PLATFORM_USB_KEYBOARD mUsbKeyboard = { **/ typedef BOOLEAN -(EFIAPI *FILTER_FUNCTION) ( +(EFIAPI *FILTER_FUNCTION)( IN EFI_HANDLE Handle, IN CONST CHAR16 *ReportText ); - /** Process a handle. @@ -153,7 +150,7 @@ BOOLEAN **/ typedef VOID -(EFIAPI *CALLBACK_FUNCTION) ( +(EFIAPI *CALLBACK_FUNCTION)( IN EFI_HANDLE Handle, IN CONST CHAR16 *ReportText ); @@ -174,31 +171,41 @@ VOID STATIC VOID FilterAndProcess ( - IN EFI_GUID *ProtocolGuid, - IN FILTER_FUNCTION Filter OPTIONAL, - IN CALLBACK_FUNCTION Process + IN EFI_GUID *ProtocolGuid, + IN FILTER_FUNCTION Filter OPTIONAL, + IN CALLBACK_FUNCTION Process ) { - EFI_STATUS Status; - EFI_HANDLE *Handles; - UINTN NoHandles; - UINTN Idx; - - Status = gBS->LocateHandleBuffer (ByProtocol, ProtocolGuid, - NULL /* SearchKey */, &NoHandles, &Handles); + EFI_STATUS Status; + EFI_HANDLE *Handles; + UINTN NoHandles; + UINTN Idx; + + Status = gBS->LocateHandleBuffer ( + ByProtocol, + ProtocolGuid, + NULL /* SearchKey */, + &NoHandles, + &Handles + ); if (EFI_ERROR (Status)) { // // This is not an error, just an informative condition. // - DEBUG ((DEBUG_VERBOSE, "%a: %g: %r\n", __FUNCTION__, ProtocolGuid, - Status)); + DEBUG (( + DEBUG_VERBOSE, + "%a: %g: %r\n", + __FUNCTION__, + ProtocolGuid, + Status + )); return; } ASSERT (NoHandles > 0); for (Idx = 0; Idx < NoHandles; ++Idx) { - CHAR16 *DevicePathText; - STATIC CHAR16 Fallback[] = L""; + CHAR16 *DevicePathText; + STATIC CHAR16 Fallback[] = L""; // // The ConvertDevicePathToText() function handles NULL input transparently. @@ -212,7 +219,7 @@ FilterAndProcess ( DevicePathText = Fallback; } - if (Filter == NULL || Filter (Handles[Idx], DevicePathText)) { + if ((Filter == NULL) || Filter (Handles[Idx], DevicePathText)) { Process (Handles[Idx], DevicePathText); } @@ -220,10 +227,10 @@ FilterAndProcess ( FreePool (DevicePathText); } } + gBS->FreePool (Handles); } - /** This FILTER_FUNCTION checks if a handle corresponds to a PCI display device. **/ @@ -231,16 +238,19 @@ STATIC BOOLEAN EFIAPI IsPciDisplay ( - IN EFI_HANDLE Handle, - IN CONST CHAR16 *ReportText + IN EFI_HANDLE Handle, + IN CONST CHAR16 *ReportText ) { - EFI_STATUS Status; - EFI_PCI_IO_PROTOCOL *PciIo; - PCI_TYPE00 Pci; + EFI_STATUS Status; + EFI_PCI_IO_PROTOCOL *PciIo; + PCI_TYPE00 Pci; - Status = gBS->HandleProtocol (Handle, &gEfiPciIoProtocolGuid, - (VOID**)&PciIo); + Status = gBS->HandleProtocol ( + Handle, + &gEfiPciIoProtocolGuid, + (VOID **)&PciIo + ); if (EFI_ERROR (Status)) { // // This is not an error worth reporting. @@ -248,8 +258,13 @@ IsPciDisplay ( return FALSE; } - Status = PciIo->Pci.Read (PciIo, EfiPciIoWidthUint32, 0 /* Offset */, - sizeof Pci / sizeof (UINT32), &Pci); + Status = PciIo->Pci.Read ( + PciIo, + EfiPciIoWidthUint32, + 0 /* Offset */, + sizeof Pci / sizeof (UINT32), + &Pci + ); if (EFI_ERROR (Status)) { DEBUG ((DEBUG_ERROR, "%a: %s: %r\n", __FUNCTION__, ReportText, Status)); return FALSE; @@ -258,7 +273,6 @@ IsPciDisplay ( return IS_PCI_DISPLAY (&Pci); } - /** This FILTER_FUNCTION checks if a handle corresponds to a non-discoverable USB host controller. @@ -267,29 +281,32 @@ STATIC BOOLEAN EFIAPI IsUsbHost ( - IN EFI_HANDLE Handle, - IN CONST CHAR16 *ReportText + IN EFI_HANDLE Handle, + IN CONST CHAR16 *ReportText ) { - NON_DISCOVERABLE_DEVICE *Device; - EFI_STATUS Status; + NON_DISCOVERABLE_DEVICE *Device; + EFI_STATUS Status; - Status = gBS->HandleProtocol (Handle, + Status = gBS->HandleProtocol ( + Handle, &gEdkiiNonDiscoverableDeviceProtocolGuid, - (VOID **)&Device); + (VOID **)&Device + ); if (EFI_ERROR (Status)) { return FALSE; } if (CompareGuid (Device->Type, &gEdkiiNonDiscoverableUhciDeviceGuid) || CompareGuid (Device->Type, &gEdkiiNonDiscoverableEhciDeviceGuid) || - CompareGuid (Device->Type, &gEdkiiNonDiscoverableXhciDeviceGuid)) { + CompareGuid (Device->Type, &gEdkiiNonDiscoverableXhciDeviceGuid)) + { return TRUE; } + return FALSE; } - /** This CALLBACK_FUNCTION attempts to connect a handle non-recursively, asking the matching driver to produce all first-level child handles. @@ -298,11 +315,11 @@ STATIC VOID EFIAPI Connect ( - IN EFI_HANDLE Handle, - IN CONST CHAR16 *ReportText + IN EFI_HANDLE Handle, + IN CONST CHAR16 *ReportText ) { - EFI_STATUS Status; + EFI_STATUS Status; Status = gBS->ConnectController ( Handle, // ControllerHandle @@ -310,11 +327,15 @@ Connect ( NULL, // RemainingDevicePath -- produce all children FALSE // Recursive ); - DEBUG ((EFI_ERROR (Status) ? DEBUG_ERROR : DEBUG_VERBOSE, "%a: %s: %r\n", - __FUNCTION__, ReportText, Status)); + DEBUG (( + EFI_ERROR (Status) ? DEBUG_ERROR : DEBUG_VERBOSE, + "%a: %s: %r\n", + __FUNCTION__, + ReportText, + Status + )); } - /** This CALLBACK_FUNCTION retrieves the EFI_DEVICE_PATH_PROTOCOL from the handle, and adds it to ConOut and ErrOut. @@ -323,60 +344,79 @@ STATIC VOID EFIAPI AddOutput ( - IN EFI_HANDLE Handle, - IN CONST CHAR16 *ReportText + IN EFI_HANDLE Handle, + IN CONST CHAR16 *ReportText ) { - EFI_STATUS Status; - EFI_DEVICE_PATH_PROTOCOL *DevicePath; + EFI_STATUS Status; + EFI_DEVICE_PATH_PROTOCOL *DevicePath; DevicePath = DevicePathFromHandle (Handle); if (DevicePath == NULL) { - DEBUG ((DEBUG_ERROR, "%a: %s: handle %p: device path not found\n", - __FUNCTION__, ReportText, Handle)); + DEBUG (( + DEBUG_ERROR, + "%a: %s: handle %p: device path not found\n", + __FUNCTION__, + ReportText, + Handle + )); return; } Status = EfiBootManagerUpdateConsoleVariable (ConOut, DevicePath, NULL); if (EFI_ERROR (Status)) { - DEBUG ((DEBUG_ERROR, "%a: %s: adding to ConOut: %r\n", __FUNCTION__, - ReportText, Status)); + DEBUG (( + DEBUG_ERROR, + "%a: %s: adding to ConOut: %r\n", + __FUNCTION__, + ReportText, + Status + )); return; } Status = EfiBootManagerUpdateConsoleVariable (ErrOut, DevicePath, NULL); if (EFI_ERROR (Status)) { - DEBUG ((DEBUG_ERROR, "%a: %s: adding to ErrOut: %r\n", __FUNCTION__, - ReportText, Status)); + DEBUG (( + DEBUG_ERROR, + "%a: %s: adding to ErrOut: %r\n", + __FUNCTION__, + ReportText, + Status + )); return; } - DEBUG ((DEBUG_VERBOSE, "%a: %s: added to ConOut and ErrOut\n", __FUNCTION__, - ReportText)); + DEBUG (( + DEBUG_VERBOSE, + "%a: %s: added to ConOut and ErrOut\n", + __FUNCTION__, + ReportText + )); } STATIC VOID PlatformRegisterFvBootOption ( - CONST EFI_GUID *FileGuid, - CHAR16 *Description, - UINT32 Attributes, - EFI_INPUT_KEY *Key + CONST EFI_GUID *FileGuid, + CHAR16 *Description, + UINT32 Attributes, + EFI_INPUT_KEY *Key ) { - EFI_STATUS Status; - INTN OptionIndex; - EFI_BOOT_MANAGER_LOAD_OPTION NewOption; - EFI_BOOT_MANAGER_LOAD_OPTION *BootOptions; - UINTN BootOptionCount; - MEDIA_FW_VOL_FILEPATH_DEVICE_PATH FileNode; - EFI_LOADED_IMAGE_PROTOCOL *LoadedImage; - EFI_DEVICE_PATH_PROTOCOL *DevicePath; + EFI_STATUS Status; + INTN OptionIndex; + EFI_BOOT_MANAGER_LOAD_OPTION NewOption; + EFI_BOOT_MANAGER_LOAD_OPTION *BootOptions; + UINTN BootOptionCount; + MEDIA_FW_VOL_FILEPATH_DEVICE_PATH FileNode; + EFI_LOADED_IMAGE_PROTOCOL *LoadedImage; + EFI_DEVICE_PATH_PROTOCOL *DevicePath; Status = gBS->HandleProtocol ( gImageHandle, &gEfiLoadedImageProtocolGuid, - (VOID **) &LoadedImage + (VOID **)&LoadedImage ); ASSERT_EFI_ERROR (Status); @@ -385,7 +425,7 @@ PlatformRegisterFvBootOption ( ASSERT (DevicePath != NULL); DevicePath = AppendDevicePathNode ( DevicePath, - (EFI_DEVICE_PATH_PROTOCOL *) &FileNode + (EFI_DEVICE_PATH_PROTOCOL *)&FileNode ); ASSERT (DevicePath != NULL); @@ -403,25 +443,33 @@ PlatformRegisterFvBootOption ( FreePool (DevicePath); BootOptions = EfiBootManagerGetLoadOptions ( - &BootOptionCount, LoadOptionTypeBoot + &BootOptionCount, + LoadOptionTypeBoot ); OptionIndex = EfiBootManagerFindLoadOption ( - &NewOption, BootOptions, BootOptionCount + &NewOption, + BootOptions, + BootOptionCount ); if (OptionIndex == -1) { Status = EfiBootManagerAddLoadOptionVariable (&NewOption, MAX_UINTN); ASSERT_EFI_ERROR (Status); - Status = EfiBootManagerAddKeyOptionVariable (NULL, - (UINT16)NewOption.OptionNumber, 0, Key, NULL); + Status = EfiBootManagerAddKeyOptionVariable ( + NULL, + (UINT16)NewOption.OptionNumber, + 0, + Key, + NULL + ); ASSERT (Status == EFI_SUCCESS || Status == EFI_ALREADY_STARTED); } + EfiBootManagerFreeLoadOption (&NewOption); EfiBootManagerFreeLoadOptions (BootOptions, BootOptionCount); } - STATIC VOID GetPlatformOptions ( @@ -437,11 +485,15 @@ GetPlatformOptions ( UINTN Index; UINTN BootCount; - Status = gBS->LocateProtocol (&gPlatformBootManagerProtocolGuid, NULL, - (VOID **)&PlatformBootManager); + Status = gBS->LocateProtocol ( + &gPlatformBootManagerProtocolGuid, + NULL, + (VOID **)&PlatformBootManager + ); if (EFI_ERROR (Status)) { return; } + Status = PlatformBootManager->GetPlatformBootOptionsAndKeys ( &BootCount, &BootOptions, @@ -450,6 +502,7 @@ GetPlatformOptions ( if (EFI_ERROR (Status)) { return; } + // // Fetch the existent boot options. If there are none, CurrentBootCount // will be zeroed. @@ -462,8 +515,8 @@ GetPlatformOptions ( // Process the platform boot options. // for (Index = 0; Index < BootCount; Index++) { - INTN Match; - UINTN BootOptionNumber; + INTN Match; + UINTN BootOptionNumber; // // If there are any preexistent boot options, and the subject platform boot @@ -491,10 +544,16 @@ GetPlatformOptions ( MAX_UINTN ); if (EFI_ERROR (Status)) { - DEBUG ((DEBUG_ERROR, "%a: failed to register \"%s\": %r\n", - __FUNCTION__, BootOptions[Index].Description, Status)); + DEBUG (( + DEBUG_ERROR, + "%a: failed to register \"%s\": %r\n", + __FUNCTION__, + BootOptions[Index].Description, + Status + )); continue; } + BootOptionNumber = BootOptions[Index].OptionNumber; } @@ -513,10 +572,16 @@ GetPlatformOptions ( NULL ); if (EFI_ERROR (Status)) { - DEBUG ((DEBUG_ERROR, "%a: failed to register hotkey for \"%s\": %r\n", - __FUNCTION__, BootOptions[Index].Description, Status)); + DEBUG (( + DEBUG_ERROR, + "%a: failed to register hotkey for \"%s\": %r\n", + __FUNCTION__, + BootOptions[Index].Description, + Status + )); } } + EfiBootManagerFreeLoadOptions (CurrentBootOptions, CurrentBootOptionCount); EfiBootManagerFreeLoadOptions (BootOptions, BootCount); FreePool (BootKeys); @@ -528,11 +593,11 @@ PlatformRegisterOptionsAndKeys ( VOID ) { - EFI_STATUS Status; - EFI_INPUT_KEY Enter; - EFI_INPUT_KEY F2; - EFI_INPUT_KEY Esc; - EFI_BOOT_MANAGER_LOAD_OPTION BootOption; + EFI_STATUS Status; + EFI_INPUT_KEY Enter; + EFI_INPUT_KEY F2; + EFI_INPUT_KEY Esc; + EFI_BOOT_MANAGER_LOAD_OPTION BootOption; GetPlatformOptions (); @@ -541,7 +606,7 @@ PlatformRegisterOptionsAndKeys ( // Enter.ScanCode = SCAN_NULL; Enter.UnicodeChar = CHAR_CARRIAGE_RETURN; - Status = EfiBootManagerRegisterContinueKeyOption (0, &Enter, NULL); + Status = EfiBootManagerRegisterContinueKeyOption (0, &Enter, NULL); ASSERT_EFI_ERROR (Status); // @@ -551,22 +616,30 @@ PlatformRegisterOptionsAndKeys ( F2.UnicodeChar = CHAR_NULL; Esc.ScanCode = SCAN_ESC; Esc.UnicodeChar = CHAR_NULL; - Status = EfiBootManagerGetBootManagerMenu (&BootOption); + Status = EfiBootManagerGetBootManagerMenu (&BootOption); ASSERT_EFI_ERROR (Status); Status = EfiBootManagerAddKeyOptionVariable ( - NULL, (UINT16) BootOption.OptionNumber, 0, &F2, NULL + NULL, + (UINT16)BootOption.OptionNumber, + 0, + &F2, + NULL ); ASSERT (Status == EFI_SUCCESS || Status == EFI_ALREADY_STARTED); Status = EfiBootManagerAddKeyOptionVariable ( - NULL, (UINT16) BootOption.OptionNumber, 0, &Esc, NULL + NULL, + (UINT16)BootOption.OptionNumber, + 0, + &Esc, + NULL ); ASSERT (Status == EFI_SUCCESS || Status == EFI_ALREADY_STARTED); } - // // BDS Platform Functions // + /** Do the platform init, can be customized by OEM/IBV Possible things that can be done in PlatformBootManagerBeforeConsole: @@ -626,27 +699,45 @@ PlatformBootManagerBeforeConsole ( // // Add the hardcoded short-form USB keyboard device path to ConIn. // - EfiBootManagerUpdateConsoleVariable (ConIn, - (EFI_DEVICE_PATH_PROTOCOL *)&mUsbKeyboard, NULL); + EfiBootManagerUpdateConsoleVariable ( + ConIn, + (EFI_DEVICE_PATH_PROTOCOL *)&mUsbKeyboard, + NULL + ); // // Add the hardcoded serial console device path to ConIn, ConOut, ErrOut. // - STATIC_ASSERT (FixedPcdGet8 (PcdDefaultTerminalType) == 4, - "PcdDefaultTerminalType must be TTYTERM"); - STATIC_ASSERT (FixedPcdGet8 (PcdUartDefaultParity) != 0, - "PcdUartDefaultParity must be set to an actual value, not 'default'"); - STATIC_ASSERT (FixedPcdGet8 (PcdUartDefaultStopBits) != 0, - "PcdUartDefaultStopBits must be set to an actual value, not 'default'"); + STATIC_ASSERT ( + FixedPcdGet8 (PcdDefaultTerminalType) == 4, + "PcdDefaultTerminalType must be TTYTERM" + ); + STATIC_ASSERT ( + FixedPcdGet8 (PcdUartDefaultParity) != 0, + "PcdUartDefaultParity must be set to an actual value, not 'default'" + ); + STATIC_ASSERT ( + FixedPcdGet8 (PcdUartDefaultStopBits) != 0, + "PcdUartDefaultStopBits must be set to an actual value, not 'default'" + ); CopyGuid (&mSerialConsole.TermType.Guid, &gEfiTtyTermGuid); - EfiBootManagerUpdateConsoleVariable (ConIn, - (EFI_DEVICE_PATH_PROTOCOL *)&mSerialConsole, NULL); - EfiBootManagerUpdateConsoleVariable (ConOut, - (EFI_DEVICE_PATH_PROTOCOL *)&mSerialConsole, NULL); - EfiBootManagerUpdateConsoleVariable (ErrOut, - (EFI_DEVICE_PATH_PROTOCOL *)&mSerialConsole, NULL); + EfiBootManagerUpdateConsoleVariable ( + ConIn, + (EFI_DEVICE_PATH_PROTOCOL *)&mSerialConsole, + NULL + ); + EfiBootManagerUpdateConsoleVariable ( + ConOut, + (EFI_DEVICE_PATH_PROTOCOL *)&mSerialConsole, + NULL + ); + EfiBootManagerUpdateConsoleVariable ( + ErrOut, + (EFI_DEVICE_PATH_PROTOCOL *)&mSerialConsole, + NULL + ); // // Register platform-specific boot options and keyboard shortcuts. @@ -660,16 +751,19 @@ HandleCapsules ( VOID ) { - ESRT_MANAGEMENT_PROTOCOL *EsrtManagement; - EFI_PEI_HOB_POINTERS HobPointer; - EFI_CAPSULE_HEADER *CapsuleHeader; - BOOLEAN NeedReset; - EFI_STATUS Status; + ESRT_MANAGEMENT_PROTOCOL *EsrtManagement; + EFI_PEI_HOB_POINTERS HobPointer; + EFI_CAPSULE_HEADER *CapsuleHeader; + BOOLEAN NeedReset; + EFI_STATUS Status; DEBUG ((DEBUG_INFO, "%a: processing capsules ...\n", __FUNCTION__)); - Status = gBS->LocateProtocol (&gEsrtManagementProtocolGuid, NULL, - (VOID **)&EsrtManagement); + Status = gBS->LocateProtocol ( + &gEsrtManagementProtocolGuid, + NULL, + (VOID **)&EsrtManagement + ); if (!EFI_ERROR (Status)) { EsrtManagement->SyncEsrtFmp (); } @@ -678,33 +772,43 @@ HandleCapsules ( // Find all capsule images from hob // HobPointer.Raw = GetHobList (); - NeedReset = FALSE; - while ((HobPointer.Raw = GetNextHob (EFI_HOB_TYPE_UEFI_CAPSULE, - HobPointer.Raw)) != NULL) { + NeedReset = FALSE; + while ((HobPointer.Raw = GetNextHob ( + EFI_HOB_TYPE_UEFI_CAPSULE, + HobPointer.Raw + )) != NULL) + { CapsuleHeader = (VOID *)(UINTN)HobPointer.Capsule->BaseAddress; Status = ProcessCapsuleImage (CapsuleHeader); if (EFI_ERROR (Status)) { - DEBUG ((DEBUG_ERROR, "%a: failed to process capsule %p - %r\n", - __FUNCTION__, CapsuleHeader, Status)); + DEBUG (( + DEBUG_ERROR, + "%a: failed to process capsule %p - %r\n", + __FUNCTION__, + CapsuleHeader, + Status + )); return; } - NeedReset = TRUE; + NeedReset = TRUE; HobPointer.Raw = GET_NEXT_HOB (HobPointer); } if (NeedReset) { - DEBUG ((DEBUG_WARN, "%a: capsule update successful, resetting ...\n", - __FUNCTION__)); - - gRT->ResetSystem (EfiResetCold, EFI_SUCCESS, 0, NULL); - CpuDeadLoop(); + DEBUG (( + DEBUG_WARN, + "%a: capsule update successful, resetting ...\n", + __FUNCTION__ + )); + + gRT->ResetSystem (EfiResetCold, EFI_SUCCESS, 0, NULL); + CpuDeadLoop (); } } - -#define VERSION_STRING_PREFIX L"Tianocore/EDK2 firmware version " +#define VERSION_STRING_PREFIX L"Tianocore/EDK2 firmware version " /** This functions checks the value of BootDiscoverPolicy variable and @@ -722,14 +826,14 @@ BootDiscoveryPolicyHandler ( VOID ) { - EFI_STATUS Status; - UINT32 DiscoveryPolicy; - UINT32 DiscoveryPolicyOld; - UINTN Size; - EFI_BOOT_MANAGER_POLICY_PROTOCOL *BMPolicy; - EFI_GUID *Class; - - Size = sizeof (DiscoveryPolicy); + EFI_STATUS Status; + UINT32 DiscoveryPolicy; + UINT32 DiscoveryPolicyOld; + UINTN Size; + EFI_BOOT_MANAGER_POLICY_PROTOCOL *BMPolicy; + EFI_GUID *Class; + + Size = sizeof (DiscoveryPolicy); Status = gRT->GetVariable ( BOOT_DISCOVERY_POLICY_VAR, &gBootDiscoveryPolicyMgrFormsetGuid, @@ -739,7 +843,7 @@ BootDiscoveryPolicyHandler ( ); if (Status == EFI_NOT_FOUND) { DiscoveryPolicy = PcdGet32 (PcdBootDiscoveryPolicy); - Status = PcdSet32S (PcdBootDiscoveryPolicy, DiscoveryPolicy); + Status = PcdSet32S (PcdBootDiscoveryPolicy, DiscoveryPolicy); if (Status == EFI_NOT_FOUND) { return EFI_SUCCESS; } else if (EFI_ERROR (Status)) { @@ -776,13 +880,17 @@ BootDiscoveryPolicyHandler ( (VOID **)&BMPolicy ); if (EFI_ERROR (Status)) { - DEBUG ((DEBUG_INFO, "%a - Failed to locate gEfiBootManagerPolicyProtocolGuid." - "Driver connect will be skipped.\n", __FUNCTION__)); + DEBUG (( + DEBUG_INFO, + "%a - Failed to locate gEfiBootManagerPolicyProtocolGuid." + "Driver connect will be skipped.\n", + __FUNCTION__ + )); return Status; } Status = BMPolicy->ConnectDeviceClass (BMPolicy, Class); - if (EFI_ERROR (Status)){ + if (EFI_ERROR (Status)) { DEBUG ((DEBUG_ERROR, "%a - ConnectDeviceClass returns - %r\n", __FUNCTION__, Status)); return Status; } @@ -790,7 +898,7 @@ BootDiscoveryPolicyHandler ( // // Refresh Boot Options if Boot Discovery Policy has been changed // - Size = sizeof (DiscoveryPolicyOld); + Size = sizeof (DiscoveryPolicyOld); Status = gRT->GetVariable ( BOOT_DISCOVERY_POLICY_OLD_VAR, &gBootDiscoveryPolicyMgrFormsetGuid, @@ -845,21 +953,33 @@ PlatformBootManagerAfterConsole ( Status = BootLogoEnableLogo (); if (EFI_ERROR (Status)) { if (FirmwareVerLength > 0) { - Print (VERSION_STRING_PREFIX L"%s\n", - PcdGetPtr (PcdFirmwareVersionString)); + Print ( + VERSION_STRING_PREFIX L"%s\n", + PcdGetPtr (PcdFirmwareVersionString) + ); } + Print (L"Press ESCAPE for boot options "); } else if (FirmwareVerLength > 0) { - Status = gBS->HandleProtocol (gST->ConsoleOutHandle, - &gEfiGraphicsOutputProtocolGuid, (VOID **)&GraphicsOutput); + Status = gBS->HandleProtocol ( + gST->ConsoleOutHandle, + &gEfiGraphicsOutputProtocolGuid, + (VOID **)&GraphicsOutput + ); if (!EFI_ERROR (Status)) { PosX = (GraphicsOutput->Mode->Info->HorizontalResolution - (StrLen (VERSION_STRING_PREFIX) + FirmwareVerLength) * EFI_GLYPH_WIDTH) / 2; PosY = 0; - PrintXY (PosX, PosY, NULL, NULL, VERSION_STRING_PREFIX L"%s", - PcdGetPtr (PcdFirmwareVersionString)); + PrintXY ( + PosX, + PosY, + NULL, + NULL, + VERSION_STRING_PREFIX L"%s", + PcdGetPtr (PcdFirmwareVersionString) + ); } } @@ -881,8 +1001,8 @@ PlatformBootManagerAfterConsole ( // // Register UEFI Shell // - Key.ScanCode = SCAN_NULL; - Key.UnicodeChar = L's'; + Key.ScanCode = SCAN_NULL; + Key.UnicodeChar = L's'; PlatformRegisterFvBootOption (&gUefiShellFileGuid, L"UEFI Shell", 0, &Key); } @@ -895,13 +1015,13 @@ PlatformBootManagerAfterConsole ( VOID EFIAPI PlatformBootManagerWaitCallback ( - UINT16 TimeoutRemain + UINT16 TimeoutRemain ) { - EFI_GRAPHICS_OUTPUT_BLT_PIXEL_UNION Black; - EFI_GRAPHICS_OUTPUT_BLT_PIXEL_UNION White; - UINT16 Timeout; - EFI_STATUS Status; + EFI_GRAPHICS_OUTPUT_BLT_PIXEL_UNION Black; + EFI_GRAPHICS_OUTPUT_BLT_PIXEL_UNION White; + UINT16 Timeout; + EFI_STATUS Status; Timeout = PcdGet16 (PcdPlatformBootTimeOut); @@ -934,17 +1054,19 @@ PlatformBootManagerUnableToBoot ( VOID ) { - EFI_STATUS Status; - EFI_BOOT_MANAGER_LOAD_OPTION BootManagerMenu; - EFI_BOOT_MANAGER_LOAD_OPTION *BootOptions; - UINTN OldBootOptionCount; - UINTN NewBootOptionCount; + EFI_STATUS Status; + EFI_BOOT_MANAGER_LOAD_OPTION BootManagerMenu; + EFI_BOOT_MANAGER_LOAD_OPTION *BootOptions; + UINTN OldBootOptionCount; + UINTN NewBootOptionCount; // // Record the total number of boot configured boot options // - BootOptions = EfiBootManagerGetLoadOptions (&OldBootOptionCount, - LoadOptionTypeBoot); + BootOptions = EfiBootManagerGetLoadOptions ( + &OldBootOptionCount, + LoadOptionTypeBoot + ); EfiBootManagerFreeLoadOptions (BootOptions, OldBootOptionCount); // @@ -956,8 +1078,10 @@ PlatformBootManagerUnableToBoot ( // // Record the updated number of boot configured boot options // - BootOptions = EfiBootManagerGetLoadOptions (&NewBootOptionCount, - LoadOptionTypeBoot); + BootOptions = EfiBootManagerGetLoadOptions ( + &NewBootOptionCount, + LoadOptionTypeBoot + ); EfiBootManagerFreeLoadOptions (BootOptions, NewBootOptionCount); // @@ -969,8 +1093,11 @@ PlatformBootManagerUnableToBoot ( // if (!PcdGetBool (PcdEmuVariableNvModeEnable)) { if (NewBootOptionCount != OldBootOptionCount) { - DEBUG ((DEBUG_WARN, "%a: rebooting after refreshing all boot options\n", - __FUNCTION__)); + DEBUG (( + DEBUG_WARN, + "%a: rebooting after refreshing all boot options\n", + __FUNCTION__ + )); gRT->ResetSystem (EfiResetCold, EFI_SUCCESS, 0, NULL); } } @@ -980,7 +1107,7 @@ PlatformBootManagerUnableToBoot ( return; } - for (;;) { + for ( ; ;) { EfiBootManagerBoot (&BootManagerMenu); } }