From: "Xu, Wei6" <wei6.xu@intel.com>
To: "devel@edk2.groups.io" <devel@edk2.groups.io>,
"michael.kubacki@outlook.com" <michael.kubacki@outlook.com>,
Liming Gao <gaoliming@byosoft.com.cn>,
"Kinney, Michael D" <michael.d.kinney@intel.com>,
"Jiang, Guomin" <guomin.jiang@intel.com>
Subject: Re: [edk2-devel] [PATCH v1 1/1] FmpDevicePkg/FmpDxe: Call FmpDeviceLib WithStatus() functions
Date: Fri, 6 Nov 2020 05:15:28 +0000 [thread overview]
Message-ID: <BN7PR11MB277018D2F4660A27EFAD4FD5A1ED0@BN7PR11MB2770.namprd11.prod.outlook.com> (raw)
In-Reply-To: <MWHPR07MB3440EDA942E21BBB1F7E0481E9ED0@MWHPR07MB3440.namprd07.prod.outlook.com>
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;
> }
>
>
next prev parent reply other threads:[~2020-11-06 5:15 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 ` Xu, Wei6 [this message]
2020-11-09 1:03 ` 回复: [edk2-devel] " gaoliming
[not found] ` <1645B1531363BCC0.9654@groups.io>
2020-11-10 1:28 ` gaoliming
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=BN7PR11MB277018D2F4660A27EFAD4FD5A1ED0@BN7PR11MB2770.namprd11.prod.outlook.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