/** @file\r
Dump Capsule image information.\r
\r
- Copyright (c) 2016 - 2019, 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
- http://opensource.org/licenses/bsd-license.php\r
+ Copyright (c) 2016 - 2020, Intel Corporation. All rights reserved.<BR>\r
+ SPDX-License-Identifier: BSD-2-Clause-Patent\r
\r
- THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
- WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
-\r
-**/\r
-\r
-#include <PiDxe.h>\r
-#include <Library/BaseLib.h>\r
-#include <Library/DebugLib.h>\r
-#include <Library/BaseMemoryLib.h>\r
-#include <Library/MemoryAllocationLib.h>\r
-#include <Library/UefiBootServicesTableLib.h>\r
-#include <Library/UefiRuntimeServicesTableLib.h>\r
-#include <Library/UefiLib.h>\r
-#include <Library/PrintLib.h>\r
-#include <Library/FileHandleLib.h>\r
-#include <Library/SortLib.h>\r
-#include <Library/UefiBootManagerLib.h>\r
-#include <Library/DevicePathLib.h>\r
-#include <Protocol/FirmwareManagement.h>\r
-#include <Protocol/SimpleFileSystem.h>\r
-#include <Protocol/Shell.h>\r
-#include <Guid/ImageAuthentication.h>\r
-#include <Guid/CapsuleReport.h>\r
-#include <Guid/SystemResourceTable.h>\r
-#include <Guid/FmpCapsule.h>\r
-#include <Guid/CapsuleVendor.h>\r
-#include <IndustryStandard/WindowsUxCapsule.h>\r
-\r
-//\r
-// (20 * (6+5+2))+1) unicode characters from EFI FAT spec (doubled for bytes)\r
-//\r
-#define MAX_FILE_NAME_SIZE 522\r
-#define MAX_FILE_NAME_LEN (MAX_FILE_NAME_SIZE / sizeof(CHAR16))\r
-\r
-/**\r
- Read a file.\r
-\r
- @param[in] FileName The file to be read.\r
- @param[out] BufferSize The file buffer size\r
- @param[out] Buffer The file buffer\r
-\r
- @retval EFI_SUCCESS Read file successfully\r
- @retval EFI_NOT_FOUND File not found\r
**/\r
-EFI_STATUS\r
-ReadFileToBuffer (\r
- IN CHAR16 *FileName,\r
- OUT UINTN *BufferSize,\r
- OUT VOID **Buffer\r
- );\r
-\r
-/**\r
- Write a file.\r
-\r
- @param[in] FileName The file to be written.\r
- @param[in] BufferSize The file buffer size\r
- @param[in] Buffer The file buffer\r
\r
- @retval EFI_SUCCESS Write file successfully\r
-**/\r
-EFI_STATUS\r
-WriteFileFromBuffer (\r
- IN CHAR16 *FileName,\r
- IN UINTN BufferSize,\r
- IN VOID *Buffer\r
- );\r
-\r
-/**\r
- Get shell protocol.\r
-\r
- @return Pointer to shell protocol.\r
-\r
-**/\r
-EFI_SHELL_PROTOCOL *\r
-GetShellProtocol (\r
- VOID\r
- );\r
-\r
-/**\r
- Get SimpleFileSystem from boot option file path.\r
-\r
- @param[in] DevicePath The file path of boot option\r
- @param[out] FullPath The full device path of boot device\r
- @param[out] Fs The file system within EfiSysPartition\r
-\r
- @retval EFI_SUCCESS Get file system successfully\r
- @retval EFI_NOT_FOUND No valid file system found\r
- @retval others Get file system failed\r
-\r
-**/\r
-EFI_STATUS\r
-EFIAPI\r
-GetEfiSysPartitionFromBootOptionFilePath (\r
- IN EFI_DEVICE_PATH_PROTOCOL *DevicePath,\r
- OUT EFI_DEVICE_PATH_PROTOCOL **FullPath,\r
- OUT EFI_SIMPLE_FILE_SYSTEM_PROTOCOL **Fs\r
- );\r
+#include "CapsuleApp.h"\r
\r
/**\r
Validate if it is valid capsule header\r
{\r
EFI_DISPLAY_CAPSULE *DisplayCapsule;\r
DisplayCapsule = (EFI_DISPLAY_CAPSULE *)CapsuleHeader;\r
- Print(L"[UxCapusule]\n");\r
+ Print(L"[UxCapsule]\n");\r
Print(L"CapsuleHeader:\n");\r
Print(L" CapsuleGuid - %g\n", &DisplayCapsule->CapsuleHeader.CapsuleGuid);\r
Print(L" HeaderSize - 0x%x\n", DisplayCapsule->CapsuleHeader.HeaderSize);\r
Print(L" UpdateImageIndex - 0x%x\n", FmpImageHeader->UpdateImageIndex);\r
Print(L" UpdateImageSize - 0x%x\n", FmpImageHeader->UpdateImageSize);\r
Print(L" UpdateVendorCodeSize - 0x%x\n", FmpImageHeader->UpdateVendorCodeSize);\r
- if (FmpImageHeader->Version >= EFI_FIRMWARE_MANAGEMENT_CAPSULE_IMAGE_HEADER_INIT_VERSION) {\r
+ if (FmpImageHeader->Version >= 2) {\r
Print(L" UpdateHardwareInstance - 0x%lx\n", FmpImageHeader->UpdateHardwareInstance);\r
+ if (FmpImageHeader->Version >= EFI_FIRMWARE_MANAGEMENT_CAPSULE_IMAGE_HEADER_INIT_VERSION) {\r
+ Print(L" ImageCapsuleSupport - 0x%lx\n", FmpImageHeader->ImageCapsuleSupport);\r
+ }\r
}\r
}\r
}\r
DumpFmpCapsule(CapsuleHeader);\r
}\r
if (IsNestedFmpCapsule(CapsuleHeader)) {\r
- Print(L"[NestedCapusule]\n");\r
+ Print(L"[NestedCapsule]\n");\r
Print(L"CapsuleHeader:\n");\r
Print(L" CapsuleGuid - %g\n", &CapsuleHeader->CapsuleGuid);\r
Print(L" HeaderSize - 0x%x\n", CapsuleHeader->HeaderSize);\r
"Error: Auth Error",\r
"Error: Power Event AC",\r
"Error: Power Event Battery",\r
+ "Error: Unsatisfied Dependencies",\r
};\r
\r
/**\r
\r
**/\r
INTN\r
-EFIAPI\r
CompareFileNameInAlphabet (\r
IN VOID *Left,\r
IN VOID *Right\r
//\r
// Get file count first\r
//\r
+ Status = FileHandleFindFirstFile (DirHandle, &FileInfo);\r
do {\r
- Status = FileHandleFindFirstFile (DirHandle, &FileInfo);\r
if (EFI_ERROR (Status) || FileInfo == NULL) {\r
Print (L"Get File Info Fail. Status = %r\n", Status);\r
goto Done;\r
//\r
// Get all file info\r
//\r
+ Status = FileHandleFindFirstFile (DirHandle, &FileInfo);\r
do {\r
- Status = FileHandleFindFirstFile (DirHandle, &FileInfo);\r
if (EFI_ERROR (Status) || FileInfo == NULL) {\r
Print (L"Get File Info Fail. Status = %r\n", Status);\r
goto Done;\r
{\r
EFI_FIRMWARE_IMAGE_DESCRIPTOR *CurrentImageInfo;\r
UINTN Index;\r
+ UINTN Index2;\r
\r
Print(L" DescriptorVersion - 0x%x\n", DescriptorVersion);\r
Print(L" DescriptorCount - 0x%x\n", DescriptorCount);\r
Print(L" LastAttemptVersion - 0x%x\n", CurrentImageInfo->LastAttemptVersion);\r
Print(L" LastAttemptStatus - 0x%x (%a)\n", CurrentImageInfo->LastAttemptStatus, LastAttemptStatusToString(CurrentImageInfo->LastAttemptStatus));\r
Print(L" HardwareInstance - 0x%lx\n", CurrentImageInfo->HardwareInstance);\r
+ if (DescriptorVersion > 3) {\r
+ Print(L" Dependencies - ");\r
+ if (CurrentImageInfo->Dependencies == NULL) {\r
+ Print(L"NULL\n");\r
+ } else {\r
+ Index2 = 0;\r
+ do {\r
+ Print(L"%02x ", CurrentImageInfo->Dependencies->Dependencies[Index2]);\r
+ } while (CurrentImageInfo->Dependencies->Dependencies[Index2 ++] != EFI_FMP_DEP_END);\r
+ Print(L"\n");\r
+ }\r
+ }\r
}\r
}\r
//\r