public inbox for devel@edk2.groups.io
 help / color / mirror / Atom feed
From: "gaoliming" <gaoliming@byosoft.com.cn>
To: "'Kinney, Michael D'" <michael.d.kinney@intel.com>,
	<devel@edk2.groups.io>, <michael.kubacki@outlook.com>
Cc: "'Jiang, Guomin'" <guomin.jiang@intel.com>,
	"'Xu, Wei6'" <wei6.xu@intel.com>,
	"'Liu, Zhiguang'" <zhiguang.liu@intel.com>
Subject: 回复: [edk2-devel] [PATCH v6 0/6] Extend Last Attempt Status Usage
Date: Wed, 28 Oct 2020 13:37:01 +0800	[thread overview]
Message-ID: <002f01d6acec$5c6aa2c0$153fe840$@byosoft.com.cn> (raw)
In-Reply-To: <DM6PR11MB44582D256D189A48F7F83291D21F0@DM6PR11MB4458.namprd11.prod.outlook.com>

Create PR https://github.com/tianocore/edk2/pull/1054 for this patch set. 

> -----邮件原件-----
> 发件人: Kinney, Michael D <michael.d.kinney@intel.com>
> 发送时间: 2020年10月20日 8:16
> 收件人: devel@edk2.groups.io; michael.kubacki@outlook.com; Kinney,
> Michael D <michael.d.kinney@intel.com>
> 抄送: Liming Gao <gaoliming@byosoft.com.cn>; Jiang, Guomin
> <guomin.jiang@intel.com>; Xu, Wei6 <wei6.xu@intel.com>; Liu, Zhiguang
> <zhiguang.liu@intel.com>
> 主题: RE: [edk2-devel] [PATCH v6 0/6] Extend Last Attempt Status Usage
> 
> Series Reviewed-by: Michael D Kinney <michael.d.kinney@intel.com>
> 
> 
> > -----Original Message-----
> > From: devel@edk2.groups.io <devel@edk2.groups.io> On Behalf Of Michael
> Kubacki
> > Sent: Monday, October 19, 2020 5:00 PM
> > To: devel@edk2.groups.io
> > Cc: Liming Gao <gaoliming@byosoft.com.cn>; Kinney, Michael D
> <michael.d.kinney@intel.com>; Jiang, Guomin
> > <guomin.jiang@intel.com>; Xu, Wei6 <wei6.xu@intel.com>; Liu, Zhiguang
> <zhiguang.liu@intel.com>
> > Subject: [edk2-devel] [PATCH v6 0/6] Extend Last Attempt Status Usage
> >
> > From: Michael Kubacki <michael.kubacki@microsoft.com>
> >
> > REF:https://bugzilla.tianocore.org/show_bug.cgi?id=2802
> >
> > This patch series adds more granularity to Last Attempt Status
> > codes reported during FMP check image and set image operations
> > that greatly improve precision of the status codes.
> >
> > The unsuccessful vendor range (0x1000 - 0x4000) was introduced
> > in UEFI Specification 2.8. At a high-level, two subranges are
> > defined within that range in this patch series:
> >   1. The FMP Reserved range - reserved for components implemented
> >      in FmpDevicePkg.
> >   2. The FMP Device Library Reserved range - reserved for
> >      FmpDeviceLib instance-specific usage.
> >
> > The ranges are described in a public header file LastAttemptStatus.h
> > while the specific codes used within FmpDevicePkg implementation
> > are defined in a private header file FmpLastAttemptStatus.h.
> >
> > FmpDeviceLib instances should use the range definition from the
> > public header file to define Last Attempt Status codes local to
> > their library instance.
> >
> > Of note, there's multiple approaches to assigning private status
> > codes in the FMP Reserved range. For example, individual components
> > could define their last attempt status codes locally with the
> > range allocated to the component defined in a package-wide private
> > header file. However, one goal of the granularity being introduced
> > is to provide straightforward traceability to an error source.
> >
> > For that reason, it was chosen to define a constant set of codes at
> > the package level in FmpLastAttemptStatus.h. For example, if a new
> > FmpDependencyLib instance is added, it would not be able to reassign
> > status code values in the pre-existing FMP Dependency range; it
> > would reuse codes for the same error source and be able to add new
> > codes onto the range for its usage.
> >
> > V6 changes:
> >   1. FmpDevicePkg/Library/FmpDeviceLibNull
> >      * Updated FmpDeviceCheckImage() and FmpDeviceSetImage() to call
> >      FmpDeviceCheckImageWithStatus() and
> >      FmpDeviceSetImageWithStatus() respectively.
> >
> >      This is to clearly demonstrate to FmpDeviceLib implementors
> >      that only the *WithStatus() versions need to be implemented.
> >
> >   2. FmpDevicePkg/PrivateInclude/FmpLastAttemptStatus.h
> >      * Updated the block comment above the
> >      FmpDependencyCheckLib definitions to use /// instead of //
> >      to be consistent with the rest of the file.
> >
> > V5 changes:
> >   1. Fixed an issue where
> >      LAST_ATTEMPT_STATUS_DRIVER_ERROR_INVALID_CERTIFICATE is
> changed
> >      to LAST_ATTEMPT_STATUS_DRIVER_ERROR_IMAGE_AUTH_FAILURE
> in the
> >      logic to return the last attempt status code in
> >      CheckTheImageInternal().
> >
> > V4 changes:
> >   1. Simplified range value definitions in LastAttemptStatus.h.
> >      Directly assign the values in the macro definition instead
> >      of using calculations.
> >   2. Adjusted range sizes to leave more room for future expansion.
> >
> >      OLD:
> >      START     | END       | Usage
> >      ------------------------------------------------|
> >      0x1000    | 0x1FFF    | FmpDevicePkg            |
> >         0x1000 |    0x107F | FmpDxe driver           |
> >         0x1080 |    0x109F | FMP dependency Libs     |
> >      0x2000    | 0x3FFF    | FmpDeviceLib instances  |
> >
> >      NEW:
> >      START     | END       | Usage
> >      ----------------------------------------------------------------|
> >      0x1000    | 0x17FF    | FmpDevicePkg
> |
> >         0x1000 |    0x107F | FmpDxe driver
> |
> >         0x1080 |    0x109F | FmpDependencyLib
> |
> >         0x10A0 |    0x10BF | FmpDependencyCheckLib
> |
> >         0x10C0 |    0x17FF | Unused. Available for future expansion. |
> >      0x1800    | 0x1FFF    | FmpDeviceLib instances implementation
> |
> >      0x2000    | 0x3FFF    | Unused. Available for future expansion. |
> >
> >   3. Broke the single range in v3 for FMP Dependency libraries into
> >      separate ranges.
> >   4. Clarified LastAttemptStatus return values in each function
> >      description.
> >   5. Returned an expected LastAttemptStatus value for some functions
> >      that previously did not return a value.
> >   6. Reverted changes in FmpDxe to call the new FmpDeviceLib APIs
> >      for FmpDeviceCheckImage () and FmpDeviceSetImage (). These will
> >      be added in a future series after impacted platforms in
> >      edk2-platforms are updated to use the new APIs.
> >   7. Instead of directly changing the pre-existing APIs in
> >      FmpDeviceLib to add a LastAttemptStatus parameter, the new
> >      functions were added to the library interface:
> >        * FmpDeviceCheckImageWithStatus ()
> >        * FmpDeviceSetImageWithStatus ()
> >
> > V3 changes:
> >   1. Enhanced range definitions in LastAttemptStatus.h with more
> >      completeness providing length, min, and max values.
> >   2. Moved the actual Last Attempt Status code assignments to a
> >      private header file PrivateInclude/FmpLastAttemptStatus.h.
> >   3. Changed the value of
> >
> LAST_ATTEMPT_STATUS_ERROR_UNSUCCESSFUL_VENDOR_RANGE_MAX
> >      to 0x3FFF instead of 0x4000 even though 0x4000 is defined in
> >      the UEFI specification. The length is 0x4000 but the max
> >      allowed value should be 0x3FFF. This change was made now to
> >      prevent implementation compatibility issues in the future.
> >   4. Included "DEVICE" in the following macro name to clearly
> >      associate it with the FmpDeviceLib library class:
> >      LAST_ATTEMPT_STATUS_DEVICE_LIBRARY_ERROR_xxx
> >   5. Included a map to help the reader better visualize the range
> >      definitions in LastAttemptStatus.h.
> >   6. Included additional documentation describing the enum in
> >      FmpLastAttemptStatus.h. An explicit statement stating that new
> >      codes should be added onto the end of ranges to preserve the
> >      values was added.
> >   7. Simplified error handling logic in FmpDxe for FmpDeviceLib
> >      calls that return Last Attempt Status.
> >   8. V2 had a single memory allocation failure code used for
> >      different memory allocations in CheckFmpDependency () in
> >      FmpDependencyLib. Each potential allocation failure was
> >      assigned a unique code.
> >
> > V2 changes:
> >   1. Consolidate all previous incremental updates to
> >      LastAttemptStatus.h into one patch (patch 2)
> >   2. Move LastAttemptStatus.h from Include to PrivateInclude
> >   3. Correct patch 1 subject from "FmpDevicePkg" to "MdePkg"
> >
> > Cc: Liming Gao <gaoliming@byosoft.com.cn>
> > Cc: Michael D Kinney <michael.d.kinney@intel.com>
> > Cc: Guomin Jiang <guomin.jiang@intel.com>
> > Cc: Wei6 Xu <wei6.xu@intel.com>
> > Cc: Zhiguang Liu <zhiguang.liu@intel.com>
> > Signed-off-by: Michael Kubacki <michael.kubacki@microsoft.com>
> >
> > Michael Kubacki (6):
> >   MdePkg/SystemResourceTable.h: Add vendor range values
> >   FmpDevicePkg: Add Last Attempt Status header files
> >   FmpDevicePkg/FmpDxe: Add check image path Last Attempt Status
> >     capability
> >   FmpDevicePkg/FmpDxe: Improve set image path Last Attempt Status
> >     granularity
> >   FmpDevicePkg: Add Last Attempt Status support to dependency libs
> >   FmpDevicePkg/FmpDeviceLib: Add Last Attempt Status to Check/Set API
> >
> >  FmpDevicePkg/FmpDxe/FmpDxe.c
> | 146 +++++++++++++++++---
> >
> FmpDevicePkg/Library/FmpDependencyCheckLib/FmpDependencyCheckLib.
> c               |  39 ++++--
> >
> FmpDevicePkg/Library/FmpDependencyCheckLibNull/FmpDependencyCheck
> LibNull.c       |  14 +-
> >  FmpDevicePkg/Library/FmpDependencyLib/FmpDependencyLib.c
> |  93 +++++++++++--
> >  FmpDevicePkg/Library/FmpDeviceLibNull/FmpDeviceLib.c
> | 144 ++++++++++++++++++-
> >
> FmpDevicePkg/Test/UnitTest/Library/FmpDependencyLib/EvaluateDependen
> cyUnitTest.c |   7 +-
> >  FmpDevicePkg/FmpDxe/FmpDxe.h
> |   4 +-
> >  FmpDevicePkg/Include/LastAttemptStatus.h
> |  81 +++++++++++
> >  FmpDevicePkg/Include/Library/FmpDependencyCheckLib.h
> |   8 +-
> >  FmpDevicePkg/Include/Library/FmpDependencyLib.h
> |  44 ++++--
> >  FmpDevicePkg/Include/Library/FmpDeviceLib.h
> | 121 +++++++++++++++-
> >  FmpDevicePkg/PrivateInclude/FmpLastAttemptStatus.h
> |  81 +++++++++++
> >  MdePkg/Include/Guid/SystemResourceTable.h
> |  13 ++
> >  13 files changed, 730 insertions(+), 65 deletions(-)
> >  create mode 100644 FmpDevicePkg/Include/LastAttemptStatus.h
> >  create mode 100644
> FmpDevicePkg/PrivateInclude/FmpLastAttemptStatus.h
> >
> > --
> > 2.28.0.windows.1
> >
> >
> >
> > 
> >




      reply	other threads:[~2020-10-28  5:37 UTC|newest]

Thread overview: 3+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-10-19 23:59 [PATCH v6 0/6] Extend Last Attempt Status Usage Michael Kubacki
2020-10-20  0:15 ` [edk2-devel] " Michael D Kinney
2020-10-28  5:37   ` gaoliming [this message]

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='002f01d6acec$5c6aa2c0$153fe840$@byosoft.com.cn' \
    --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