public inbox for devel@edk2.groups.io
 help / color / mirror / Atom feed
* [edk2-devel] [PATCH 0/2] Add FMP Capsule Image Header extension
@ 2020-05-15  7:38 Xu, Wei6
  2020-05-15  7:38 ` [edk2-devel] [PATCH 1/2] MdeModulePkg: " Xu, Wei6
                   ` (2 more replies)
  0 siblings, 3 replies; 6+ messages in thread
From: Xu, Wei6 @ 2020-05-15  7:38 UTC (permalink / raw)
  To: devel

Following patches add/update structures/definitions, that were introduced/modified by UEFI Spec v.2.8 errata a from Feb 14.

Oleksiy Yakovlev (2):
  MdeModulePkg: Add FMP Capsule Image Header extension
  SignedCapsulePkg: Add FMP Capsule Image Header extension

 MdeModulePkg/Application/CapsuleApp/CapsuleDump.c  |  5 +++-
 .../Library/DxeCapsuleLibFmp/DxeCapsuleLib.c       | 28 +++++++++++++++++-----
 .../RecoveryModuleLoadPei/RecoveryModuleLoadPei.c  | 17 ++++++++++---
 3 files changed, 40 insertions(+), 10 deletions(-)

-- 
2.16.2.windows.1


^ permalink raw reply	[flat|nested] 6+ messages in thread

* [edk2-devel] [PATCH 1/2] MdeModulePkg: Add FMP Capsule Image Header extension
  2020-05-15  7:38 [edk2-devel] [PATCH 0/2] Add FMP Capsule Image Header extension Xu, Wei6
@ 2020-05-15  7:38 ` Xu, Wei6
  2020-05-19 15:40   ` Oleksiy Yakovlev
  2020-05-15  7:38 ` [edk2-devel] [PATCH 2/2] SignedCapsulePkg: " Xu, Wei6
  2020-05-15  8:32 ` [edk2-devel] [PATCH 0/2] " Liming Gao
  2 siblings, 1 reply; 6+ messages in thread
From: Xu, Wei6 @ 2020-05-15  7:38 UTC (permalink / raw)
  To: devel; +Cc: Oleksiy Yakovlev

From: Oleksiy Yakovlev <oleksiyy@ami.com>

Add bitmask to structure which gives a binary-inspectable mechanism to
determine if a capsule contains an authentication section or depex section.
(UEFI 2.8 errata a, mantis 2026)

Signed-off-by: Oleksiy Yakovlev <oleksiyy@ami.com>
Signed-off-by: Wei6 Xu <wei6.xu@intel.com>
Reviewed-by: Liming Gao <liming.gao@intel.com>
---
 MdeModulePkg/Application/CapsuleApp/CapsuleDump.c  |  5 +++-
 .../Library/DxeCapsuleLibFmp/DxeCapsuleLib.c       | 28 +++++++++++++++++-----
 2 files changed, 26 insertions(+), 7 deletions(-)

diff --git a/MdeModulePkg/Application/CapsuleApp/CapsuleDump.c b/MdeModulePkg/Application/CapsuleApp/CapsuleDump.c
index 7e3e072385..5725e2f6dd 100644
--- a/MdeModulePkg/Application/CapsuleApp/CapsuleDump.c
+++ b/MdeModulePkg/Application/CapsuleApp/CapsuleDump.c
@@ -94,12 +94,15 @@ DumpFmpCapsule (
     Print(L"  Version                - 0x%x\n", FmpImageHeader->Version);
     Print(L"  UpdateImageTypeId      - %g\n", &FmpImageHeader->UpdateImageTypeId);
     Print(L"  UpdateImageIndex       - 0x%x\n", FmpImageHeader->UpdateImageIndex);
     Print(L"  UpdateImageSize        - 0x%x\n", FmpImageHeader->UpdateImageSize);
     Print(L"  UpdateVendorCodeSize   - 0x%x\n", FmpImageHeader->UpdateVendorCodeSize);
-    if (FmpImageHeader->Version >= EFI_FIRMWARE_MANAGEMENT_CAPSULE_IMAGE_HEADER_INIT_VERSION) {
+    if (FmpImageHeader->Version >= 2) {
       Print(L"  UpdateHardwareInstance - 0x%lx\n", FmpImageHeader->UpdateHardwareInstance);
+      if (FmpImageHeader->Version >= EFI_FIRMWARE_MANAGEMENT_CAPSULE_IMAGE_HEADER_INIT_VERSION) {
+        Print(L"  ImageCapsuleSupport    - 0x%lx\n", FmpImageHeader->ImageCapsuleSupport);
+      }
     }
   }
 }
 
 /**
diff --git a/MdeModulePkg/Library/DxeCapsuleLibFmp/DxeCapsuleLib.c b/MdeModulePkg/Library/DxeCapsuleLibFmp/DxeCapsuleLib.c
index 5dda561a04..90942135d7 100644
--- a/MdeModulePkg/Library/DxeCapsuleLibFmp/DxeCapsuleLib.c
+++ b/MdeModulePkg/Library/DxeCapsuleLibFmp/DxeCapsuleLib.c
@@ -283,12 +283,14 @@ ValidateFmpCapsule (
     if ((ImageHeader->Version > EFI_FIRMWARE_MANAGEMENT_CAPSULE_IMAGE_HEADER_INIT_VERSION) ||
         (ImageHeader->Version < 1)) {
       DEBUG((DEBUG_ERROR, "ImageHeader->Version(0x%x) Unknown\n", ImageHeader->Version));
       return EFI_INVALID_PARAMETER;
     }
-    if (ImageHeader->Version < EFI_FIRMWARE_MANAGEMENT_CAPSULE_IMAGE_HEADER_INIT_VERSION) {
+    if (ImageHeader->Version == 1) {
       FmpImageHeaderSize = OFFSET_OF(EFI_FIRMWARE_MANAGEMENT_CAPSULE_IMAGE_HEADER, UpdateHardwareInstance);
+    } else if (ImageHeader->Version == 2) {
+      FmpImageHeaderSize = OFFSET_OF(EFI_FIRMWARE_MANAGEMENT_CAPSULE_IMAGE_HEADER, ImageCapsuleSupport);
     }
     if (FmpImageSize < FmpImageHeaderSize) {
       DEBUG((DEBUG_ERROR, "FmpImageSize(0x%lx) < FmpImageHeaderSize(0x%x)\n", FmpImageSize, FmpImageHeaderSize));
       return EFI_INVALID_PARAMETER;
     }
@@ -517,12 +519,15 @@ DumpFmpCapsule (
     DEBUG((DEBUG_VERBOSE, "    Version                - 0x%x\n", ImageHeader->Version));
     DEBUG((DEBUG_VERBOSE, "    UpdateImageTypeId      - %g\n", &ImageHeader->UpdateImageTypeId));
     DEBUG((DEBUG_VERBOSE, "    UpdateImageIndex       - 0x%x\n", ImageHeader->UpdateImageIndex));
     DEBUG((DEBUG_VERBOSE, "    UpdateImageSize        - 0x%x\n", ImageHeader->UpdateImageSize));
     DEBUG((DEBUG_VERBOSE, "    UpdateVendorCodeSize   - 0x%x\n", ImageHeader->UpdateVendorCodeSize));
-    if (ImageHeader->Version >= EFI_FIRMWARE_MANAGEMENT_CAPSULE_IMAGE_HEADER_INIT_VERSION) {
+    if (ImageHeader->Version >= 2) {
       DEBUG((DEBUG_VERBOSE, "    UpdateHardwareInstance - 0x%lx\n", ImageHeader->UpdateHardwareInstance));
+      if (ImageHeader->Version >= EFI_FIRMWARE_MANAGEMENT_CAPSULE_IMAGE_HEADER_INIT_VERSION) {
+        DEBUG((DEBUG_VERBOSE, "    ImageCapsuleSupport    - 0x%lx\n",  ImageHeader->ImageCapsuleSupport));
+      }
     }
   }
 }
 
 /**
@@ -926,13 +931,18 @@ SetFmpImageData (
   if (ImageHeader->Version >= EFI_FIRMWARE_MANAGEMENT_CAPSULE_IMAGE_HEADER_INIT_VERSION) {
     Image = (UINT8 *)(ImageHeader + 1);
   } else {
     //
     // If the EFI_FIRMWARE_MANAGEMENT_CAPSULE_IMAGE_HEADER is version 1,
-    // Header should exclude UpdateHardwareInstance field
+    // Header should exclude UpdateHardwareInstance field, and
+    // ImageCapsuleSupport field if version is 2.
     //
-    Image = (UINT8 *)ImageHeader + OFFSET_OF(EFI_FIRMWARE_MANAGEMENT_CAPSULE_IMAGE_HEADER, UpdateHardwareInstance);
+    if (ImageHeader->Version == 1) {
+      Image = (UINT8 *)ImageHeader + OFFSET_OF(EFI_FIRMWARE_MANAGEMENT_CAPSULE_IMAGE_HEADER, UpdateHardwareInstance);
+    } else {
+      Image = (UINT8 *)ImageHeader + OFFSET_OF(EFI_FIRMWARE_MANAGEMENT_CAPSULE_IMAGE_HEADER, ImageCapsuleSupport);
+    }
   }
 
   if (ImageHeader->UpdateVendorCodeSize == 0) {
     VendorCode = NULL;
   } else {
@@ -941,12 +951,15 @@ SetFmpImageData (
   AbortReason = NULL;
   DEBUG((DEBUG_INFO, "Fmp->SetImage ...\n"));
   DEBUG((DEBUG_INFO, "ImageTypeId - %g, ", &ImageHeader->UpdateImageTypeId));
   DEBUG((DEBUG_INFO, "PayloadIndex - 0x%x, ", PayloadIndex));
   DEBUG((DEBUG_INFO, "ImageIndex - 0x%x ", ImageHeader->UpdateImageIndex));
-  if (ImageHeader->Version >= EFI_FIRMWARE_MANAGEMENT_CAPSULE_IMAGE_HEADER_INIT_VERSION) {
+  if (ImageHeader->Version >= 2) {
     DEBUG((DEBUG_INFO, "(UpdateHardwareInstance - 0x%x)", ImageHeader->UpdateHardwareInstance));
+    if (ImageHeader->Version >= EFI_FIRMWARE_MANAGEMENT_CAPSULE_IMAGE_HEADER_INIT_VERSION) {
+      DEBUG((DEBUG_INFO, "(ImageCapsuleSupport - 0x%x)", ImageHeader->ImageCapsuleSupport));
+    }
   }
   DEBUG((DEBUG_INFO, "\n"));
 
   //
   // Before calling SetImage(), reset the progress bar to 0%
@@ -1237,11 +1250,14 @@ ProcessFmpCapsuleImage (
   //
   for (Index = FmpCapsuleHeader->EmbeddedDriverCount; Index < ItemNum; Index++) {
     ImageHeader  = (EFI_FIRMWARE_MANAGEMENT_CAPSULE_IMAGE_HEADER *)((UINT8 *)FmpCapsuleHeader + ItemOffsetList[Index]);
 
     UpdateHardwareInstance = 0;
-    if (ImageHeader->Version >= EFI_FIRMWARE_MANAGEMENT_CAPSULE_IMAGE_HEADER_INIT_VERSION) {
+    ///
+    /// UpdateHardwareInstance field was added in Version 2
+    ///
+    if (ImageHeader->Version >= 2) {
       UpdateHardwareInstance = ImageHeader->UpdateHardwareInstance;
     }
 
     Status = GetFmpHandleBufferByType (
                &ImageHeader->UpdateImageTypeId,
-- 
2.16.2.windows.1


^ permalink raw reply related	[flat|nested] 6+ messages in thread

* [edk2-devel] [PATCH 2/2] SignedCapsulePkg: Add FMP Capsule Image Header extension
  2020-05-15  7:38 [edk2-devel] [PATCH 0/2] Add FMP Capsule Image Header extension Xu, Wei6
  2020-05-15  7:38 ` [edk2-devel] [PATCH 1/2] MdeModulePkg: " Xu, Wei6
@ 2020-05-15  7:38 ` Xu, Wei6
  2020-05-19 15:41   ` Oleksiy Yakovlev
  2020-05-15  8:32 ` [edk2-devel] [PATCH 0/2] " Liming Gao
  2 siblings, 1 reply; 6+ messages in thread
From: Xu, Wei6 @ 2020-05-15  7:38 UTC (permalink / raw)
  To: devel; +Cc: Oleksiy Yakovlev

From: Oleksiy Yakovlev <oleksiyy@ami.com>

Add bitmask to structure which gives a binary-inspectable mechanism to
determine if a capsule contains an authentication section or depex section.
(UEFI 2.8 errata a, mantis 2026)

Signed-off-by: Oleksiy Yakovlev <oleksiyy@ami.com>
Signed-off-by: Wei6 Xu <wei6.xu@intel.com>
Reviewed-by: Chao Zhang <chao.b.zhang@intel.com>
Reviewed-by: Liming Gao <liming.gao@intel.com>
---
 .../RecoveryModuleLoadPei/RecoveryModuleLoadPei.c       | 17 ++++++++++++++---
 1 file changed, 14 insertions(+), 3 deletions(-)

diff --git a/SignedCapsulePkg/Universal/RecoveryModuleLoadPei/RecoveryModuleLoadPei.c b/SignedCapsulePkg/Universal/RecoveryModuleLoadPei/RecoveryModuleLoadPei.c
index 53b821c2bb..af8e5cb84c 100644
--- a/SignedCapsulePkg/Universal/RecoveryModuleLoadPei/RecoveryModuleLoadPei.c
+++ b/SignedCapsulePkg/Universal/RecoveryModuleLoadPei/RecoveryModuleLoadPei.c
@@ -326,12 +326,18 @@ ValidateFmpCapsule (
     if ((ImageHeader->Version > EFI_FIRMWARE_MANAGEMENT_CAPSULE_IMAGE_HEADER_INIT_VERSION) ||
         (ImageHeader->Version < 1)) {
       DEBUG((DEBUG_ERROR, "ImageHeader->Version(0x%x) Unknown\n", ImageHeader->Version));
       return EFI_INVALID_PARAMETER;
     }
-    if (ImageHeader->Version < EFI_FIRMWARE_MANAGEMENT_CAPSULE_IMAGE_HEADER_INIT_VERSION) {
+    ///
+    /// Current Init ImageHeader version is 3. UpdateHardwareInstance field was added in version 2
+    /// and ImageCapsuleSupport field was added in version 3
+    ///
+    if (ImageHeader->Version == 1) {
       FmpImageHeaderSize = OFFSET_OF(EFI_FIRMWARE_MANAGEMENT_CAPSULE_IMAGE_HEADER, UpdateHardwareInstance);
+    } else if (ImageHeader->Version == 2){
+      FmpImageHeaderSize = OFFSET_OF(EFI_FIRMWARE_MANAGEMENT_CAPSULE_IMAGE_HEADER, ImageCapsuleSupport);
     }
 
     // No overflow
     if (FmpImageSize != (UINT64)FmpImageHeaderSize + (UINT64)ImageHeader->UpdateImageSize + (UINT64)ImageHeader->UpdateVendorCodeSize) {
       DEBUG((DEBUG_ERROR, "FmpImageSize(0x%lx) mismatch, UpdateImageSize(0x%x) UpdateVendorCodeSize(0x%x)\n", FmpImageSize, ImageHeader->UpdateImageSize, ImageHeader->UpdateVendorCodeSize));
@@ -637,13 +643,18 @@ ProcessFmpCapsuleImage (
     if (ImageHeader->Version >= EFI_FIRMWARE_MANAGEMENT_CAPSULE_IMAGE_HEADER_INIT_VERSION) {
       Image = (UINT8 *)(ImageHeader + 1);
     } else {
       //
       // If the EFI_FIRMWARE_MANAGEMENT_CAPSULE_IMAGE_HEADER is version 1, only match ImageTypeId.
-      // Header should exclude UpdateHardwareInstance field
+      // Header should exclude UpdateHardwareInstance field.
+      // If version is 2 Header should exclude ImageCapsuleSupport field.
       //
-      Image = (UINT8 *)ImageHeader + OFFSET_OF(EFI_FIRMWARE_MANAGEMENT_CAPSULE_IMAGE_HEADER, UpdateHardwareInstance);
+      if (ImageHeader->Version == 1) {
+        Image = (UINT8 *)ImageHeader + OFFSET_OF(EFI_FIRMWARE_MANAGEMENT_CAPSULE_IMAGE_HEADER, UpdateHardwareInstance);
+      } else {
+        Image = (UINT8 *)ImageHeader + OFFSET_OF(EFI_FIRMWARE_MANAGEMENT_CAPSULE_IMAGE_HEADER, ImageCapsuleSupport);
+      }
     }
 
     Status = ProcessRecoveryImage (Image, ImageHeader->UpdateImageSize);
     if (EFI_ERROR(Status)) {
       return Status;
-- 
2.16.2.windows.1


^ permalink raw reply related	[flat|nested] 6+ messages in thread

* Re: [edk2-devel] [PATCH 0/2] Add FMP Capsule Image Header extension
  2020-05-15  7:38 [edk2-devel] [PATCH 0/2] Add FMP Capsule Image Header extension Xu, Wei6
  2020-05-15  7:38 ` [edk2-devel] [PATCH 1/2] MdeModulePkg: " Xu, Wei6
  2020-05-15  7:38 ` [edk2-devel] [PATCH 2/2] SignedCapsulePkg: " Xu, Wei6
@ 2020-05-15  8:32 ` Liming Gao
  2 siblings, 0 replies; 6+ messages in thread
From: Liming Gao @ 2020-05-15  8:32 UTC (permalink / raw)
  To: devel@edk2.groups.io, Xu, Wei6

Wei:
  Thanks for your update. The change is OK. 

Thanks
Liming
> -----Original Message-----
> From: devel@edk2.groups.io <devel@edk2.groups.io> On Behalf Of Xu, Wei6
> Sent: Friday, May 15, 2020 3:39 PM
> To: devel@edk2.groups.io
> Subject: [edk2-devel] [PATCH 0/2] Add FMP Capsule Image Header extension
> 
> Following patches add/update structures/definitions, that were introduced/modified by UEFI Spec v.2.8 errata a from Feb 14.
> 
> Oleksiy Yakovlev (2):
>   MdeModulePkg: Add FMP Capsule Image Header extension
>   SignedCapsulePkg: Add FMP Capsule Image Header extension
> 
>  MdeModulePkg/Application/CapsuleApp/CapsuleDump.c  |  5 +++-
>  .../Library/DxeCapsuleLibFmp/DxeCapsuleLib.c       | 28 +++++++++++++++++-----
>  .../RecoveryModuleLoadPei/RecoveryModuleLoadPei.c  | 17 ++++++++++---
>  3 files changed, 40 insertions(+), 10 deletions(-)
> 
> --
> 2.16.2.windows.1
> 
> 
> 


^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [edk2-devel] [PATCH 1/2] MdeModulePkg: Add FMP Capsule Image Header extension
  2020-05-15  7:38 ` [edk2-devel] [PATCH 1/2] MdeModulePkg: " Xu, Wei6
@ 2020-05-19 15:40   ` Oleksiy Yakovlev
  0 siblings, 0 replies; 6+ messages in thread
From: Oleksiy Yakovlev @ 2020-05-19 15:40 UTC (permalink / raw)
  To: Xu, Wei6, devel

[-- Attachment #1: Type: text/plain, Size: 50 bytes --]

Reviewed-by: Oleksiy Yakovlev <oleksiyy@ami.com>

[-- Attachment #2: Type: text/html, Size: 56 bytes --]

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [edk2-devel] [PATCH 2/2] SignedCapsulePkg: Add FMP Capsule Image Header extension
  2020-05-15  7:38 ` [edk2-devel] [PATCH 2/2] SignedCapsulePkg: " Xu, Wei6
@ 2020-05-19 15:41   ` Oleksiy Yakovlev
  0 siblings, 0 replies; 6+ messages in thread
From: Oleksiy Yakovlev @ 2020-05-19 15:41 UTC (permalink / raw)
  To: Xu, Wei6, devel

[-- Attachment #1: Type: text/plain, Size: 50 bytes --]

Reviewed-by: Oleksiy Yakovlev <oleksiyy@ami.com>

[-- Attachment #2: Type: text/html, Size: 56 bytes --]

^ permalink raw reply	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2020-05-19 15:41 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2020-05-15  7:38 [edk2-devel] [PATCH 0/2] Add FMP Capsule Image Header extension Xu, Wei6
2020-05-15  7:38 ` [edk2-devel] [PATCH 1/2] MdeModulePkg: " Xu, Wei6
2020-05-19 15:40   ` Oleksiy Yakovlev
2020-05-15  7:38 ` [edk2-devel] [PATCH 2/2] SignedCapsulePkg: " Xu, Wei6
2020-05-19 15:41   ` Oleksiy Yakovlev
2020-05-15  8:32 ` [edk2-devel] [PATCH 0/2] " Liming Gao

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox