From: "Sun, Zailiang" <zailiang.sun@intel.com>
To: "devel@edk2.groups.io" <devel@edk2.groups.io>,
"Jin, Eric" <eric.jin@intel.com>
Cc: "Qian, Yi" <yi.qian@intel.com>,
"Kinney, Michael D" <michael.d.kinney@intel.com>,
"Gao, Liming" <liming.gao@intel.com>
Subject: Re: [edk2-devel] [edk2-platforms][PATCH] Vlv2TbltDevicePkg/FmpDeviceLib: Implement new APIs
Date: Mon, 12 Aug 2019 02:33:25 +0000 [thread overview]
Message-ID: <7CB7EF03E15B5D48981329A508747A9850CAA826@SHSMSX104.ccr.corp.intel.com> (raw)
In-Reply-To: <20190812014454.44628-1-eric.jin@intel.com>
Reviewed-by: Zailiang Sun <zailiang.sun@intel.com>
> -----Original Message-----
> From: devel@edk2.groups.io [mailto:devel@edk2.groups.io] On Behalf Of
> Eric Jin
> Sent: Monday, August 12, 2019 9:45 AM
> To: devel@edk2.groups.io
> Cc: Sun, Zailiang <zailiang.sun@intel.com>; Qian, Yi <yi.qian@intel.com>;
> Kinney, Michael D <michael.d.kinney@intel.com>; Gao, Liming
> <liming.gao@intel.com>
> Subject: [edk2-devel] [edk2-platforms][PATCH]
> Vlv2TbltDevicePkg/FmpDeviceLib: Implement new APIs
>
> Implement new APIs defined in FmpDeviceLib
> * RegisterFmpUninstaller()
> * FmpDeviceSetContext()
> * FmpDeviceGetHardwareInstance()
>
> Cc: Zailiang Sun <zailiang.sun@intel.com>
> Cc: Yi Qian <yi.qian@intel.com>
> Cc: Michael D Kinney <michael.d.kinney@intel.com>
> Cc: Liming Gao <liming.gao@intel.com>
> Signed-off-by: Eric Jin <eric.jin@intel.com>
> ---
> .../Library/FmpDeviceLib/FmpDeviceLib.c | 95 ++++++++++++++++++
> .../Library/FmpDeviceLibSample/FmpDeviceLib.c | 99
> ++++++++++++++++++-
> 2 files changed, 192 insertions(+), 2 deletions(-)
>
> diff --git
> a/Platform/Intel/Vlv2TbltDevicePkg/Feature/Capsule/Library/FmpDeviceLib/
> FmpDeviceLib.c
> b/Platform/Intel/Vlv2TbltDevicePkg/Feature/Capsule/Library/FmpDeviceLib
> /FmpDeviceLib.c
> index 57185d8d09..d8c9036012 100644
> ---
> a/Platform/Intel/Vlv2TbltDevicePkg/Feature/Capsule/Library/FmpDeviceLib/
> FmpDeviceLib.c
> +++
> b/Platform/Intel/Vlv2TbltDevicePkg/Feature/Capsule/Library/FmpDevice
> +++ Lib/FmpDeviceLib.c
> @@ -66,6 +66,73 @@ RegisterFmpInstaller (
> return EFI_UNSUPPORTED;
> }
>
> +/**
> + Provide a function to uninstall the Firmware Management Protocol
> +instance from a
> + device handle when the device is managed by a driver that follows the
> +UEFI
> + Driver Model. If the device is not managed by a driver that follows
> +the UEFI
> + Driver Model, then EFI_UNSUPPORTED is returned.
> +
> + @param[in] FmpUninstaller Function that installs the Firmware
> Management
> + Protocol.
> +
> + @retval EFI_SUCCESS The device is managed by a driver that follows the
> + UEFI Driver Model. FmpUinstaller must be called on
> + each Driver Binding Stop().
> + @retval EFI_UNSUPPORTED The device is not managed by a driver that
> follows
> + the UEFI Driver Model.
> + @retval other The Firmware Management Protocol for this firmware
> + device is not installed. The firmware device is
> + still locked using FmpDeviceLock().
> +
> +**/
> +EFI_STATUS
> +EFIAPI
> +RegisterFmpUninstaller (
> + IN FMP_DEVICE_LIB_REGISTER_FMP_UNINSTALLER FmpUninstaller
> + )
> +{
> + //
> + // This is a system firmware update that does not use Driver Binding
> +Protocol
> + //
> + return EFI_UNSUPPORTED;
> +}
> +
> +/**
> + Set the device context for the FmpDeviceLib services when the device
> +is
> + managed by a driver that follows the UEFI Driver Model. If the
> +device is not
> + managed by a driver that follows the UEFI Driver Model, then
> +EFI_UNSUPPORTED
> + is returned. Once a device context is set, the FmpDeviceLib services
> + operate on the currently set device context.
> +
> + @param[in] Handle Device handle for the FmpDeviceLib services.
> + If Handle is NULL, then Context is freed.
> + @param[in, out] Context Device context for the FmpDeviceLib services.
> + If Context is NULL, then a new context is allocated
> + for Handle and the current device context is set and
> + returned in Context. If Context is not NULL, then
> + the current device context is set.
> +
> + @retval EFI_SUCCESS The device is managed by a driver that follows the
> + UEFI Driver Model.
> + @retval EFI_UNSUPPORTED The device is not managed by a driver that
> follows
> + the UEFI Driver Model.
> + @retval other The Firmware Management Protocol for this firmware
> + device is not installed. The firmware device is
> + still locked using FmpDeviceLock().
> +
> +**/
> +EFI_STATUS
> +EFIAPI
> +FmpDeviceSetContext (
> + IN EFI_HANDLE Handle,
> + IN OUT VOID **Context
> + )
> +{
> + //
> + // This is a system firmware update that does not use Driver Binding
> +Protocol
> + //
> + return EFI_UNSUPPORTED;
> +}
>
> /**
> Returns the size, in bytes, of the firmware image currently stored in the
> @@ -289,6 +356,34 @@ FmpDeviceGetVersion (
> return EFI_SUCCESS;
> }
>
> +/**
> + Returns the value used to fill in the HardwareInstance field of the
> + EFI_FIRMWARE_IMAGE_DESCRIPTOR structure that is returned by the
> +GetImageInfo()
> + service of the Firmware Management Protocol. If EFI_SUCCESS is
> +returned, then
> + the firmware device supports a method to report the HardwareInstance
> value.
> + If the value can not be reported for the firmware device, then
> +EFI_UNSUPPORTED
> + must be returned. EFI_DEVICE_ERROR is returned if an error occurs
> +attempting
> + to retrieve the HardwareInstance value for the firmware device.
> +
> + @param[out] HardwareInstance The hardware instance value for the
> firmware
> + device.
> +
> + @retval EFI_SUCCESS The hardware instance for the current firmware
> + devide is returned in HardwareInstance.
> + @retval EFI_UNSUPPORTED The firmware device does not support a
> method to
> + report the hardware instance value.
> + @retval EFI_DEVICE_ERROR An error occurred attempting to retrieve the
> hardware
> + instance value.
> +
> +**/
> +EFI_STATUS
> +EFIAPI
> +FmpDeviceGetHardwareInstance (
> + OUT UINT64 *HardwareInstance
> + )
> +{
> + return EFI_UNSUPPORTED;
> +}
>
> /**
> Retrieves a copy of the current firmware image of the device.
> diff --git
> a/Platform/Intel/Vlv2TbltDevicePkg/Feature/Capsule/Library/FmpDeviceLib
> Sample/FmpDeviceLib.c
> b/Platform/Intel/Vlv2TbltDevicePkg/Feature/Capsule/Library/FmpDeviceLib
> Sample/FmpDeviceLib.c
> index 80ce83a14b..db0f238ea5 100644
> ---
> a/Platform/Intel/Vlv2TbltDevicePkg/Feature/Capsule/Library/FmpDeviceLib
> Sample/FmpDeviceLib.c
> +++
> b/Platform/Intel/Vlv2TbltDevicePkg/Feature/Capsule/Library/FmpDevice
> +++ LibSample/FmpDeviceLib.c
> @@ -1,8 +1,8 @@
> /**
>
> -Copyright (c) 2016, Microsoft Corporation
> +Copyright (c) 2016, Microsoft Corporation. All rights reserved.<BR>
> +Copyright (c) 2019, Intel Corporation. All rights reserved.<BR>
>
> -All rights reserved.
> SPDX-License-Identifier: BSD-2-Clause-Patent
>
> **/
> @@ -43,6 +43,73 @@ IN FMP_DEVICE_LIB_REGISTER_FMP_INSTALLER Func
> return EFI_UNSUPPORTED;
> }
>
> +/**
> + Provide a function to uninstall the Firmware Management Protocol
> +instance from a
> + device handle when the device is managed by a driver that follows the
> +UEFI
> + Driver Model. If the device is not managed by a driver that follows
> +the UEFI
> + Driver Model, then EFI_UNSUPPORTED is returned.
> +
> + @param[in] FmpUninstaller Function that installs the Firmware
> Management
> + Protocol.
> +
> + @retval EFI_SUCCESS The device is managed by a driver that follows the
> + UEFI Driver Model. FmpUinstaller must be called on
> + each Driver Binding Stop().
> + @retval EFI_UNSUPPORTED The device is not managed by a driver that
> follows
> + the UEFI Driver Model.
> + @retval other The Firmware Management Protocol for this firmware
> + device is not installed. The firmware device is
> + still locked using FmpDeviceLock().
> +
> +**/
> +EFI_STATUS
> +EFIAPI
> +RegisterFmpUninstaller (
> + IN FMP_DEVICE_LIB_REGISTER_FMP_UNINSTALLER FmpUninstaller
> + )
> +{
> + //
> + // This is a system firmware update that does not use Driver Binding
> +Protocol
> + //
> + return EFI_UNSUPPORTED;
> +}
> +
> +/**
> + Set the device context for the FmpDeviceLib services when the device
> +is
> + managed by a driver that follows the UEFI Driver Model. If the
> +device is not
> + managed by a driver that follows the UEFI Driver Model, then
> +EFI_UNSUPPORTED
> + is returned. Once a device context is set, the FmpDeviceLib services
> + operate on the currently set device context.
> +
> + @param[in] Handle Device handle for the FmpDeviceLib services.
> + If Handle is NULL, then Context is freed.
> + @param[in, out] Context Device context for the FmpDeviceLib services.
> + If Context is NULL, then a new context is allocated
> + for Handle and the current device context is set and
> + returned in Context. If Context is not NULL, then
> + the current device context is set.
> +
> + @retval EFI_SUCCESS The device is managed by a driver that follows the
> + UEFI Driver Model.
> + @retval EFI_UNSUPPORTED The device is not managed by a driver that
> follows
> + the UEFI Driver Model.
> + @retval other The Firmware Management Protocol for this firmware
> + device is not installed. The firmware device is
> + still locked using FmpDeviceLock().
> +
> +**/
> +EFI_STATUS
> +EFIAPI
> +FmpDeviceSetContext (
> + IN EFI_HANDLE Handle,
> + OUT VOID **Context
> + )
> +{
> + //
> + // This is a system firmware update that does not use Driver Binding
> +Protocol
> + //
> + return EFI_UNSUPPORTED;
> +}
>
> /**
> Used to get the size of the image in bytes.
> @@ -201,6 +268,34 @@ IN OUT UINT32* Version
> return EFI_UNSUPPORTED;
> }
>
> +/**
> + Returns the value used to fill in the HardwareInstance field of the
> + EFI_FIRMWARE_IMAGE_DESCRIPTOR structure that is returned by the
> +GetImageInfo()
> + service of the Firmware Management Protocol. If EFI_SUCCESS is
> +returned, then
> + the firmware device supports a method to report the HardwareInstance
> value.
> + If the value can not be reported for the firmware device, then
> +EFI_UNSUPPORTED
> + must be returned. EFI_DEVICE_ERROR is returned if an error occurs
> +attempting
> + to retrieve the HardwareInstance value for the firmware device.
> +
> + @param[out] HardwareInstance The hardware instance value for the
> firmware
> + device.
> +
> + @retval EFI_SUCCESS The hardware instance for the current firmware
> + devide is returned in HardwareInstance.
> + @retval EFI_UNSUPPORTED The firmware device does not support a
> method to
> + report the hardware instance value.
> + @retval EFI_DEVICE_ERROR An error occurred attempting to retrieve the
> hardware
> + instance value.
> +
> +**/
> +EFI_STATUS
> +EFIAPI
> +FmpDeviceGetHardwareInstance (
> + OUT UINT64 *HardwareInstance
> + )
> +{
> + return EFI_UNSUPPORTED;
> +}
>
> /**
> Retrieves a copy of the current firmware image of the device.
> --
> 2.20.1.windows.1
>
>
>
prev parent reply other threads:[~2019-08-12 2:33 UTC|newest]
Thread overview: 2+ messages / expand[flat|nested] mbox.gz Atom feed top
2019-08-12 1:44 [edk2-platforms][PATCH] Vlv2TbltDevicePkg/FmpDeviceLib: Implement new APIs Eric Jin
2019-08-12 2:33 ` Sun, Zailiang [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=7CB7EF03E15B5D48981329A508747A9850CAA826@SHSMSX104.ccr.corp.intel.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