* [PATCH 0/5] FmpDevicePkg: Add support for runtime FmpDxe driver @ 2021-09-22 23:59 Bob Morgan 2021-09-22 23:59 ` [PATCH 1/5] FmpDevicePkg/FmpDeviceLibNull: Add DXE_RUNTIME_DRIVER support Bob Morgan ` (5 more replies) 0 siblings, 6 replies; 11+ messages in thread From: Bob Morgan @ 2021-09-22 23:59 UTC (permalink / raw) To: devel; +Cc: gaoliming, michael.d.kinney, guomin.jiang, wei6.xu, Bob Morgan Adds a runtime version of FmpDxe driver to allow firmware updates after ExitBootServices() is called and enables DXE_RUNTIME_DRIVER module type for associated FMP libraries. Bob Morgan (5): FmpDevicePkg/FmpDeviceLibNull: Add DXE_RUNTIME_DRIVER support FmpDevicePkg/FmpPayloadHeaderLibV1: Add DXE_RUNTIME_DRIVER support FmpDevicePkg/FmpDependencyCheckLibNull: Add DXE_RUNTIME_DRIVER support FmpDevicePkg/FmpDependencyDeviceLibNull: Add DXE_RUNTIME_DRIVER support FmpDevicePkg/FmpDxe: Add runtime FmpDxe driver FmpDevicePkg/FmpDevicePkg.dsc | 29 +++ FmpDevicePkg/FmpDxe/FmpDxe.c | 34 +++- FmpDevicePkg/FmpDxe/FmpRuntimeDxe.c | 185 ++++++++++++++++++ FmpDevicePkg/FmpDxe/FmpRuntimeDxe.inf | 87 ++++++++ FmpDevicePkg/FmpDxe/VariableSupport.c | 7 + .../FmpDependencyCheckLibNull.inf | 2 +- .../FmpDependencyDeviceLibNull.inf | 2 +- .../FmpDeviceLibNull/FmpDeviceLibNull.inf | 2 +- .../FmpPayloadHeaderLibV1.inf | 2 +- 9 files changed, 336 insertions(+), 14 deletions(-) create mode 100644 FmpDevicePkg/FmpDxe/FmpRuntimeDxe.c create mode 100644 FmpDevicePkg/FmpDxe/FmpRuntimeDxe.inf -- 2.17.1 ^ permalink raw reply [flat|nested] 11+ messages in thread
* [PATCH 1/5] FmpDevicePkg/FmpDeviceLibNull: Add DXE_RUNTIME_DRIVER support 2021-09-22 23:59 [PATCH 0/5] FmpDevicePkg: Add support for runtime FmpDxe driver Bob Morgan @ 2021-09-22 23:59 ` Bob Morgan 2021-09-22 23:59 ` [PATCH 2/5] FmpDevicePkg/FmpPayloadHeaderLibV1: " Bob Morgan ` (4 subsequent siblings) 5 siblings, 0 replies; 11+ messages in thread From: Bob Morgan @ 2021-09-22 23:59 UTC (permalink / raw) To: devel; +Cc: gaoliming, michael.d.kinney, guomin.jiang, wei6.xu, Bob Morgan Add DXE_RUNTIME_DRIVER to the list of module types supported. 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: Bob Morgan <bobm@nvidia.com> --- FmpDevicePkg/Library/FmpDeviceLibNull/FmpDeviceLibNull.inf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/FmpDevicePkg/Library/FmpDeviceLibNull/FmpDeviceLibNull.inf b/FmpDevicePkg/Library/FmpDeviceLibNull/FmpDeviceLibNull.inf index 9c77e5bde0..bc9df06492 100644 --- a/FmpDevicePkg/Library/FmpDeviceLibNull/FmpDeviceLibNull.inf +++ b/FmpDevicePkg/Library/FmpDeviceLibNull/FmpDeviceLibNull.inf @@ -15,7 +15,7 @@ FILE_GUID = 8507642B-AE92-4664-B713-807F7774A96D MODULE_TYPE = DXE_DRIVER VERSION_STRING = 1.0 - LIBRARY_CLASS = FmpDeviceLib|DXE_DRIVER UEFI_DRIVER + LIBRARY_CLASS = FmpDeviceLib|DXE_DRIVER UEFI_DRIVER DXE_RUNTIME_DRIVER # # The following information is for reference only and not required by the build tools. -- 2.17.1 ^ permalink raw reply related [flat|nested] 11+ messages in thread
* [PATCH 2/5] FmpDevicePkg/FmpPayloadHeaderLibV1: Add DXE_RUNTIME_DRIVER support 2021-09-22 23:59 [PATCH 0/5] FmpDevicePkg: Add support for runtime FmpDxe driver Bob Morgan 2021-09-22 23:59 ` [PATCH 1/5] FmpDevicePkg/FmpDeviceLibNull: Add DXE_RUNTIME_DRIVER support Bob Morgan @ 2021-09-22 23:59 ` Bob Morgan 2021-09-22 23:59 ` [PATCH 3/5] FmpDevicePkg/FmpDependencyCheckLibNull: " Bob Morgan ` (3 subsequent siblings) 5 siblings, 0 replies; 11+ messages in thread From: Bob Morgan @ 2021-09-22 23:59 UTC (permalink / raw) To: devel; +Cc: gaoliming, michael.d.kinney, guomin.jiang, wei6.xu, Bob Morgan Add DXE_RUNTIME_DRIVER to the list of module types supported. 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: Bob Morgan <bobm@nvidia.com> --- .../Library/FmpPayloadHeaderLibV1/FmpPayloadHeaderLibV1.inf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/FmpDevicePkg/Library/FmpPayloadHeaderLibV1/FmpPayloadHeaderLibV1.inf b/FmpDevicePkg/Library/FmpPayloadHeaderLibV1/FmpPayloadHeaderLibV1.inf index 0d6692dcec..7023631a74 100644 --- a/FmpDevicePkg/Library/FmpPayloadHeaderLibV1/FmpPayloadHeaderLibV1.inf +++ b/FmpDevicePkg/Library/FmpPayloadHeaderLibV1/FmpPayloadHeaderLibV1.inf @@ -17,7 +17,7 @@ FILE_GUID = 98A79A6C-513C-4E72-8375-39C0A7244C4B MODULE_TYPE = DXE_DRIVER VERSION_STRING = 1.0 - LIBRARY_CLASS = FmpPayloadHeaderLib|DXE_DRIVER UEFI_DRIVER UEFI_APPLICATION + LIBRARY_CLASS = FmpPayloadHeaderLib|DXE_DRIVER UEFI_DRIVER UEFI_APPLICATION DXE_RUNTIME_DRIVER # # VALID_ARCHITECTURES = IA32 X64 ARM AARCH64 -- 2.17.1 ^ permalink raw reply related [flat|nested] 11+ messages in thread
* [PATCH 3/5] FmpDevicePkg/FmpDependencyCheckLibNull: Add DXE_RUNTIME_DRIVER support 2021-09-22 23:59 [PATCH 0/5] FmpDevicePkg: Add support for runtime FmpDxe driver Bob Morgan 2021-09-22 23:59 ` [PATCH 1/5] FmpDevicePkg/FmpDeviceLibNull: Add DXE_RUNTIME_DRIVER support Bob Morgan 2021-09-22 23:59 ` [PATCH 2/5] FmpDevicePkg/FmpPayloadHeaderLibV1: " Bob Morgan @ 2021-09-22 23:59 ` Bob Morgan 2021-09-22 23:59 ` [PATCH 4/5] FmpDevicePkg/FmpDependencyDeviceLibNull: " Bob Morgan ` (2 subsequent siblings) 5 siblings, 0 replies; 11+ messages in thread From: Bob Morgan @ 2021-09-22 23:59 UTC (permalink / raw) To: devel; +Cc: gaoliming, michael.d.kinney, guomin.jiang, wei6.xu, Bob Morgan Add DXE_RUNTIME_DRIVER to the list of module types supported. 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: Bob Morgan <bobm@nvidia.com> --- .../FmpDependencyCheckLibNull/FmpDependencyCheckLibNull.inf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/FmpDevicePkg/Library/FmpDependencyCheckLibNull/FmpDependencyCheckLibNull.inf b/FmpDevicePkg/Library/FmpDependencyCheckLibNull/FmpDependencyCheckLibNull.inf index 5794d89191..c3962d7381 100644 --- a/FmpDevicePkg/Library/FmpDependencyCheckLibNull/FmpDependencyCheckLibNull.inf +++ b/FmpDevicePkg/Library/FmpDependencyCheckLibNull/FmpDependencyCheckLibNull.inf @@ -14,7 +14,7 @@ FILE_GUID = D63F3166-9CBC-4AC2-8F23-8818E42EA2BD MODULE_TYPE = DXE_DRIVER VERSION_STRING = 1.0 - LIBRARY_CLASS = FmpDependencyCheckLib|DXE_DRIVER UEFI_DRIVER UEFI_APPLICATION + LIBRARY_CLASS = FmpDependencyCheckLib|DXE_DRIVER UEFI_DRIVER UEFI_APPLICATION DXE_RUNTIME_DRIVER # # The following information is for reference only and not required by the build tools. -- 2.17.1 ^ permalink raw reply related [flat|nested] 11+ messages in thread
* [PATCH 4/5] FmpDevicePkg/FmpDependencyDeviceLibNull: Add DXE_RUNTIME_DRIVER support 2021-09-22 23:59 [PATCH 0/5] FmpDevicePkg: Add support for runtime FmpDxe driver Bob Morgan ` (2 preceding siblings ...) 2021-09-22 23:59 ` [PATCH 3/5] FmpDevicePkg/FmpDependencyCheckLibNull: " Bob Morgan @ 2021-09-22 23:59 ` Bob Morgan 2021-09-22 23:59 ` [PATCH 5/5] FmpDevicePkg/FmpDxe: Add runtime FmpDxe driver Bob Morgan 2021-09-24 0:56 ` 回复: [edk2-devel] [PATCH 0/5] FmpDevicePkg: Add support for " gaoliming 5 siblings, 0 replies; 11+ messages in thread From: Bob Morgan @ 2021-09-22 23:59 UTC (permalink / raw) To: devel; +Cc: gaoliming, michael.d.kinney, guomin.jiang, wei6.xu, Bob Morgan Add DXE_RUNTIME_DRIVER to the list of module types supported. 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: Bob Morgan <bobm@nvidia.com> --- .../FmpDependencyDeviceLibNull/FmpDependencyDeviceLibNull.inf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/FmpDevicePkg/Library/FmpDependencyDeviceLibNull/FmpDependencyDeviceLibNull.inf b/FmpDevicePkg/Library/FmpDependencyDeviceLibNull/FmpDependencyDeviceLibNull.inf index d318cc9a67..6f87a487c4 100644 --- a/FmpDevicePkg/Library/FmpDependencyDeviceLibNull/FmpDependencyDeviceLibNull.inf +++ b/FmpDevicePkg/Library/FmpDependencyDeviceLibNull/FmpDependencyDeviceLibNull.inf @@ -13,7 +13,7 @@ FILE_GUID = 05BE67B1-0748-4022-97E6-7C0D2F992AA6 MODULE_TYPE = DXE_DRIVER VERSION_STRING = 1.0 - LIBRARY_CLASS = FmpDependencyDeviceLib|DXE_DRIVER UEFI_DRIVER + LIBRARY_CLASS = FmpDependencyDeviceLib|DXE_DRIVER UEFI_DRIVER DXE_RUNTIME_DRIVER # # The following information is for reference only and not required by the build tools. -- 2.17.1 ^ permalink raw reply related [flat|nested] 11+ messages in thread
* [PATCH 5/5] FmpDevicePkg/FmpDxe: Add runtime FmpDxe driver 2021-09-22 23:59 [PATCH 0/5] FmpDevicePkg: Add support for runtime FmpDxe driver Bob Morgan ` (3 preceding siblings ...) 2021-09-22 23:59 ` [PATCH 4/5] FmpDevicePkg/FmpDependencyDeviceLibNull: " Bob Morgan @ 2021-09-22 23:59 ` Bob Morgan 2021-09-24 0:56 ` 回复: [edk2-devel] [PATCH 0/5] FmpDevicePkg: Add support for " gaoliming 5 siblings, 0 replies; 11+ messages in thread From: Bob Morgan @ 2021-09-22 23:59 UTC (permalink / raw) To: devel; +Cc: gaoliming, michael.d.kinney, guomin.jiang, wei6.xu, Bob Morgan Adds a runtime version of FmpDxe driver to allow firmware updates after ExitBootServices() is called. 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: Bob Morgan <bobm@nvidia.com> --- FmpDevicePkg/FmpDevicePkg.dsc | 29 ++++ FmpDevicePkg/FmpDxe/FmpDxe.c | 34 +++-- FmpDevicePkg/FmpDxe/FmpRuntimeDxe.c | 185 ++++++++++++++++++++++++++ FmpDevicePkg/FmpDxe/FmpRuntimeDxe.inf | 87 ++++++++++++ FmpDevicePkg/FmpDxe/VariableSupport.c | 7 + 5 files changed, 332 insertions(+), 10 deletions(-) create mode 100644 FmpDevicePkg/FmpDxe/FmpRuntimeDxe.c create mode 100644 FmpDevicePkg/FmpDxe/FmpRuntimeDxe.inf diff --git a/FmpDevicePkg/FmpDevicePkg.dsc b/FmpDevicePkg/FmpDevicePkg.dsc index b420f52a08..0f38e47ae4 100644 --- a/FmpDevicePkg/FmpDevicePkg.dsc +++ b/FmpDevicePkg/FmpDevicePkg.dsc @@ -29,6 +29,7 @@ # DEFINE SYSTEM_FMP_ESRT_GUID = B461B3BD-E62A-4A71-841C-50BA4E500267 DEFINE DEVICE_FMP_ESRT_GUID = 226034C4-8B67-4536-8653-D6EE7CE5A316 + DEFINE RUNTIME_FMP_ESRT_GUID = DECC975F-135A-426F-B667-ACA49E8CEF2A # # TRUE - Build FmpDxe module for with storage access enabled @@ -173,6 +174,34 @@ CapsuleUpdatePolicyLib|FmpDevicePkg/Library/CapsuleUpdatePolicyLibNull/CapsuleUpdatePolicyLibNull.inf } + FmpDevicePkg/FmpDxe/FmpRuntimeDxe.inf { + <Defines> + # + # FILE_GUID is used as ESRT GUID + # + FILE_GUID = $(RUNTIME_FMP_ESRT_GUID) + <PcdsFixedAtBuild> + # + # Unicode name string that is used to populate FMP Image Descriptor for this capsule update module + # + gFmpDevicePkgTokenSpaceGuid.PcdFmpDeviceImageIdName|L"Sample Firmware Device" + # + # Certificates used to authenticate capsule update image + # + !include BaseTools/Source/Python/Pkcs7Sign/TestRoot.cer.gFmpDevicePkgTokenSpaceGuid.PcdFmpDevicePkcs7CertBufferXdr.inc + <PcdsPatchableInModule> + gFmpDevicePkgTokenSpaceGuid.PcdFmpDeviceImageTypeIdGuid|{GUID("$(RUNTIME_FMP_ESRT_GUID)")} + <LibraryClasses> + UefiRuntimeLib|MdePkg/Library/UefiRuntimeLib/UefiRuntimeLib.inf + + # + # Directly use a platform specific CapsuleUpdatePolicyLib instance. + # Only works for FmpDxe modules that are build from sources and included + # in a system firmware image. + # + CapsuleUpdatePolicyLib|FmpDevicePkg/Library/CapsuleUpdatePolicyLibNull/CapsuleUpdatePolicyLibNull.inf + } + # # Add UEFI Target Based Unit Tests # diff --git a/FmpDevicePkg/FmpDxe/FmpDxe.c b/FmpDevicePkg/FmpDxe/FmpDxe.c index 6b0675ea38..2ebf99d68b 100644 --- a/FmpDevicePkg/FmpDxe/FmpDxe.c +++ b/FmpDevicePkg/FmpDxe/FmpDxe.c @@ -84,6 +84,8 @@ const FIRMWARE_MANAGEMENT_PRIVATE_DATA mFirmwareManagementPrivateDataTemplate = TRUE // DependenciesSatisfied }; +FIRMWARE_MANAGEMENT_PRIVATE_DATA *mPrivate = NULL; + /// /// GUID that is used to create event used to lock the firmware storage device. /// @@ -99,6 +101,11 @@ EFI_FIRMWARE_MANAGEMENT_UPDATE_IMAGE_PROGRESS mProgressFunc = NULL; /// CHAR16 *mImageIdName = NULL; +/// +/// Optional function to determine if we're executing after ExitBootServices(). +/// +BOOLEAN (EFIAPI *mFmpAtRuntimeFunction) (VOID) = NULL; + /** Callback function to report the process of the firmware updating. @@ -1451,8 +1458,10 @@ cleanup: // // Need repopulate after SetImage is called to // update LastAttemptVersion and LastAttemptStatus. + // But don't force repopulate if executing at runtime. // - if (Private != NULL) { + if ((Private != NULL) && + ((mFmpAtRuntimeFunction == NULL) || !mFmpAtRuntimeFunction ())) { Private->DescriptorPopulated = FALSE; } @@ -1628,16 +1637,21 @@ InstallFmpInstance ( } // - // Allocate FMP Protocol instance + // Allocate FMP Protocol instance if FmpRuntimeDxe didn't already do it // - Private = AllocateCopyPool ( - sizeof (mFirmwareManagementPrivateDataTemplate), - &mFirmwareManagementPrivateDataTemplate - ); - if (Private == NULL) { - DEBUG ((DEBUG_ERROR, "FmpDxe(%s): Failed to allocate memory for private structure.\n", mImageIdName)); - Status = EFI_OUT_OF_RESOURCES; - goto cleanup; + if (mPrivate == NULL) { + Private = AllocateCopyPool ( + sizeof (mFirmwareManagementPrivateDataTemplate), + &mFirmwareManagementPrivateDataTemplate + ); + if (Private == NULL) { + DEBUG ((DEBUG_ERROR, "FmpDxe(%s): Failed to allocate memory for private structure.\n", mImageIdName)); + Status = EFI_OUT_OF_RESOURCES; + goto cleanup; + } + mPrivate = Private; + } else { + Private = mPrivate; } // diff --git a/FmpDevicePkg/FmpDxe/FmpRuntimeDxe.c b/FmpDevicePkg/FmpDxe/FmpRuntimeDxe.c new file mode 100644 index 0000000000..d7e0a988d6 --- /dev/null +++ b/FmpDevicePkg/FmpDxe/FmpRuntimeDxe.c @@ -0,0 +1,185 @@ +/** @file + Support for runtime Firmware Management Protocol + + Copyright (c) 2021, NVIDIA CORPORATION. All rights reserved.<BR> + Copyright (c) Microsoft Corporation.<BR> + Copyright (c) 2018 - 2020, Intel Corporation. All rights reserved.<BR> + + SPDX-License-Identifier: BSD-2-Clause-Patent + +**/ + +#include <Library/UefiRuntimeLib.h> +#include "FmpDxe.h" + +EFI_EVENT mAddressChangeEvent = NULL; + +/// +/// FILE_GUID from FmpRuntimeDxe.inf. When FmpRuntimeDxe.inf is used in a platform, +/// the FILE_GUID must always be overridden in the <Defines> section to provide +/// the ESRT GUID value associated with the updatable firmware image. A +/// check is made in this module's driver entry point to verify that a +/// new FILE_GUID value has been defined. +/// +const EFI_GUID mDefaultRuntimeModuleFileGuid = { + 0xd12aece5, 0x7399, 0x4d05, { 0x88, 0xe4, 0x1c, 0x42, 0x84, 0xd8, 0xa0, 0x23 } +}; + +// FmpDxe module variables +extern FIRMWARE_MANAGEMENT_PRIVATE_DATA *mPrivate; +extern CHAR16 *mImageIdName; +extern const FIRMWARE_MANAGEMENT_PRIVATE_DATA mFirmwareManagementPrivateDataTemplate; +extern BOOLEAN (EFIAPI *mFmpAtRuntimeFunction) (VOID); + +// FmpDxe ENTRY_POINT function prototype +EFI_STATUS +EFIAPI +FmpDxeEntryPoint ( + IN EFI_HANDLE ImageHandle, + IN EFI_SYSTEM_TABLE *SystemTable + ); + +// FmpDxe UNLOAD_IMAGE function prototype +EFI_STATUS +EFIAPI +UninstallFmpInstance ( + IN EFI_HANDLE Handle + ); + +/** + Event notification function that is invoked when the event GUID specified by + gEfiEventVirtualAddressChangeGuid is signaled. + + @param[in] Event Event whose notification function is being invoked. + @param[in] Context The pointer to the notification function's context, + which is implementation-dependent. +**/ +VOID +EFIAPI +FmpRuntimeDxeAddressChangeEventNotify ( + IN EFI_EVENT Event, + IN VOID *Context + ) +{ + FIRMWARE_MANAGEMENT_PRIVATE_DATA *Private; + + if (Context == NULL) { + ASSERT (Context != NULL); + return; + } + + Private = (FIRMWARE_MANAGEMENT_PRIVATE_DATA *) Context; + + EfiConvertPointer (0x0, (VOID **) &Private->Descriptor.VersionName); + EfiConvertPointer (0x0, (VOID **) &Private->Descriptor.Dependencies); + EfiConvertPointer (0x0, (VOID **) &Private->FmpDeviceContext); + EfiConvertPointer (0x0, (VOID **) &Private->VersionVariableName); + EfiConvertPointer (0x0, (VOID **) &Private->LsvVariableName); + EfiConvertPointer (0x0, (VOID **) &Private->LastAttemptStatusVariableName); + EfiConvertPointer (0x0, (VOID **) &Private->LastAttemptVersionVariableName); + EfiConvertPointer (0x0, (VOID **) &Private->FmpStateVariableName); + + EfiConvertPointer (0x0, (VOID **) &Private->Fmp.GetImageInfo); + EfiConvertPointer (0x0, (VOID **) &Private->Fmp.GetImage); + EfiConvertPointer (0x0, (VOID **) &Private->Fmp.SetImage); + EfiConvertPointer (0x0, (VOID **) &Private->Fmp.CheckImage); + EfiConvertPointer (0x0, (VOID **) &Private->Fmp.GetPackageInfo); + EfiConvertPointer (0x0, (VOID **) &Private->Fmp.SetPackageInfo); + + EfiConvertPointer (0x0, (VOID **) &mPrivate); + EfiConvertPointer (0x0, (VOID **) &mImageIdName); + EfiConvertPointer (0x0, (VOID **) &mFmpAtRuntimeFunction); +} + +/** + Function to uninstall FMP instance. + + @param[in] Handle The device handle to uninstall. + + @retval EFI_SUCCESS FMP Uninstalled + @retval other Error from UninstallFmpInstance(). + +**/ +EFI_STATUS +EFIAPI +UninstallRuntimeFmpInstance ( + IN EFI_HANDLE Handle + ) +{ + EFI_STATUS Status; + + if (mAddressChangeEvent != NULL) { + gBS->CloseEvent (mAddressChangeEvent); + } + + Status = UninstallFmpInstance (Handle); + + return Status; +} + +/** + Entry point for runtime FmpDxe. Performs runtime-only initialization and + then calls regular FmpDxe initialization. + + @param[in] ImageHandle Image handle this driver. + @param[in] SystemTable Pointer to SystemTable. + +**/ +EFI_STATUS +EFIAPI +FmpRuntimeDxeEntryPoint ( + IN EFI_HANDLE ImageHandle, + IN EFI_SYSTEM_TABLE *SystemTable + ) +{ + EFI_STATUS Status; + + // + // Verify that a new FILE_GUID value has been provided in the <Defines> + // section of this module. The FILE_GUID is the ESRT GUID that must be + // unique for each updatable firmware image. + // + if (CompareGuid (&mDefaultRuntimeModuleFileGuid, &gEfiCallerIdGuid)) { + DEBUG ((DEBUG_ERROR, "FmpRuntimeDxe: Use of default FILE_GUID detected. FILE_GUID must be set to a unique value.\n")); + ASSERT (FALSE); + return EFI_UNSUPPORTED; + } + + // + // Allocate and initialize private data structure from runtime pool + // + mPrivate = AllocateRuntimeCopyPool (sizeof (mFirmwareManagementPrivateDataTemplate), + &mFirmwareManagementPrivateDataTemplate); + if (mPrivate == NULL) { + DEBUG ((DEBUG_ERROR, "FmpRuntimeDxe: Failed to allocate memory for private structure.\n")); + return EFI_OUT_OF_RESOURCES; + } + + // + // Create and register notify function for virtual address change event + // + Status = gBS->CreateEventEx (EVT_NOTIFY_SIGNAL, + TPL_NOTIFY, + FmpRuntimeDxeAddressChangeEventNotify, + mPrivate, + &gEfiEventVirtualAddressChangeGuid, + &mAddressChangeEvent); + if (EFI_ERROR (Status)) { + DEBUG ((DEBUG_ERROR, "FmpRuntimeDxe: Failed to register address change notification. Status = %r\n", + Status)); + return Status; + } + + // + // Initialize FmpDxe + // + Status = FmpDxeEntryPoint (ImageHandle, SystemTable); + if (EFI_ERROR (Status)) { + DEBUG ((DEBUG_ERROR, "FmpRuntimeDxe: Failed to initialize FmpDxe: %r\n", Status)); + } + + // Set AtRuntime function pointer + mFmpAtRuntimeFunction = EfiAtRuntime; + + return Status; +} diff --git a/FmpDevicePkg/FmpDxe/FmpRuntimeDxe.inf b/FmpDevicePkg/FmpDxe/FmpRuntimeDxe.inf new file mode 100644 index 0000000000..fff779bc4d --- /dev/null +++ b/FmpDevicePkg/FmpDxe/FmpRuntimeDxe.inf @@ -0,0 +1,87 @@ +## @file +# Produces a runtime Firmware Management Protocol that supports updates +# to a firmware image stored in a firmware device with platform and +# firmware device specific information provided through PCDs and libraries. +# +# Copyright (c) 2021, NVIDIA CORPORATION. All rights reserved.<BR> +# Copyright (c) 2016, Microsoft Corporation. All rights reserved.<BR> +# Copyright (c) 2018 - 2020, Intel Corporation. All rights reserved.<BR> +# +# SPDX-License-Identifier: BSD-2-Clause-Patent +## + +[Defines] + INF_VERSION = 1.27 + BASE_NAME = FmpDxe + MODULE_UNI_FILE = FmpDxe.uni + FILE_GUID = D12AECE5-7399-4D05-88E4-1C4284D8A023 + MODULE_TYPE = DXE_RUNTIME_DRIVER + VERSION_STRING = 1.0 + ENTRY_POINT = FmpRuntimeDxeEntryPoint + UNLOAD_IMAGE = UninstallRuntimeFmpInstance + +# +# The following information is for reference only and not required by the build tools. +# +# VALID_ARCHITECTURES = IA32 X64 ARM AARCH64 +# + +[Sources] + FmpRuntimeDxe.c + FmpDxe.c + FmpDxe.h + DetectTestKey.c + VariableSupport.h + VariableSupport.c + +[Packages] + MdePkg/MdePkg.dec + MdeModulePkg/MdeModulePkg.dec + CryptoPkg/CryptoPkg.dec + FmpDevicePkg/FmpDevicePkg.dec + +[LibraryClasses] + UefiDriverEntryPoint + DebugLib + BaseLib + BaseMemoryLib + UefiBootServicesTableLib + MemoryAllocationLib + PrintLib + UefiLib + BaseCryptLib + FmpAuthenticationLib + FmpDeviceLib + FmpPayloadHeaderLib + CapsuleUpdatePolicyLib + FmpDependencyLib + FmpDependencyCheckLib + FmpDependencyDeviceLib + UefiRuntimeLib + +[Guids] + gEfiEndOfDxeEventGroupGuid + gEfiEventVirtualAddressChangeGuid + +[Protocols] + gEdkiiVariableLockProtocolGuid ## CONSUMES + gEfiFirmwareManagementProtocolGuid ## PRODUCES + gEdkiiFirmwareManagementProgressProtocolGuid ## PRODUCES + +[Pcd] + gFmpDevicePkgTokenSpaceGuid.PcdFmpDeviceStorageAccessEnable ## CONSUMES + gFmpDevicePkgTokenSpaceGuid.PcdFmpDeviceImageIdName ## CONSUMES + gFmpDevicePkgTokenSpaceGuid.PcdFmpDeviceBuildTimeLowestSupportedVersion ## CONSUMES + gFmpDevicePkgTokenSpaceGuid.PcdFmpDeviceLockEventGuid ## CONSUMES + gFmpDevicePkgTokenSpaceGuid.PcdFmpDeviceProgressWatchdogTimeInSeconds ## CONSUMES + gFmpDevicePkgTokenSpaceGuid.PcdFmpDeviceProgressColor ## CONSUMES + gFmpDevicePkgTokenSpaceGuid.PcdFmpDevicePkcs7CertBufferXdr ## CONSUMES + gFmpDevicePkgTokenSpaceGuid.PcdFmpDeviceTestKeySha256Digest ## CONSUMES + gFmpDevicePkgTokenSpaceGuid.PcdFmpDeviceImageTypeIdGuid ## CONSUMES + gEfiMdeModulePkgTokenSpaceGuid.PcdTestKeyUsed ## SOMETIMES_PRODUCES + +[Depex] + gEfiVariableWriteArchProtocolGuid AND gEdkiiVariableLockProtocolGuid + +[UserExtensions.TianoCore."ExtraFiles"] + FmpDxeExtra.uni diff --git a/FmpDevicePkg/FmpDxe/VariableSupport.c b/FmpDevicePkg/FmpDxe/VariableSupport.c index 86dd5b203b..13fc638618 100644 --- a/FmpDevicePkg/FmpDxe/VariableSupport.c +++ b/FmpDevicePkg/FmpDxe/VariableSupport.c @@ -12,6 +12,8 @@ #include "FmpDxe.h" #include "VariableSupport.h" +extern BOOLEAN (EFIAPI *mFmpAtRuntimeFunction) (VOID); + /** Retrieve the value of a 32-bit UEFI Variable specified by VariableName and a GUID of gEfiCallerIdGuid. @@ -103,6 +105,11 @@ GetFmpControllerState ( FMP_CONTROLLER_STATE *FmpControllerState; UINTN Size; + // FmpState variable not accessible at runtime + if ((mFmpAtRuntimeFunction != NULL) && mFmpAtRuntimeFunction ()) { + return NULL; + } + FmpControllerState = NULL; Size = 0; Status = GetVariable2 ( -- 2.17.1 ^ permalink raw reply related [flat|nested] 11+ messages in thread
* 回复: [edk2-devel] [PATCH 0/5] FmpDevicePkg: Add support for runtime FmpDxe driver 2021-09-22 23:59 [PATCH 0/5] FmpDevicePkg: Add support for runtime FmpDxe driver Bob Morgan ` (4 preceding siblings ...) 2021-09-22 23:59 ` [PATCH 5/5] FmpDevicePkg/FmpDxe: Add runtime FmpDxe driver Bob Morgan @ 2021-09-24 0:56 ` gaoliming 2021-09-24 2:18 ` Bob Morgan [not found] ` <16A7A0910520505F.360@groups.io> 5 siblings, 2 replies; 11+ messages in thread From: gaoliming @ 2021-09-24 0:56 UTC (permalink / raw) To: devel, bobm; +Cc: michael.d.kinney, guomin.jiang, wei6.xu Bob: Dose this change make FirmwareManagementProtocol to be used in runtime phase? Thanks Liming > -----邮件原件----- > 发件人: devel@edk2.groups.io <devel@edk2.groups.io> 代表 Bob Morgan > via groups.io > 发送时间: 2021年9月23日 8:00 > 收件人: devel@edk2.groups.io > 抄送: gaoliming@byosoft.com.cn; michael.d.kinney@intel.com; > guomin.jiang@intel.com; wei6.xu@intel.com; Bob Morgan > <bobm@nvidia.com> > 主题: [edk2-devel] [PATCH 0/5] FmpDevicePkg: Add support for runtime > FmpDxe driver > > Adds a runtime version of FmpDxe driver to allow firmware updates > after ExitBootServices() is called and enables DXE_RUNTIME_DRIVER > module type for associated FMP libraries. > > Bob Morgan (5): > FmpDevicePkg/FmpDeviceLibNull: Add DXE_RUNTIME_DRIVER support > FmpDevicePkg/FmpPayloadHeaderLibV1: Add DXE_RUNTIME_DRIVER > support > FmpDevicePkg/FmpDependencyCheckLibNull: Add DXE_RUNTIME_DRIVER > support > FmpDevicePkg/FmpDependencyDeviceLibNull: Add > DXE_RUNTIME_DRIVER > support > FmpDevicePkg/FmpDxe: Add runtime FmpDxe driver > > FmpDevicePkg/FmpDevicePkg.dsc | 29 +++ > FmpDevicePkg/FmpDxe/FmpDxe.c | 34 +++- > FmpDevicePkg/FmpDxe/FmpRuntimeDxe.c | 185 > ++++++++++++++++++ > FmpDevicePkg/FmpDxe/FmpRuntimeDxe.inf | 87 ++++++++ > FmpDevicePkg/FmpDxe/VariableSupport.c | 7 + > .../FmpDependencyCheckLibNull.inf | 2 +- > .../FmpDependencyDeviceLibNull.inf | 2 +- > .../FmpDeviceLibNull/FmpDeviceLibNull.inf | 2 +- > .../FmpPayloadHeaderLibV1.inf | 2 +- > 9 files changed, 336 insertions(+), 14 deletions(-) > create mode 100644 FmpDevicePkg/FmpDxe/FmpRuntimeDxe.c > create mode 100644 FmpDevicePkg/FmpDxe/FmpRuntimeDxe.inf > > -- > 2.17.1 > > > > > ^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [edk2-devel] [PATCH 0/5] FmpDevicePkg: Add support for runtime FmpDxe driver 2021-09-24 0:56 ` 回复: [edk2-devel] [PATCH 0/5] FmpDevicePkg: Add support for " gaoliming @ 2021-09-24 2:18 ` Bob Morgan [not found] ` <16A7A0910520505F.360@groups.io> 1 sibling, 0 replies; 11+ messages in thread From: Bob Morgan @ 2021-09-24 2:18 UTC (permalink / raw) To: devel@edk2.groups.io, gaoliming@byosoft.com.cn Cc: michael.d.kinney@intel.com, guomin.jiang@intel.com, wei6.xu@intel.com Hi Liming, Yes, this adds a new runtime variation of the FmpDxe driver that can process the FMP payload of a capsule at runtime if the capsule flags do not request PERSIST_ACROSS_RESET and INITIATE_RESET. There are also changes required to DxeCapsuleLibFmp to enable this runtime FMP processing that I will submit separately. Thanks, -bob -----Original Message----- From: devel@edk2.groups.io <devel@edk2.groups.io> On Behalf Of gaoliming via groups.io Sent: Thursday, September 23, 2021 6:57 PM To: devel@edk2.groups.io; Bob Morgan <bobm@nvidia.com> Cc: michael.d.kinney@intel.com; guomin.jiang@intel.com; wei6.xu@intel.com Subject: 回复: [edk2-devel] [PATCH 0/5] FmpDevicePkg: Add support for runtime FmpDxe driver External email: Use caution opening links or attachments Bob: Dose this change make FirmwareManagementProtocol to be used in runtime phase? Thanks Liming > -----邮件原件----- > 发件人: devel@edk2.groups.io <devel@edk2.groups.io> 代表 Bob Morgan via > groups.io > 发送时间: 2021年9月23日 8:00 > 收件人: devel@edk2.groups.io > 抄送: gaoliming@byosoft.com.cn; michael.d.kinney@intel.com; > guomin.jiang@intel.com; wei6.xu@intel.com; Bob Morgan > <bobm@nvidia.com> > 主题: [edk2-devel] [PATCH 0/5] FmpDevicePkg: Add support for runtime > FmpDxe driver > > Adds a runtime version of FmpDxe driver to allow firmware updates > after ExitBootServices() is called and enables DXE_RUNTIME_DRIVER > module type for associated FMP libraries. > > Bob Morgan (5): > FmpDevicePkg/FmpDeviceLibNull: Add DXE_RUNTIME_DRIVER support > FmpDevicePkg/FmpPayloadHeaderLibV1: Add DXE_RUNTIME_DRIVER support > FmpDevicePkg/FmpDependencyCheckLibNull: Add DXE_RUNTIME_DRIVER > support > FmpDevicePkg/FmpDependencyDeviceLibNull: Add DXE_RUNTIME_DRIVER > support > FmpDevicePkg/FmpDxe: Add runtime FmpDxe driver > > FmpDevicePkg/FmpDevicePkg.dsc | 29 +++ > FmpDevicePkg/FmpDxe/FmpDxe.c | 34 +++- > FmpDevicePkg/FmpDxe/FmpRuntimeDxe.c | 185 > ++++++++++++++++++ > FmpDevicePkg/FmpDxe/FmpRuntimeDxe.inf | 87 ++++++++ > FmpDevicePkg/FmpDxe/VariableSupport.c | 7 + > .../FmpDependencyCheckLibNull.inf | 2 +- > .../FmpDependencyDeviceLibNull.inf | 2 +- > .../FmpDeviceLibNull/FmpDeviceLibNull.inf | 2 +- > .../FmpPayloadHeaderLibV1.inf | 2 +- > 9 files changed, 336 insertions(+), 14 deletions(-) create mode > 100644 FmpDevicePkg/FmpDxe/FmpRuntimeDxe.c > create mode 100644 FmpDevicePkg/FmpDxe/FmpRuntimeDxe.inf > > -- > 2.17.1 > > > > > ^ permalink raw reply [flat|nested] 11+ messages in thread
[parent not found: <16A7A0910520505F.360@groups.io>]
* Re: [edk2-devel] [PATCH 0/5] FmpDevicePkg: Add support for runtime FmpDxe driver [not found] ` <16A7A0910520505F.360@groups.io> @ 2021-10-20 19:41 ` Bob Morgan 2021-10-21 1:53 ` 回复: " gaoliming [not found] ` <16AFE8DE7122BA33.23075@groups.io> 0 siblings, 2 replies; 11+ messages in thread From: Bob Morgan @ 2021-10-20 19:41 UTC (permalink / raw) To: devel@edk2.groups.io, Bob Morgan, gaoliming@byosoft.com.cn Cc: michael.d.kinney@intel.com, guomin.jiang@intel.com, wei6.xu@intel.com Hi, Any feedback on this? Thanks, -bob -----Original Message----- From: devel@edk2.groups.io <devel@edk2.groups.io> On Behalf Of Bob Morgan via groups.io Sent: Thursday, September 23, 2021 8:19 PM To: devel@edk2.groups.io; gaoliming@byosoft.com.cn Cc: michael.d.kinney@intel.com; guomin.jiang@intel.com; wei6.xu@intel.com Subject: Re: [edk2-devel] [PATCH 0/5] FmpDevicePkg: Add support for runtime FmpDxe driver External email: Use caution opening links or attachments Hi Liming, Yes, this adds a new runtime variation of the FmpDxe driver that can process the FMP payload of a capsule at runtime if the capsule flags do not request PERSIST_ACROSS_RESET and INITIATE_RESET. There are also changes required to DxeCapsuleLibFmp to enable this runtime FMP processing that I will submit separately. Thanks, -bob -----Original Message----- From: devel@edk2.groups.io <devel@edk2.groups.io> On Behalf Of gaoliming via groups.io Sent: Thursday, September 23, 2021 6:57 PM To: devel@edk2.groups.io; Bob Morgan <bobm@nvidia.com> Cc: michael.d.kinney@intel.com; guomin.jiang@intel.com; wei6.xu@intel.com Subject: 回复: [edk2-devel] [PATCH 0/5] FmpDevicePkg: Add support for runtime FmpDxe driver External email: Use caution opening links or attachments Bob: Dose this change make FirmwareManagementProtocol to be used in runtime phase? Thanks Liming > -----邮件原件----- > 发件人: devel@edk2.groups.io <devel@edk2.groups.io> 代表 Bob Morgan via > groups.io > 发送时间: 2021年9月23日 8:00 > 收件人: devel@edk2.groups.io > 抄送: gaoliming@byosoft.com.cn; michael.d.kinney@intel.com; > guomin.jiang@intel.com; wei6.xu@intel.com; Bob Morgan > <bobm@nvidia.com> > 主题: [edk2-devel] [PATCH 0/5] FmpDevicePkg: Add support for runtime > FmpDxe driver > > Adds a runtime version of FmpDxe driver to allow firmware updates > after ExitBootServices() is called and enables DXE_RUNTIME_DRIVER > module type for associated FMP libraries. > > Bob Morgan (5): > FmpDevicePkg/FmpDeviceLibNull: Add DXE_RUNTIME_DRIVER support > FmpDevicePkg/FmpPayloadHeaderLibV1: Add DXE_RUNTIME_DRIVER support > FmpDevicePkg/FmpDependencyCheckLibNull: Add DXE_RUNTIME_DRIVER > support > FmpDevicePkg/FmpDependencyDeviceLibNull: Add DXE_RUNTIME_DRIVER > support > FmpDevicePkg/FmpDxe: Add runtime FmpDxe driver > > FmpDevicePkg/FmpDevicePkg.dsc | 29 +++ > FmpDevicePkg/FmpDxe/FmpDxe.c | 34 +++- > FmpDevicePkg/FmpDxe/FmpRuntimeDxe.c | 185 > ++++++++++++++++++ > FmpDevicePkg/FmpDxe/FmpRuntimeDxe.inf | 87 ++++++++ > FmpDevicePkg/FmpDxe/VariableSupport.c | 7 + > .../FmpDependencyCheckLibNull.inf | 2 +- > .../FmpDependencyDeviceLibNull.inf | 2 +- > .../FmpDeviceLibNull/FmpDeviceLibNull.inf | 2 +- > .../FmpPayloadHeaderLibV1.inf | 2 +- > 9 files changed, 336 insertions(+), 14 deletions(-) create mode > 100644 FmpDevicePkg/FmpDxe/FmpRuntimeDxe.c > create mode 100644 FmpDevicePkg/FmpDxe/FmpRuntimeDxe.inf > > -- > 2.17.1 > > > > > ^ permalink raw reply [flat|nested] 11+ messages in thread
* 回复: [edk2-devel] [PATCH 0/5] FmpDevicePkg: Add support for runtime FmpDxe driver 2021-10-20 19:41 ` Bob Morgan @ 2021-10-21 1:53 ` gaoliming [not found] ` <16AFE8DE7122BA33.23075@groups.io> 1 sibling, 0 replies; 11+ messages in thread From: gaoliming @ 2021-10-21 1:53 UTC (permalink / raw) To: devel, bobm; +Cc: michael.d.kinney, guomin.jiang, wei6.xu Bob: Sorry for the late response. I have no comments for the code change. But, I am not sure whether it is valid to use UEFI FirmwareManagement Protocol in runtime phase, because I don't find such description for this protocol in UEFI spec. Mike, Guomin, Xuwei: Have you any comments for this patch set? Thanks Liming > -----邮件原件----- > 发件人: devel@edk2.groups.io <devel@edk2.groups.io> 代表 Bob Morgan > via groups.io > 发送时间: 2021年10月21日 3:41 > 收件人: devel@edk2.groups.io; Bob Morgan <bobm@nvidia.com>; > gaoliming@byosoft.com.cn > 抄送: michael.d.kinney@intel.com; guomin.jiang@intel.com; > wei6.xu@intel.com > 主题: Re: [edk2-devel] [PATCH 0/5] FmpDevicePkg: Add support for runtime > FmpDxe driver > > Hi, Any feedback on this? > > Thanks, > > -bob > > -----Original Message----- > From: devel@edk2.groups.io <devel@edk2.groups.io> On Behalf Of Bob > Morgan via groups.io > Sent: Thursday, September 23, 2021 8:19 PM > To: devel@edk2.groups.io; gaoliming@byosoft.com.cn > Cc: michael.d.kinney@intel.com; guomin.jiang@intel.com; > wei6.xu@intel.com > Subject: Re: [edk2-devel] [PATCH 0/5] FmpDevicePkg: Add support for > runtime FmpDxe driver > > External email: Use caution opening links or attachments > > > Hi Liming, > > Yes, this adds a new runtime variation of the FmpDxe driver that can process > the FMP payload of a capsule at runtime if the capsule flags do not request > PERSIST_ACROSS_RESET and INITIATE_RESET. > > There are also changes required to DxeCapsuleLibFmp to enable this runtime > FMP processing that I will submit separately. > > Thanks, > > -bob > > -----Original Message----- > From: devel@edk2.groups.io <devel@edk2.groups.io> On Behalf Of gaoliming > via groups.io > Sent: Thursday, September 23, 2021 6:57 PM > To: devel@edk2.groups.io; Bob Morgan <bobm@nvidia.com> > Cc: michael.d.kinney@intel.com; guomin.jiang@intel.com; > wei6.xu@intel.com > Subject: 回复: [edk2-devel] [PATCH 0/5] FmpDevicePkg: Add support for > runtime FmpDxe driver > > External email: Use caution opening links or attachments > > > Bob: > Dose this change make FirmwareManagementProtocol to be used in > runtime phase? > > Thanks > Liming > > -----邮件原件----- > > 发件人: devel@edk2.groups.io <devel@edk2.groups.io> 代表 Bob > Morgan via > > groups.io > > 发送时间: 2021年9月23日 8:00 > > 收件人: devel@edk2.groups.io > > 抄送: gaoliming@byosoft.com.cn; michael.d.kinney@intel.com; > > guomin.jiang@intel.com; wei6.xu@intel.com; Bob Morgan > > <bobm@nvidia.com> > > 主题: [edk2-devel] [PATCH 0/5] FmpDevicePkg: Add support for runtime > > FmpDxe driver > > > > Adds a runtime version of FmpDxe driver to allow firmware updates > > after ExitBootServices() is called and enables DXE_RUNTIME_DRIVER > > module type for associated FMP libraries. > > > > Bob Morgan (5): > > FmpDevicePkg/FmpDeviceLibNull: Add DXE_RUNTIME_DRIVER support > > FmpDevicePkg/FmpPayloadHeaderLibV1: Add DXE_RUNTIME_DRIVER > support > > FmpDevicePkg/FmpDependencyCheckLibNull: Add > DXE_RUNTIME_DRIVER > > support > > FmpDevicePkg/FmpDependencyDeviceLibNull: Add > DXE_RUNTIME_DRIVER > > support > > FmpDevicePkg/FmpDxe: Add runtime FmpDxe driver > > > > FmpDevicePkg/FmpDevicePkg.dsc | 29 +++ > > FmpDevicePkg/FmpDxe/FmpDxe.c | 34 +++- > > FmpDevicePkg/FmpDxe/FmpRuntimeDxe.c | 185 > > ++++++++++++++++++ > > FmpDevicePkg/FmpDxe/FmpRuntimeDxe.inf | 87 ++++++++ > > FmpDevicePkg/FmpDxe/VariableSupport.c | 7 + > > .../FmpDependencyCheckLibNull.inf | 2 +- > > .../FmpDependencyDeviceLibNull.inf | 2 +- > > .../FmpDeviceLibNull/FmpDeviceLibNull.inf | 2 +- > > .../FmpPayloadHeaderLibV1.inf | 2 +- > > 9 files changed, 336 insertions(+), 14 deletions(-) create mode > > 100644 FmpDevicePkg/FmpDxe/FmpRuntimeDxe.c > > create mode 100644 FmpDevicePkg/FmpDxe/FmpRuntimeDxe.inf > > > > -- > > 2.17.1 > > > > > > > > > > > > > > > > > > > > > > > > > > > ^ permalink raw reply [flat|nested] 11+ messages in thread
[parent not found: <16AFE8DE7122BA33.23075@groups.io>]
* 回复: [edk2-devel] [PATCH 0/5] FmpDevicePkg: Add support for runtime FmpDxe driver [not found] ` <16AFE8DE7122BA33.23075@groups.io> @ 2021-11-02 1:11 ` gaoliming 0 siblings, 0 replies; 11+ messages in thread From: gaoliming @ 2021-11-02 1:11 UTC (permalink / raw) To: devel, gaoliming, bobm; +Cc: michael.d.kinney, guomin.jiang, wei6.xu Bob: Seemly, there is no other comments for this change. I give my Reviewed-by: Liming Gao <gaoliming@byosoft.com.cn> Thanks Liming > -----邮件原件----- > 发件人: devel@edk2.groups.io <devel@edk2.groups.io> 代表 gaoliming > 发送时间: 2021年10月21日 9:54 > 收件人: devel@edk2.groups.io; bobm@nvidia.com > 抄送: michael.d.kinney@intel.com; guomin.jiang@intel.com; > wei6.xu@intel.com > 主题: 回复: [edk2-devel] [PATCH 0/5] FmpDevicePkg: Add support for > runtime FmpDxe driver > > Bob: > Sorry for the late response. I have no comments for the code change. > > But, I am not sure whether it is valid to use UEFI FirmwareManagement > Protocol in runtime phase, because I don't find such description for this > protocol in UEFI spec. > > Mike, Guomin, Xuwei: > Have you any comments for this patch set? > > Thanks > Liming > > -----邮件原件----- > > 发件人: devel@edk2.groups.io <devel@edk2.groups.io> 代表 Bob > Morgan > > via groups.io > > 发送时间: 2021年10月21日 3:41 > > 收件人: devel@edk2.groups.io; Bob Morgan <bobm@nvidia.com>; > > gaoliming@byosoft.com.cn > > 抄送: michael.d.kinney@intel.com; guomin.jiang@intel.com; > > wei6.xu@intel.com > > 主题: Re: [edk2-devel] [PATCH 0/5] FmpDevicePkg: Add support for > runtime > > FmpDxe driver > > > > Hi, Any feedback on this? > > > > Thanks, > > > > -bob > > > > -----Original Message----- > > From: devel@edk2.groups.io <devel@edk2.groups.io> On Behalf Of Bob > > Morgan via groups.io > > Sent: Thursday, September 23, 2021 8:19 PM > > To: devel@edk2.groups.io; gaoliming@byosoft.com.cn > > Cc: michael.d.kinney@intel.com; guomin.jiang@intel.com; > > wei6.xu@intel.com > > Subject: Re: [edk2-devel] [PATCH 0/5] FmpDevicePkg: Add support for > > runtime FmpDxe driver > > > > External email: Use caution opening links or attachments > > > > > > Hi Liming, > > > > Yes, this adds a new runtime variation of the FmpDxe driver that can process > > the FMP payload of a capsule at runtime if the capsule flags do not request > > PERSIST_ACROSS_RESET and INITIATE_RESET. > > > > There are also changes required to DxeCapsuleLibFmp to enable this > runtime > > FMP processing that I will submit separately. > > > > Thanks, > > > > -bob > > > > -----Original Message----- > > From: devel@edk2.groups.io <devel@edk2.groups.io> On Behalf Of > gaoliming > > via groups.io > > Sent: Thursday, September 23, 2021 6:57 PM > > To: devel@edk2.groups.io; Bob Morgan <bobm@nvidia.com> > > Cc: michael.d.kinney@intel.com; guomin.jiang@intel.com; > > wei6.xu@intel.com > > Subject: 回复: [edk2-devel] [PATCH 0/5] FmpDevicePkg: Add support for > > runtime FmpDxe driver > > > > External email: Use caution opening links or attachments > > > > > > Bob: > > Dose this change make FirmwareManagementProtocol to be used in > > runtime phase? > > > > Thanks > > Liming > > > -----邮件原件----- > > > 发件人: devel@edk2.groups.io <devel@edk2.groups.io> 代表 Bob > > Morgan via > > > groups.io > > > 发送时间: 2021年9月23日 8:00 > > > 收件人: devel@edk2.groups.io > > > 抄送: gaoliming@byosoft.com.cn; michael.d.kinney@intel.com; > > > guomin.jiang@intel.com; wei6.xu@intel.com; Bob Morgan > > > <bobm@nvidia.com> > > > 主题: [edk2-devel] [PATCH 0/5] FmpDevicePkg: Add support for runtime > > > FmpDxe driver > > > > > > Adds a runtime version of FmpDxe driver to allow firmware updates > > > after ExitBootServices() is called and enables DXE_RUNTIME_DRIVER > > > module type for associated FMP libraries. > > > > > > Bob Morgan (5): > > > FmpDevicePkg/FmpDeviceLibNull: Add DXE_RUNTIME_DRIVER > support > > > FmpDevicePkg/FmpPayloadHeaderLibV1: Add DXE_RUNTIME_DRIVER > > support > > > FmpDevicePkg/FmpDependencyCheckLibNull: Add > > DXE_RUNTIME_DRIVER > > > support > > > FmpDevicePkg/FmpDependencyDeviceLibNull: Add > > DXE_RUNTIME_DRIVER > > > support > > > FmpDevicePkg/FmpDxe: Add runtime FmpDxe driver > > > > > > FmpDevicePkg/FmpDevicePkg.dsc | 29 +++ > > > FmpDevicePkg/FmpDxe/FmpDxe.c | 34 +++- > > > FmpDevicePkg/FmpDxe/FmpRuntimeDxe.c | 185 > > > ++++++++++++++++++ > > > FmpDevicePkg/FmpDxe/FmpRuntimeDxe.inf | 87 ++++++++ > > > FmpDevicePkg/FmpDxe/VariableSupport.c | 7 + > > > .../FmpDependencyCheckLibNull.inf | 2 +- > > > .../FmpDependencyDeviceLibNull.inf | 2 +- > > > .../FmpDeviceLibNull/FmpDeviceLibNull.inf | 2 +- > > > .../FmpPayloadHeaderLibV1.inf | 2 +- > > > 9 files changed, 336 insertions(+), 14 deletions(-) create mode > > > 100644 FmpDevicePkg/FmpDxe/FmpRuntimeDxe.c > > > create mode 100644 FmpDevicePkg/FmpDxe/FmpRuntimeDxe.inf > > > > > > -- > > > 2.17.1 > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > ^ permalink raw reply [flat|nested] 11+ messages in thread
end of thread, other threads:[~2021-11-02 1:11 UTC | newest] Thread overview: 11+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2021-09-22 23:59 [PATCH 0/5] FmpDevicePkg: Add support for runtime FmpDxe driver Bob Morgan 2021-09-22 23:59 ` [PATCH 1/5] FmpDevicePkg/FmpDeviceLibNull: Add DXE_RUNTIME_DRIVER support Bob Morgan 2021-09-22 23:59 ` [PATCH 2/5] FmpDevicePkg/FmpPayloadHeaderLibV1: " Bob Morgan 2021-09-22 23:59 ` [PATCH 3/5] FmpDevicePkg/FmpDependencyCheckLibNull: " Bob Morgan 2021-09-22 23:59 ` [PATCH 4/5] FmpDevicePkg/FmpDependencyDeviceLibNull: " Bob Morgan 2021-09-22 23:59 ` [PATCH 5/5] FmpDevicePkg/FmpDxe: Add runtime FmpDxe driver Bob Morgan 2021-09-24 0:56 ` 回复: [edk2-devel] [PATCH 0/5] FmpDevicePkg: Add support for " gaoliming 2021-09-24 2:18 ` Bob Morgan [not found] ` <16A7A0910520505F.360@groups.io> 2021-10-20 19:41 ` Bob Morgan 2021-10-21 1:53 ` 回复: " gaoliming [not found] ` <16AFE8DE7122BA33.23075@groups.io> 2021-11-02 1:11 ` gaoliming
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox