From: "Sughosh Ganu" <sughosh.ganu@linaro.org>
To: "Kinney, Michael D" <michael.d.kinney@intel.com>,
Bob Feng <bob.c.feng@intel.com>,
Liming Gao <gaoliming@byosoft.com.cn>,
Yuwei Chen <yuwei.chen@intel.com>
Cc: "devel@edk2.groups.io" <devel@edk2.groups.io>
Subject: Re: [edk2-devel] [PATCH v2] BaseTools: Add support for version 3 of FMP Image Header structure
Date: Tue, 11 May 2021 15:51:13 +0530 [thread overview]
Message-ID: <CADg8p96=uedx9D-R8M53RE5OCnqcK2z=rGhe1idXPgD5ypM5+g@mail.gmail.com> (raw)
In-Reply-To: <CO1PR11MB4929D8392E7B955A016B8E6BD2429@CO1PR11MB4929.namprd11.prod.outlook.com>
[-- Attachment #1: Type: text/plain, Size: 11193 bytes --]
hi,
Can this patch be merged. Thanks.
-sughosh
On Mon, 26 Apr 2021 at 21:27, Kinney, Michael D <michael.d.kinney@intel.com>
wrote:
> Reviewed-by: Michael D Kinney <michael.d.kinney@intel.com>
>
> Mike
>
> > -----Original Message-----
> > From: devel@edk2.groups.io <devel@edk2.groups.io> On Behalf Of Sughosh
> Ganu
> > Sent: Friday, April 23, 2021 4:29 AM
> > To: devel@edk2.groups.io
> > Cc: Michal Simek <michal.simek@xilinx.com>; Sughosh Ganu <
> sughosh.ganu@linaro.org>
> > Subject: [edk2-devel] [PATCH v2] BaseTools: Add support for version 3 of
> FMP Image Header structure
> >
> > Add support for the ImageCapsuleSupport field, introduced in version 3
> > of the EFI_FIRMWARE_MANAGEMENT_CAPSULE_IMAGE_HEADER structure. This
> > structure member is used to indicate if the corresponding payload has
> > support for authentication and dependency.
> >
> > Signed-off-by: Sughosh Ganu <sughosh.ganu@linaro.org>
> > ---
> >
> > Changes since v1:
> > - Reword the patch header to get rid of the PatchCheck warning
> > - Make passing of ImageCapsuleSupport parameter to the AddPayload
> > function as an optional parameter to maintain backward compatibility
> > - Declare the values of CAPSULE_SUPPORT_DEPENDENCY and
> > CAPSULE_SUPPORT_AUTHENTICATION in the FmpCapsuleHeaderClass and use
> > those in the GenerateCapsule script
> >
> > .../Source/Python/Capsule/GenerateCapsule.py | 5 +++-
> > .../Common/Uefi/Capsule/FmpCapsuleHeader.py | 28 +++++++++++++------
> > 2 files changed, 24 insertions(+), 9 deletions(-)
> >
> > diff --git a/BaseTools/Source/Python/Capsule/GenerateCapsule.py
> b/BaseTools/Source/Python/Capsule/GenerateCapsule.py
> > index a8de988253..b8039db878 100644
> > --- a/BaseTools/Source/Python/Capsule/GenerateCapsule.py
> > +++ b/BaseTools/Source/Python/Capsule/GenerateCapsule.py
> > @@ -561,6 +561,7 @@ if __name__ == '__main__':
> > print ('GenerateCapsule: error:' + str(Msg))
> > sys.exit (1)
> > for SinglePayloadDescriptor in PayloadDescriptorList:
> > + ImageCapsuleSupport = 0x0000000000000000
> > Result = SinglePayloadDescriptor.Payload
> > try:
> > FmpPayloadHeader.FwVersion =
> SinglePayloadDescriptor.FwVersion
> > @@ -575,6 +576,7 @@ if __name__ == '__main__':
> > if SinglePayloadDescriptor.UseDependency:
> > CapsuleDependency.Payload = Result
> > CapsuleDependency.DepexExp =
> SinglePayloadDescriptor.DepexExp
> > + ImageCapsuleSupport |=
> FmpCapsuleHeader.CAPSULE_SUPPORT_DEPENDENCY
> > Result = CapsuleDependency.Encode ()
> > if args.Verbose:
> > CapsuleDependency.DumpInfo ()
> > @@ -607,13 +609,14 @@ if __name__ == '__main__':
> > FmpAuthHeader.MonotonicCount =
> SinglePayloadDescriptor.MonotonicCount
> > FmpAuthHeader.CertData = CertData
> > FmpAuthHeader.Payload = Result
> > + ImageCapsuleSupport |=
> FmpCapsuleHeader.CAPSULE_SUPPORT_AUTHENTICATION
> > Result = FmpAuthHeader.Encode ()
> > if args.Verbose:
> > FmpAuthHeader.DumpInfo ()
> > except:
> > print ('GenerateCapsule: error: can not encode FMP
> Auth Header')
> > sys.exit (1)
> > - FmpCapsuleHeader.AddPayload (SinglePayloadDescriptor.Guid,
> Result, HardwareInstance =
> > SinglePayloadDescriptor.HardwareInstance, UpdateImageIndex =
> SinglePayloadDescriptor.UpdateImageIndex)
> > + FmpCapsuleHeader.AddPayload (SinglePayloadDescriptor.Guid,
> Result, HardwareInstance =
> > SinglePayloadDescriptor.HardwareInstance, UpdateImageIndex =
> SinglePayloadDescriptor.UpdateImageIndex, CapsuleSupport =
> > ImageCapsuleSupport)
> > try:
> > for EmbeddedDriver in EmbeddedDriverDescriptorList:
> > FmpCapsuleHeader.AddEmbeddedDriver(EmbeddedDriver)
> > diff --git
> a/BaseTools/Source/Python/Common/Uefi/Capsule/FmpCapsuleHeader.py
> > b/BaseTools/Source/Python/Common/Uefi/Capsule/FmpCapsuleHeader.py
> > index 91d24919c4..8abb449c6f 100644
> > --- a/BaseTools/Source/Python/Common/Uefi/Capsule/FmpCapsuleHeader.py
> > +++ b/BaseTools/Source/Python/Common/Uefi/Capsule/FmpCapsuleHeader.py
> > @@ -47,14 +47,19 @@ class FmpCapsuleImageHeaderClass (object):
> > # /// therefore can be modified without changing the Auth data.
> > # ///
> > # UINT64 UpdateHardwareInstance;
> > + #
> > + # ///
> > + # /// Bits which indicate authentication and depex information
> for the image that follows this structure
> > + # ///
> > + # UINT64 ImageCapsuleSupport
> > # } EFI_FIRMWARE_MANAGEMENT_CAPSULE_IMAGE_HEADER;
> > #
> > - # #define
> EFI_FIRMWARE_MANAGEMENT_CAPSULE_IMAGE_HEADER_INIT_VERSION 0x00000002
> > + # #define
> EFI_FIRMWARE_MANAGEMENT_CAPSULE_IMAGE_HEADER_INIT_VERSION 0x00000003
> >
> > - _StructFormat = '<I16sB3BIIQ'
> > + _StructFormat = '<I16sB3BIIQQ'
> > _StructSize = struct.calcsize (_StructFormat)
> >
> > - EFI_FIRMWARE_MANAGEMENT_CAPSULE_IMAGE_HEADER_INIT_VERSION =
> 0x00000002
> > + EFI_FIRMWARE_MANAGEMENT_CAPSULE_IMAGE_HEADER_INIT_VERSION =
> 0x00000003
> >
> > def __init__ (self):
> > self._Valid = False
> > @@ -64,6 +69,7 @@ class FmpCapsuleImageHeaderClass (object):
> > self.UpdateImageSize = 0
> > self.UpdateVendorCodeSize = 0
> > self.UpdateHardwareInstance = 0x0000000000000000
> > + self.ImageCapsuleSupport = 0x0000000000000000
> > self.Payload = b''
> > self.VendorCodeBytes = b''
> >
> > @@ -78,7 +84,8 @@ class FmpCapsuleImageHeaderClass (object):
> > 0,0,0,
> > self.UpdateImageSize,
> > self.UpdateVendorCodeSize,
> > - self.UpdateHardwareInstance
> > + self.UpdateHardwareInstance,
> > + self.ImageCapsuleSupport
> > )
> > self._Valid = True
> > return FmpCapsuleImageHeader + self.Payload +
> self.VendorCodeBytes
> > @@ -86,7 +93,7 @@ class FmpCapsuleImageHeaderClass (object):
> > def Decode (self, Buffer):
> > if len (Buffer) < self._StructSize:
> > raise ValueError
> > - (Version, UpdateImageTypeId, UpdateImageIndex, r0, r1, r2,
> UpdateImageSize, UpdateVendorCodeSize,
> > UpdateHardwareInstance) = \
> > + (Version, UpdateImageTypeId, UpdateImageIndex, r0, r1, r2,
> UpdateImageSize, UpdateVendorCodeSize,
> > UpdateHardwareInstance, ImageCapsuleSupport) = \
> > struct.unpack (
> > self._StructFormat,
> > Buffer[0:self._StructSize]
> > @@ -105,6 +112,7 @@ class FmpCapsuleImageHeaderClass (object):
> > self.UpdateImageSize = UpdateImageSize
> > self.UpdateVendorCodeSize = UpdateVendorCodeSize
> > self.UpdateHardwareInstance = UpdateHardwareInstance
> > + self.ImageCapsuleSupport = ImageCapsuleSupport
> > self.Payload =
> Buffer[self._StructSize:self._StructSize + UpdateImageSize]
> > self.VendorCodeBytes = Buffer[self._StructSize +
> UpdateImageSize:]
> > self._Valid = True
> > @@ -119,6 +127,7 @@ class FmpCapsuleImageHeaderClass (object):
> > print
> ('EFI_FIRMWARE_MANAGEMENT_CAPSULE_IMAGE_HEADER.UpdateImageSize =
> {UpdateImageSize:08X}'.format
> > (UpdateImageSize = self.UpdateImageSize))
> > print
> ('EFI_FIRMWARE_MANAGEMENT_CAPSULE_IMAGE_HEADER.UpdateVendorCodeSize =
> {UpdateVendorCodeSize:08X}'.format
> > (UpdateVendorCodeSize = self.UpdateVendorCodeSize))
> > print
> ('EFI_FIRMWARE_MANAGEMENT_CAPSULE_IMAGE_HEADER.UpdateHardwareInstance =
> > {UpdateHardwareInstance:016X}'.format (UpdateHardwareInstance =
> self.UpdateHardwareInstance))
> > + print
> ('EFI_FIRMWARE_MANAGEMENT_CAPSULE_IMAGE_HEADER.ImageCapsuleSupport =
> {ImageCapsuleSupport:016X}'.format
> > (ImageCapsuleSupport = self.ImageCapsuleSupport))
> > print ('sizeof (Payload)
> = {Size:08X}'.format (Size = len
> > (self.Payload)))
> > print ('sizeof (VendorCodeBytes)
> = {Size:08X}'.format (Size = len
> > (self.VendorCodeBytes)))
> >
> > @@ -153,6 +162,8 @@ class FmpCapsuleHeaderClass (object):
> > _ItemOffsetSize = struct.calcsize (_ItemOffsetFormat)
> >
> > EFI_FIRMWARE_MANAGEMENT_CAPSULE_HEADER_INIT_VERSION = 0x00000001
> > + CAPSULE_SUPPORT_AUTHENTICATION = 0x0000000000000001
> > + CAPSULE_SUPPORT_DEPENDENCY = 0x0000000000000002
> >
> > def __init__ (self):
> > self._Valid = False
> > @@ -172,8 +183,8 @@ class FmpCapsuleHeaderClass (object):
> > raise ValueError
> > return self._EmbeddedDriverList[Index]
> >
> > - def AddPayload (self, UpdateImageTypeId, Payload = b'',
> VendorCodeBytes = b'', HardwareInstance = 0, UpdateImageIndex
> > = 1):
> > - self._PayloadList.append ((UpdateImageTypeId, Payload,
> VendorCodeBytes, HardwareInstance, UpdateImageIndex))
> > + def AddPayload (self, UpdateImageTypeId, Payload = b'',
> VendorCodeBytes = b'', HardwareInstance = 0, UpdateImageIndex
> > = 1, CapsuleSupport = 0):
> > + self._PayloadList.append ((UpdateImageTypeId, Payload,
> VendorCodeBytes, HardwareInstance, UpdateImageIndex,
> > CapsuleSupport))
> >
> > def GetFmpCapsuleImageHeader (self, Index):
> > if Index >= len (self._FmpCapsuleImageHeaderList):
> > @@ -198,13 +209,14 @@ class FmpCapsuleHeaderClass (object):
> > self._ItemOffsetList.append (Offset)
> > Offset = Offset + len (EmbeddedDriver)
> > Index = 1
> > - for (UpdateImageTypeId, Payload, VendorCodeBytes,
> HardwareInstance, UpdateImageIndex) in self._PayloadList:
> > + for (UpdateImageTypeId, Payload, VendorCodeBytes,
> HardwareInstance, UpdateImageIndex, CapsuleSupport) in
> > self._PayloadList:
> > FmpCapsuleImageHeader = FmpCapsuleImageHeaderClass ()
> > FmpCapsuleImageHeader.UpdateImageTypeId =
> UpdateImageTypeId
> > FmpCapsuleImageHeader.UpdateImageIndex =
> UpdateImageIndex
> > FmpCapsuleImageHeader.Payload = Payload
> > FmpCapsuleImageHeader.VendorCodeBytes =
> VendorCodeBytes
> > FmpCapsuleImageHeader.UpdateHardwareInstance =
> HardwareInstance
> > + FmpCapsuleImageHeader.ImageCapsuleSupport =
> CapsuleSupport
> > FmpCapsuleImage = FmpCapsuleImageHeader.Encode ()
> > FmpCapsuleData = FmpCapsuleData + FmpCapsuleImage
> >
> > --
> > 2.17.1
> >
> >
> >
> >
> >
>
>
[-- Attachment #2: Type: text/html, Size: 14273 bytes --]
next prev parent reply other threads:[~2021-05-11 10:21 UTC|newest]
Thread overview: 6+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-04-23 11:28 [PATCH v2] BaseTools: Add support for version 3 of FMP Image Header structure Sughosh Ganu
2021-04-26 15:57 ` [edk2-devel] " Michael D Kinney
2021-05-11 10:21 ` Sughosh Ganu [this message]
2021-05-11 15:09 ` Michael D Kinney
2021-05-12 0:41 ` Bob Feng
-- strict thread matches above, loose matches on Subject: below --
2021-04-22 7:50 Sughosh Ganu
2021-05-12 0:27 ` [edk2-devel] " Bob Feng
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-list from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to='CADg8p96=uedx9D-R8M53RE5OCnqcK2z=rGhe1idXPgD5ypM5+g@mail.gmail.com' \
--to=devel@edk2.groups.io \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox