Hi Add,

The FmpDevicePkg is a different way to produce
FMP and the recommendation will be to use this
one instead of the existing one.  The concept
is to provide a simpler way to produce an FMP
with a library instance and a few PCD settings.
It has greater flexibility in managing public
keys, supports multiple public keys per FMP,
and it also enables a platform to produce
multiple FMP instances to support the update
of different regions of a FW storage device
or update different devices that have support
FW updates.

I have put FmpDevicePkg and the new tools 
to support building capsules as RFCs to get
some initial feedback.

My next step is to add an edk2-staging branch
with this content along with a set of complete
examples around the MinnowMax platform that
demonstrate the capabilities and usage.

I will also create a set of Wiki pages on how
to integrate this feature into a platform.

Thanks,

Mike

> -----Original Message-----
> From: edk2-devel [mailto:edk2-devel-
> [email protected]] On Behalf Of Ard Biesheuvel
> Sent: Wednesday, May 30, 2018 12:08 AM
> To: Kinney, Michael D <[email protected]>
> Cc: [email protected]; Yao, Jiewen
> <[email protected]>
> Subject: Re: [edk2] [RFC v3 0/4] Add FmpDevicePkg
> 
> On 30 May 2018 at 00:37, Michael D Kinney
> <[email protected]> wrote:
> > https://bugzilla.tianocore.org/show_bug.cgi?id=922
> >
> > Changes in V3
> > =============
> > * Change CheckLowestSupportedVersion() to
> LowestSupportedVersionCheckRequired()
> > * Change LockFmpDeviceAtLockEventGuid() to
> LockFmpDeviceAtLockEventGuidRequired()
> > * Set EDKII_FIRMWARE_MANAGEMENT_PROGRESS_PROTOCOL
> Version field to 1
> > * Fix description of return values in
> LowestSupportedVersionCheckRequired()
> > * Fix description of return values in
> LockFmpDeviceAtLockEventGuidRequired()
> >
> > Changes in V2
> > =============
> > * FmpDevicePkg DEC file
> >   + Change PcdFmpDeviceSystemResetRequired from
> FeatureFlag
> >     to FixedAtBuild
> >   + Add PcdFmpDeviceTestKeySha256Digest for test key
> detection.
> >     Set to {0} to disable test key detection.
> > * FmpDevicePkg DSC file
> >   + Fix ARM and AARCH64 build issues
> >   + Update DisplayUpdateProgressLib mappings to match
> patches in
> >     Bug_801_DisplayUpdateProgressLib_V2
> > * FmpDeviceLib Class and Instance
> >   + Update FmpDeviceGetSize() to return EFI_STATUS
> >   + Update FmpDeviceGetAttributes() to return
> EFI_STATUS
> >   + Update FmpDeviceGetVersionString() to return
> EFI_STATUS
> > * FmpDxe
> >   + Set depex to Variable Arch Write Protocol and
> Variable Lock Protocol
> >   + Break out test key detection in FmpDxe into
> DetectTestKey.c
> >   + Change LockAllVars() to LockAllFmpVariables()
> >   + Update LockAllFmpVariables() to lock each of the
> UEFI variables used.
> >   + Always lock UEFI variables when
> PcdFmpDeviceLockEventGuid is signaled
> >   + Remove ComputeVersionName().  FmpDeviceLib must
> provide version string
> >
> > Based on content from the following branch:
> >
> >
> https://github.com/Microsoft/MS_UEFI/tree/share/MsCapsul
> eSupport/MsCapsuleUpdatePkg
> >
> > Branch for review:
> >
> >
> https://github.com/mdkinney/edk2/tree/Bug_922_FmpDeviceP
> kg_V2
> >
> > This package provides an implementation of a Firmware
> Management Protocol
> > instance that supports the update of firmware storage
> devices using UEFI
> > Capsules.  The behavior of the Firmware Management
> Protocol instance is
> > customized using libraries and PCDs.
> >
> 
> Let me ask again: how does this code relate to the
> already existing
> FMP implementation we have in the edk2 tree?
> 
> 
> > Cc: Sean Brogan <[email protected]>
> > Cc: Jiewen Yao <[email protected]>
> > Contributed-under: TianoCore Contribution Agreement
> 1.1
> > Signed-off-by: Michael D Kinney
> <[email protected]>
> >
> > Kinney, Michael D (4):
> >   FmpDevicePkg: Add package, library classes, and PCDs
> >   FmpDevicePkg: Add library instances
> >   FmpDevicePkg: Add FmpDxe module
> >   FmpDevicePkg: Add DSC file to build all package
> components
> >
> >  FmpDevicePkg/FmpDevicePkg.dec                      |
> 132 ++
> >  FmpDevicePkg/FmpDevicePkg.dsc                      |
> 134 ++
> >  FmpDevicePkg/FmpDevicePkg.uni                      |
> 80 ++
> >  FmpDevicePkg/FmpDevicePkgExtra.uni                 |
> 18 +
> >  FmpDevicePkg/FmpDxe/DetectTestKey.c                |
> 166 +++
> >  FmpDevicePkg/FmpDxe/FmpDxe.c                       |
> 1452 ++++++++++++++++++++
> >  FmpDevicePkg/FmpDxe/FmpDxe.inf                     |
> 93 ++
> >  FmpDevicePkg/FmpDxe/FmpDxe.uni                     |
> 20 +
> >  FmpDevicePkg/FmpDxe/FmpDxeExtra.uni                |
> 18 +
> >  FmpDevicePkg/FmpDxe/FmpDxeLib.inf                  |
> 90 ++
> >  FmpDevicePkg/FmpDxe/VariableSupport.c              |
> 461 +++++++
> >  FmpDevicePkg/FmpDxe/VariableSupport.h              |
> 180 +++
> >  .../Include/Library/CapsuleUpdatePolicyLib.h       |
> 120 ++
> >  FmpDevicePkg/Include/Library/FmpDeviceLib.h        |
> 405 ++++++
> >  FmpDevicePkg/Include/Library/FmpPayloadHeaderLib.h |
> 100 ++
> >  .../CapsuleUpdatePolicyLibNull.c                   |
> 136 ++
> >  .../CapsuleUpdatePolicyLibNull.inf                 |
> 45 +
> >  .../CapsuleUpdatePolicyLibNull.uni                 |
> 17 +
> >  .../Library/FmpDeviceLibNull/FmpDeviceLib.c        |
> 427 ++++++
> >  .../Library/FmpDeviceLibNull/FmpDeviceLibNull.inf  |
> 48 +
> >  .../Library/FmpDeviceLibNull/FmpDeviceLibNull.uni  |
> 18 +
> >  .../FmpPayloadHeaderLibV1/FmpPayloadHeaderLib.c    |
> 188 +++
> >  .../FmpPayloadHeaderLibV1.inf                      |
> 48 +
> >  .../FmpPayloadHeaderLibV1.uni                      |
> 21 +
> >  24 files changed, 4417 insertions(+)
> >  create mode 100644 FmpDevicePkg/FmpDevicePkg.dec
> >  create mode 100644 FmpDevicePkg/FmpDevicePkg.dsc
> >  create mode 100644 FmpDevicePkg/FmpDevicePkg.uni
> >  create mode 100644 FmpDevicePkg/FmpDevicePkgExtra.uni
> >  create mode 100644
> FmpDevicePkg/FmpDxe/DetectTestKey.c
> >  create mode 100644 FmpDevicePkg/FmpDxe/FmpDxe.c
> >  create mode 100644 FmpDevicePkg/FmpDxe/FmpDxe.inf
> >  create mode 100644 FmpDevicePkg/FmpDxe/FmpDxe.uni
> >  create mode 100644
> FmpDevicePkg/FmpDxe/FmpDxeExtra.uni
> >  create mode 100644 FmpDevicePkg/FmpDxe/FmpDxeLib.inf
> >  create mode 100644
> FmpDevicePkg/FmpDxe/VariableSupport.c
> >  create mode 100644
> FmpDevicePkg/FmpDxe/VariableSupport.h
> >  create mode 100644
> FmpDevicePkg/Include/Library/CapsuleUpdatePolicyLib.h
> >  create mode 100644
> FmpDevicePkg/Include/Library/FmpDeviceLib.h
> >  create mode 100644
> FmpDevicePkg/Include/Library/FmpPayloadHeaderLib.h
> >  create mode 100644
> FmpDevicePkg/Library/CapsuleUpdatePolicyLibNull/CapsuleU
> pdatePolicyLibNull.c
> >  create mode 100644
> FmpDevicePkg/Library/CapsuleUpdatePolicyLibNull/CapsuleU
> pdatePolicyLibNull.inf
> >  create mode 100644
> FmpDevicePkg/Library/CapsuleUpdatePolicyLibNull/CapsuleU
> pdatePolicyLibNull.uni
> >  create mode 100644
> FmpDevicePkg/Library/FmpDeviceLibNull/FmpDeviceLib.c
> >  create mode 100644
> FmpDevicePkg/Library/FmpDeviceLibNull/FmpDeviceLibNull.i
> nf
> >  create mode 100644
> FmpDevicePkg/Library/FmpDeviceLibNull/FmpDeviceLibNull.u
> ni
> >  create mode 100644
> FmpDevicePkg/Library/FmpPayloadHeaderLibV1/FmpPayloadHea
> derLib.c
> >  create mode 100644
> FmpDevicePkg/Library/FmpPayloadHeaderLibV1/FmpPayloadHea
> derLibV1.inf
> >  create mode 100644
> FmpDevicePkg/Library/FmpPayloadHeaderLibV1/FmpPayloadHea
> derLibV1.uni
> >
> > --
> > 2.14.2.windows.3
> >
> > _______________________________________________
> > edk2-devel mailing list
> > [email protected]
> > https://lists.01.org/mailman/listinfo/edk2-devel
> _______________________________________________
> edk2-devel mailing list
> [email protected]
> https://lists.01.org/mailman/listinfo/edk2-devel
_______________________________________________
edk2-devel mailing list
[email protected]
https://lists.01.org/mailman/listinfo/edk2-devel

Reply via email to