public inbox for devel@edk2.groups.io
 help / color / mirror / Atom feed
From: "gaoliming" <gaoliming@byosoft.com.cn>
To: <devel@edk2.groups.io>, <gaoliming@byosoft.com.cn>,
	"'Xu, Wei6'" <wei6.xu@intel.com>, <michael.kubacki@outlook.com>,
	"'Kinney, Michael D'" <michael.d.kinney@intel.com>,
	"'Jiang, Guomin'" <guomin.jiang@intel.com>
Subject: 回复: [edk2-devel] [PATCH v1 1/1] FmpDevicePkg/FmpDxe: Call FmpDeviceLib WithStatus() functions
Date: Tue, 10 Nov 2020 09:28:36 +0800	[thread overview]
Message-ID: <008001d6b700$cf834d20$6e89e760$@byosoft.com.cn> (raw)
In-Reply-To: <1645B1531363BCC0.9654@groups.io>

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

> -----邮件原件-----
> 发件人: bounce+27952+67127+4905953+8761045@groups.io
> <bounce+27952+67127+4905953+8761045@groups.io> 代表 gaoliming
> 发送时间: 2020年11月9日 9:03
> 收件人: 'Xu, Wei6' <wei6.xu@intel.com>; devel@edk2.groups.io;
> michael.kubacki@outlook.com; 'Kinney, Michael D'
> <michael.d.kinney@intel.com>; 'Jiang, Guomin' <guomin.jiang@intel.com>
> 主题: 回复: [edk2-devel] [PATCH v1 1/1] FmpDevicePkg/FmpDxe: Call
> FmpDeviceLib WithStatus() functions
> 
> Acked-by: Liming Gao <gaoliming@byosoft.com.cn>
> 
> > -----邮件原件-----
> > 发件人: Xu, Wei6 <wei6.xu@intel.com>
> > 发送时间: 2020年11月6日 13:15
> > 收件人: devel@edk2.groups.io; michael.kubacki@outlook.com; Liming
> Gao
> > <gaoliming@byosoft.com.cn>; Kinney, Michael D
> > <michael.d.kinney@intel.com>; Jiang, Guomin <guomin.jiang@intel.com>
> > 主题: RE: [edk2-devel] [PATCH v1 1/1] FmpDevicePkg/FmpDxe: Call
> > FmpDeviceLib WithStatus() functions
> >
> > This patch is good to me.
> > Reviewed-by: Wei6 Xu <wei6.xu@intel.com>
> >
> > BR,
> > Wei
> > -----Original Message-----
> > From: devel@edk2.groups.io <devel@edk2.groups.io> On Behalf Of Michael
> > Kubacki
> > Sent: Friday, November 6, 2020 11:16 AM
> > To: devel@edk2.groups.io; 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>
> > Subject: Re: [edk2-devel] [PATCH v1 1/1] FmpDevicePkg/FmpDxe: Call
> > FmpDeviceLib WithStatus() functions
> >
> > Hi FmpDevicePkg maintainers,
> >
> > Please let me know your feedback on this patch. Note that it is required to
> > complete the Last Attempt Status support already merged in the following
> > patch series:
> > https://edk2.groups.io/g/devel/message/66418
> >
> > Thanks,
> > Michael
> >
> > On 10/30/2020 2:12 PM, michael.kubacki@outlook.com wrote:
> > > From: Michael Kubacki <michael.kubacki@microsoft.com>
> > >
> > > Commit 6ad819c introduced two new functions in FmpDeviceLib:
> > > 1. FmpDeviceCheckImageWithStatus ()
> > > 2. FmpDeviceSetImageWithStatus ()
> > >
> > > These functions allow an FmpDeviceLib implementation to return a Last
> > > Attempt Status code value within the Device Library range from
> > > LAST_ATTEMPT_STATUS_DEVICE_LIBRARY_MIN_ERROR_CODE_VALUE to
> > > LAST_ATTEMPT_STATUS_DEVICE_LIBRARY_MAX_ERROR_CODE_VALUE.
> > >
> > > To maintain backward compatibility, commit 6ad819c did not update the
> > > FmpDxe driver to invoke these functions. FmpDeviceLib instances should
> > > update their FmpDeviceCheckImage () function to simply call
> > > FmpDeviceCheckImageWithStatus (). Similarly, FmpDeviceSetImage ()
> > > should simply call FmpDeviceSetImageWithStatus (). This is
> > > demonstrated in the implementation of these functions in
> > > FmpDevicePkg/Library/FmpDeviceLibNull/FmpDeviceLib.c. By doing so,
> the
> > > library can remain compatible with FmpDxe implementations before and
> > > after this transition.
> > >
> > > This commit updates FmpDxe to call the WithStatus () version of these
> > > functions enabling the Last Attempt Status code returned to be
> > > accessible to FmpDxe.
> > >
> > > 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>
> > > Signed-off-by: Michael Kubacki <michael.kubacki@microsoft.com>
> > > ---
> > >   FmpDevicePkg/FmpDxe/FmpDxe.c | 40 ++++++++++++++++++--
> > >   1 file changed, 36 insertions(+), 4 deletions(-)
> > >
> > > diff --git a/FmpDevicePkg/FmpDxe/FmpDxe.c
> > > b/FmpDevicePkg/FmpDxe/FmpDxe.c index de7f1fe53e32..6b0675ea38f8
> > 100644
> > > --- a/FmpDevicePkg/FmpDxe/FmpDxe.c
> > > +++ b/FmpDevicePkg/FmpDxe/FmpDxe.c
> > > @@ -1025,9 +1025,24 @@ CheckTheImageInternal (
> > >     //
> > >     // FmpDeviceLib CheckImage function to do any specific checks
> > >     //
> > > -  Status = FmpDeviceCheckImage ((((UINT8 *)Image) + AllHeaderSize),
> > > RawSize, ImageUpdatable);
> > > +  Status = FmpDeviceCheckImageWithStatus ((((UINT8 *) Image) +
> > > + AllHeaderSize), RawSize, ImageUpdatable, LastAttemptStatus);
> > >     if (EFI_ERROR (Status)) {
> > >       DEBUG ((DEBUG_ERROR, "FmpDxe(%s): CheckTheImage() -
> > FmpDeviceLib
> > > CheckImage failed. Status = %r\n", mImageIdName, Status));
> > > +
> > > +    //
> > > +    // LastAttemptStatus returned from the device library should fall
> > within the designated error range
> > > +    //
> > [LAST_ATTEMPT_STATUS_DEVICE_LIBRARY_MIN_ERROR_CODE_VALUE,
> > LAST_ATTEMPT_STATUS_DEVICE_LIBRARY_MAX_ERROR_CODE_VALUE]
> > > +    //
> > > +    if ((*LastAttemptStatus <
> > LAST_ATTEMPT_STATUS_DEVICE_LIBRARY_MIN_ERROR_CODE_VALUE) ||
> > > +        (*LastAttemptStatus >
> > LAST_ATTEMPT_STATUS_DEVICE_LIBRARY_MAX_ERROR_CODE_VALUE)) {
> > > +      DEBUG (
> > > +        (DEBUG_ERROR,
> > > +        "FmpDxe(%s): CheckTheImage() - LastAttemptStatus %d from
> > FmpDeviceCheckImageWithStatus() is invalid.\n",
> > > +        mImageIdName,
> > > +        *LastAttemptStatus)
> > > +        );
> > > +      *LastAttemptStatus =
> > LAST_ATTEMPT_STATUS_ERROR_UNSUCCESSFUL;
> > > +    }
> > >     }
> > >
> > >   cleanup:
> > > @@ -1353,16 +1368,33 @@ SetTheImage (
> > >     //
> > >     //Copy the requested image to the firmware using the FmpDeviceLib
> > >     //
> > > -  Status = FmpDeviceSetImage (
> > > -             (((UINT8 *)Image) + AllHeaderSize),
> > > +  Status = FmpDeviceSetImageWithStatus (
> > > +             (((UINT8 *) Image) + AllHeaderSize),
> > >                ImageSize - AllHeaderSize,
> > >                VendorCode,
> > >                FmpDxeProgress,
> > >                IncomingFwVersion,
> > > -             AbortReason
> > > +             AbortReason,
> > > +             &LastAttemptStatus
> > >                );
> > >     if (EFI_ERROR (Status)) {
> > >       DEBUG ((DEBUG_ERROR, "FmpDxe(%s): SetTheImage() SetImage
> > from
> > > FmpDeviceLib failed. Status =  %r.\n", mImageIdName, Status));
> > > +
> > > +    //
> > > +    // LastAttemptStatus returned from the device library should fall
> > within the designated error range
> > > +    //
> > [LAST_ATTEMPT_STATUS_DEVICE_LIBRARY_MIN_ERROR_CODE_VALUE,
> > LAST_ATTEMPT_STATUS_DEVICE_LIBRARY_MAX_ERROR_CODE_VALUE]
> > > +    //
> > > +    if ((LastAttemptStatus <
> > LAST_ATTEMPT_STATUS_DEVICE_LIBRARY_MIN_ERROR_CODE_VALUE) ||
> > > +        (LastAttemptStatus >
> > LAST_ATTEMPT_STATUS_DEVICE_LIBRARY_MAX_ERROR_CODE_VALUE)) {
> > > +      DEBUG (
> > > +        (DEBUG_ERROR,
> > > +        "FmpDxe(%s): SetTheImage() - LastAttemptStatus %d from
> > FmpDeviceSetImageWithStatus() is invalid.\n",
> > > +        mImageIdName,
> > > +        LastAttemptStatus)
> > > +        );
> > > +      LastAttemptStatus =
> > LAST_ATTEMPT_STATUS_ERROR_UNSUCCESSFUL;
> > > +    }
> > > +
> > >       goto cleanup;
> > >     }
> > >
> > >
> >
> >
> >
> >
> 
> 
> 
> 
> 
> 
> 




      parent reply	other threads:[~2020-11-10  1:28 UTC|newest]

Thread overview: 5+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-10-30 21:12 [PATCH v1 1/1] FmpDevicePkg/FmpDxe: Call FmpDeviceLib WithStatus() functions Michael Kubacki
2020-11-06  3:16 ` Michael Kubacki
2020-11-06  5:15   ` [edk2-devel] " Xu, Wei6
2020-11-09  1:03     ` 回复: " gaoliming
     [not found]     ` <1645B1531363BCC0.9654@groups.io>
2020-11-10  1:28       ` 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='008001d6b700$cf834d20$6e89e760$@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