public inbox for devel@edk2.groups.io
 help / color / mirror / Atom feed
From: "Xu, GuoX" <guox.xu@intel.com>
To: "Kinney, Michael D" <michael.d.kinney@intel.com>,
	gaoliming <gaoliming@byosoft.com.cn>,
	"devel@edk2.groups.io" <devel@edk2.groups.io>
Cc: "Liu, Zhiguang" <zhiguang.liu@intel.com>
Subject: Re: [edk2-devel] [PATCH 1/1] MdePkg:Updated the comments of EFI_FIRMWARE_MANAGEMENT_PROTOCOL
Date: Tue, 30 Jan 2024 07:17:48 +0000	[thread overview]
Message-ID: <DM8PR11MB57019E932515DA6921F8032EE97D2@DM8PR11MB5701.namprd11.prod.outlook.com> (raw)
In-Reply-To: <SA2PR11MB4938C2448B404E48140844B6D2752@SA2PR11MB4938.namprd11.prod.outlook.com>

Hi Michael,

Thanks for your suggestions.

1. In edk2 repo there are two implementations for Firmware Management Protocol.
  1.1 In edk2\FmpDevicePkg\FmpDxe\FmpDxe.c, function GetTheImageInfo():
    //
    // Check the buffer size
    // NOTE: Check this first so caller can get the necessary memory size it must allocate.
    //
    if (*ImageInfoSize < (sizeof (EFI_FIRMWARE_IMAGE_DESCRIPTOR))) {
      *ImageInfoSize = sizeof (EFI_FIRMWARE_IMAGE_DESCRIPTOR);
      DEBUG ((DEBUG_VERBOSE, "FmpDxe(%s): GetImageInfo() - ImageInfoSize is to small.\n", mImageIdName));
      Status = EFI_BUFFER_TOO_SMALL;
      goto cleanup;
    }

    //
    // Confirm that buffer isn't null
    //
    if (  (ImageInfo == NULL) || (DescriptorVersion == NULL) || (DescriptorCount == NULL) || (DescriptorSize == NULL)
       || (PackageVersion == NULL))
    {
      DEBUG ((DEBUG_ERROR, "FmpDxe(%s): GetImageInfo() - Pointer Parameter is NULL.\n", mImageIdName));
      Status = EFI_INVALID_PARAMETER;
      goto cleanup;
    }
    In the line 497 to 498, it is missed the judgment of PackageVersionName but there is a comment in line 529 " // Do not update PackageVersionName since it is not supported in this instance."
    So, do we need to add the judgment of PackageVersionName in this function?

  1.2 In edk2\SignedCapsulePkg\Universal\SystemFirmwareUpdate\SystemFirmwareCommonDxe.c, function FmpGetImageInfo():
         if (ImageInfoSize == NULL) {
           return EFI_INVALID_PARAMETER;
         }

         if (*ImageInfoSize < sizeof (EFI_FIRMWARE_IMAGE_DESCRIPTOR) * SystemFmpPrivate->DescriptorCount) {
           *ImageInfoSize = sizeof (EFI_FIRMWARE_IMAGE_DESCRIPTOR) * SystemFmpPrivate->DescriptorCount;
           return EFI_BUFFER_TOO_SMALL;
        }

        if ((ImageInfo == NULL) ||
          (DescriptorVersion == NULL) ||
          (DescriptorCount == NULL) ||
          (DescriptorSize == NULL) ||
          (PackageVersion == NULL) ||
          (PackageVersionName == NULL))
       {
         return EFI_INVALID_PARAMETER;
       }
    The implementation already included the required code changes.

 2. In edk2-platforms repo there is only one implementation for Firmware Management Protocol.
     In the file MicrocodeFmp.c, function FmpGetImageInfo():
     If (ImageInfoSize == NULL) {
       return EFI_INVALID_PARAMETER;
     }
     if (*ImageInfoSize < sizeof(EFI_FIRMWARE_IMAGE_DESCRIPTOR) * MicrocodeFmpPrivate->DescriptorCount) {
       *ImageInfoSize = sizeof(EFI_FIRMWARE_IMAGE_DESCRIPTOR) * MicrocodeFmpPrivate->DescriptorCount;
       return EFI_BUFFER_TOO_SMALL;
     }
     if (ImageInfo == NULL ||
        DescriptorVersion == NULL ||
        DescriptorCount == NULL ||
        DescriptorSize == NULL ||
        PackageVersion == NULL ||
        PackageVersionName == NULL) {
      return EFI_INVALID_PARAMETER;
    }
   The implementation already included the required code changes.    

Thanks
Xu Guo

-----Original Message-----
From: Kinney, Michael D <michael.d.kinney@intel.com> 
Sent: Tuesday, January 23, 2024 7:08 AM
To: Xu, GuoX <guox.xu@intel.com>; gaoliming <gaoliming@byosoft.com.cn>; devel@edk2.groups.io
Cc: Liu, Zhiguang <zhiguang.liu@intel.com>; Kinney, Michael D <michael.d.kinney@intel.com>
Subject: RE: [edk2-devel] [PATCH 1/1] MdePkg:Updated the comments of EFI_FIRMWARE_MANAGEMENT_PROTOCOL

Hi Guo,

Thank you for starting this task to update Firmware Management Protocol.

There are additional tasks to make sure all required code changes are also implemented for a specification update like this.

* Create a TianoCore Bugzilla that describes the specification update
  needed with links to the public documents with the required
  specification update. 

* Review/update edk2 repo include files.

* Review/update function headers of the implementations of the
  Firmware Management Protocol in the edk2 repo.

* Review/update logic in implementations of the Firmware
  Management Protocol in the edk2 repo to make sure all error
  return conditions are checked.

* Review/update function headers of the implementations of the
  Firmware Management Protocol in the edk2-platforms repo.

* Review/update logic in implementations of the Firmware
  Management Protocol in the edk2-platforms repo to make sure
  all error return conditions are checked.

* Review/update test cases edk2-test repo for the UEFI SCTs for
  these error return conditions.


The "REF" in the commit message should be a link to the TianoCore Bugzilla.  The reference to the specification is also required, but should be in the text of the commit message.

Thanks,

Mike


> -----Original Message-----
> From: Xu, GuoX <guox.xu@intel.com>
> Sent: Sunday, January 21, 2024 9:37 PM
> To: gaoliming <gaoliming@byosoft.com.cn>; devel@edk2.groups.io
> Cc: Kinney, Michael D <michael.d.kinney@intel.com>; Liu, Zhiguang 
> <zhiguang.liu@intel.com>
> Subject: RE: [edk2-devel] [PATCH 1/1] MdePkg:Updated the comments of 
> EFI_FIRMWARE_MANAGEMENT_PROTOCOL
> 
> Hi Liming,
>   I created a PR: https://github.com/tianocore/edk2/pull/5182, could 
> you help push it ?
> 
> Thanks
> Xu Guo
> 
> -----Original Message-----
> From: gaoliming <gaoliming@byosoft.com.cn>
> Sent: Tuesday, January 16, 2024 10:20 PM
> To: devel@edk2.groups.io; Xu, GuoX <guox.xu@intel.com>
> Cc: Kinney, Michael D <michael.d.kinney@intel.com>; Liu, Zhiguang 
> <zhiguang.liu@intel.com>
> Subject: 回复: [edk2-devel] [PATCH 1/1] MdePkg:Updated the comments of 
> EFI_FIRMWARE_MANAGEMENT_PROTOCOL
> 
> I am OK for this change. Reviewed-by: Liming Gao 
> <gaoliming@byosoft.com.cn>
> 
> > -----邮件原件-----
> > 发件人: devel@edk2.groups.io <devel@edk2.groups.io> 代表 Xu, GuoX
> > 发送时间: 2024年1月9日 17:24
> > 收件人: devel@edk2.groups.io
> > 抄送: Kinney, Michael D <michael.d.kinney@intel.com>; Gao, Liming 
> > <gaoliming@byosoft.com.cn>; Liu, Zhiguang <zhiguang.liu@intel.com>
> > 主题: Re: [edk2-devel] [PATCH 1/1] MdePkg:Updated the comments of 
> > EFI_FIRMWARE_MANAGEMENT_PROTOCOL
> >
> > Hi all, any comments about this patch?
> >
> > -----Original Message-----
> > From: devel@edk2.groups.io <devel@edk2.groups.io> On Behalf Of GuoX 
> > Xu
> > Sent: Monday, December 25, 2023 9:21 AM
> > To: devel@edk2.groups.io
> > Cc: Kinney, Michael D <michael.d.kinney@intel.com>; Gao, Liming 
> > <gaoliming@byosoft.com.cn>; Liu, Zhiguang <zhiguang.liu@intel.com>; 
> > Li, Yi1 <yi1.li@intel.com>
> > Subject: [edk2-devel] [PATCH 1/1] MdePkg:Updated the comments of 
> > EFI_FIRMWARE_MANAGEMENT_PROTOCOL
> >
> > 1.For EFI_FIRMWARE_MANAGEMENT_PROTOCOL.GetImage():
> > Add the following sentence at the end of the Image parameter
> description.
> > "May be NULL with a zero ImageSize in order to determine the size of 
> > the buffer needed".
> >
> > Modify the description of "EFI_INVALID_PARAMETER" return code as 
> > "The ImageSize is not too small and Image is NULL."
> >
> > 2.For EFI_FIRMWARE_MANAGEMENT_PROTOCOL.GetImageInfo():
> > Add the following sentence at the end of the ImageInfo parameter 
> > description."May be NULL with a zero ImageInfoSize in order to 
> > determine the size of the buffer needed".
> >
> > Modify the description of "EFI_INVALID_PARAMETER" return code as 
> > "The ImageInfoSize is not too small and Image is NULL." and add new 
> > descriptions for "EFI_INVALID_PARAMETER" return code.
> >
> > REF: UEFI Spec 2.7B Chapter 23.1.
> >
> > Cc: Michael D Kinney <michael.d.kinney@intel.com>
> > Cc: Liming Gao <gaoliming@byosoft.com.cn>
> > Cc: Zhiguang Liu <zhiguang.liu@intel.com>
> > Cc: Yi Li <yi1.li@intel.com>
> > Signed-off-by: GuoX Xu <guox.xu@intel.com>
> > ---
> >  MdePkg/Include/Protocol/FirmwareManagement.h | 13 +++++++++++--
> >  1 file changed, 11 insertions(+), 2 deletions(-)
> >
> > diff --git a/MdePkg/Include/Protocol/FirmwareManagement.h
> > b/MdePkg/Include/Protocol/FirmwareManagement.h
> > index f37067df3455..93c8b7658e1a 100644
> > --- a/MdePkg/Include/Protocol/FirmwareManagement.h
> > +++ b/MdePkg/Include/Protocol/FirmwareManagement.h
> > @@ -293,6 +293,8 @@ EFI_STATUS
> >                                       to contain the image(s) 
> > information if the buffer was too small.
> >    @param[in, out] ImageInfo          A pointer to the buffer in which
> > firmware places the current image(s)
> >                                       information. The information 
> > is an array of EFI_FIRMWARE_IMAGE_DESCRIPTORs.
> > +                                     May be NULL with a zero
> > ImageInfoSize in order to determine the size of the
> > +                                     buffer needed.
> >    @param[out]     DescriptorVersion  A pointer to the location in
> which
> > firmware returns the version number
> >                                       associated with the 
> > EFI_FIRMWARE_IMAGE_DESCRIPTOR.
> >    @param[out]     DescriptorCount    A pointer to the location in
> > which firmware returns the number of @@ -313,7 +315,12 @@ EFI_STATUS
> >    @retval EFI_SUCCESS                The device was successfully
> > updated with the new image.
> >    @retval EFI_BUFFER_TOO_SMALL       The ImageInfo buffer was too
> > small. The current buffer size
> >                                       needed to hold the image(s) 
> > information is returned in ImageInfoSize.
> > -  @retval EFI_INVALID_PARAMETER      ImageInfoSize is NULL.
> > +  @retval EFI_INVALID_PARAMETER      ImageInfoSize is not too small
> > and ImageInfo is NULL.
> > +  @retval EFI_INVALID_PARAMETER      ImageInfoSize is non-zero and
> > DescriptorVersion is NULL.
> > +  @retval EFI_INVALID_PARAMETER      ImageInfoSize is non-zero and
> > DescriptorCount is NULL.
> > +  @retval EFI_INVALID_PARAMETER      ImageInfoSize is non-zero and
> > DescriptorSize is NULL.
> > +  @retval EFI_INVALID_PARAMETER      ImageInfoSize is non-zero and
> > PackageVersion is NULL.
> > +  @retval EFI_INVALID_PARAMETER      ImageInfoSize is non-zero and
> > PackageVersionName is NULL.
> >    @retval EFI_DEVICE_ERROR           Valid information could not be
> > returned. Possible corrupted image.
> >
> >  **/
> > @@ -340,6 +347,8 @@ EFI_STATUS
> >    @param[in]      ImageIndex     A unique number identifying the
> > firmware image(s) within the device.
> >                                   The number is between 1 and 
> > DescriptorCount.
> >    @param[out]     Image          Points to the buffer where the
> > current image is copied to.
> > +                                 May be NULL with a zero
> > ImageSize in order to determine the size of the
> > +                                 buffer needed.
> >    @param[in, out] ImageSize      On entry, points to the size of the
> > buffer pointed to by Image, in bytes.
> >                                   On return, points to the length of 
> > the image, in bytes.
> >
> > @@ -347,7 +356,7 @@ EFI_STATUS
> >    @retval EFI_BUFFER_TOO_SMALL   The buffer specified by ImageSize is
> > too small to hold the
> >                                   image. The current buffer size 
> > needed to hold the image is returned
> >                                   in ImageSize.
> > -  @retval EFI_INVALID_PARAMETER  The Image was NULL.
> > +  @retval EFI_INVALID_PARAMETER  The ImageSize is not too small and
> > Image is NULL.
> >    @retval EFI_NOT_FOUND          The current image is not copied to
> > the buffer.
> >    @retval EFI_UNSUPPORTED        The operation is not supported.
> >    @retval EFI_SECURITY_VIOLATION The operation could not be 
> > performed due to an authentication failure.
> > --
> > 2.29.2.windows.3
> >
> >
> >
> >
> >
> >
> >
> >
> > 
> >
> 
> 



-=-=-=-=-=-=-=-=-=-=-=-
Groups.io Links: You receive all messages sent to this group.
View/Reply Online (#114798): https://edk2.groups.io/g/devel/message/114798
Mute This Topic: https://groups.io/mt/103898765/7686176
Group Owner: devel+owner@edk2.groups.io
Unsubscribe: https://edk2.groups.io/g/devel/unsub [rebecca@openfw.io]
-=-=-=-=-=-=-=-=-=-=-=-



  reply	other threads:[~2024-01-30 16:32 UTC|newest]

Thread overview: 8+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <cover.1703466776.git.guox.xu@intel.com>
2023-12-25  1:21 ` [edk2-devel] [PATCH 1/1] MdePkg:Updated the comments of EFI_FIRMWARE_MANAGEMENT_PROTOCOL GuoX Xu
     [not found]   ` <CO1PR11MB49167DF996E427FCE9B823D6966A2@CO1PR11MB4916.namprd11.prod.outlook.com>
2024-01-09  9:24     ` Xu, GuoX
2024-01-16 14:20       ` 回复: " gaoliming via groups.io
2024-01-22  5:37         ` Xu, GuoX
2024-01-22 23:08           ` Michael D Kinney
2024-01-30  7:17             ` Xu, GuoX [this message]
2024-01-30 18:18               ` Michael D Kinney
2024-01-30 19:41                 ` Michael D Kinney

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=DM8PR11MB57019E932515DA6921F8032EE97D2@DM8PR11MB5701.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