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-
> bounces@lists.01.org] On Behalf Of Ard Biesheuvel
> Sent: Wednesday, May 30, 2018 12:08 AM
> To: Kinney, Michael D <michael.d.kinney@intel.com>
> Cc: edk2-devel@lists.01.org; Yao, Jiewen
> <jiewen.yao@intel.com>
> Subject: Re: [edk2] [RFC v3 0/4] Add FmpDevicePkg
>
> On 30 May 2018 at 00:37, Michael D Kinney
> <michael.d.kinney@intel.com> 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 <sean.brogan@microsoft.com>
> > Cc: Jiewen Yao <jiewen.yao@intel.com>
> > Contributed-under: TianoCore Contribution Agreement
> 1.1
> > Signed-off-by: Michael D Kinney
> <michael.d.kinney@intel.com>
> >
> > 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
> > edk2-devel@lists.01.org
> > https://lists.01.org/mailman/listinfo/edk2-devel
> _______________________________________________
> edk2-devel mailing list
> edk2-devel@lists.01.org
> https://lists.01.org/mailman/listinfo/edk2-devel
_______________________________________________
edk2-devel mailing list
edk2-devel@lists.01.org
https://lists.01.org/mailman/listinfo/edk2-devel