* [Patch V2 0/3] MdeModulePkg/EsrtFmpDxe: Add EsrtFmpDxe module @ 2018-02-07 22:37 Kinney, Michael D 2018-02-07 22:37 ` [Patch V2 1/3] " Kinney, Michael D ` (4 more replies) 0 siblings, 5 replies; 7+ messages in thread From: Kinney, Michael D @ 2018-02-07 22:37 UTC (permalink / raw) To: edk2-devel Cc: Sean Brogan, Jiewen Yao, Star Zeng, Eric Dong, Ruiyu Ni, Michael D Kinney V2: * Add .uni files with module name, abstract, description * Use EfiCreateEventReadyToBootEx() instead of gBS->CreateEventEx() * Change module type from UEFI_DRIVER to DXE_DRIVER with depex TRUE https://bugzilla.tianocore.org/show_bug.cgi?id=802 Branch for review: https://github.com/mdkinney/edk2/tree/Bug_802_EsrtFmpDxe_V2 Based on content from the following branch/commits: https://github.com/Microsoft/MS_UEFI/tree/share/MsCapsuleSupport The EsrtFmpDxe module is a lightweight version of the EsrtDxe module that produces ESRT entries based only on FMP Protocol instances. Update Quark and Vlv2 platforms to use EsrtFmpDxe. Cc: Sean Brogan <sean.brogan@microsoft.com> Cc: Jiewen Yao <jiewen.yao@intel.com> Cc: Star Zeng <star.zeng@intel.com> Cc: Eric Dong <eric.dong@intel.com> Cc: Ruiyu Ni <ruiyu.ni@intel.com> Contributed-under: TianoCore Contribution Agreement 1.1 Signed-off-by: Michael D Kinney <michael.d.kinney@intel.com> Michael D Kinney (3): MdeModulePkg/EsrtFmpDxe: Add EsrtFmpDxe module QuarkPlatformPkg: Switch from EsrtDxe to EsrtFmpDxe Vlv2TbltDevicePkg: Switch from EsrtDxe to EsrtFmpDxe MdeModulePkg/MdeModulePkg.dsc | 1 + MdeModulePkg/Universal/EsrtFmpDxe/EsrtFmp.c | 482 +++++++++++++++++++++ .../Universal/EsrtFmpDxe/EsrtFmpDebugPrint.c | 161 +++++++ MdeModulePkg/Universal/EsrtFmpDxe/EsrtFmpDxe.inf | 74 ++++ MdeModulePkg/Universal/EsrtFmpDxe/EsrtFmpDxe.uni | 19 + .../Universal/EsrtFmpDxe/EsrtFmpDxeExtra.uni | 18 + QuarkPlatformPkg/Quark.dsc | 4 +- QuarkPlatformPkg/Quark.fdf | 4 +- Vlv2TbltDevicePkg/PlatformPkg.fdf | 4 +- Vlv2TbltDevicePkg/PlatformPkgGcc.fdf | 4 +- Vlv2TbltDevicePkg/PlatformPkgGccX64.dsc | 4 +- Vlv2TbltDevicePkg/PlatformPkgIA32.dsc | 4 +- Vlv2TbltDevicePkg/PlatformPkgX64.dsc | 4 +- 13 files changed, 769 insertions(+), 14 deletions(-) create mode 100644 MdeModulePkg/Universal/EsrtFmpDxe/EsrtFmp.c create mode 100644 MdeModulePkg/Universal/EsrtFmpDxe/EsrtFmpDebugPrint.c create mode 100644 MdeModulePkg/Universal/EsrtFmpDxe/EsrtFmpDxe.inf create mode 100644 MdeModulePkg/Universal/EsrtFmpDxe/EsrtFmpDxe.uni create mode 100644 MdeModulePkg/Universal/EsrtFmpDxe/EsrtFmpDxeExtra.uni -- 2.14.2.windows.3 ^ permalink raw reply [flat|nested] 7+ messages in thread
* [Patch V2 1/3] MdeModulePkg/EsrtFmpDxe: Add EsrtFmpDxe module 2018-02-07 22:37 [Patch V2 0/3] MdeModulePkg/EsrtFmpDxe: Add EsrtFmpDxe module Kinney, Michael D @ 2018-02-07 22:37 ` Kinney, Michael D 2018-02-08 5:34 ` Zeng, Star 2018-02-07 22:37 ` [Patch V2 2/3] QuarkPlatformPkg: Switch from EsrtDxe to EsrtFmpDxe Kinney, Michael D ` (3 subsequent siblings) 4 siblings, 1 reply; 7+ messages in thread From: Kinney, Michael D @ 2018-02-07 22:37 UTC (permalink / raw) To: edk2-devel Cc: Michael D Kinney, Sean Brogan, Jiewen Yao, Star Zeng, Eric Dong, Ruiyu Ni From: Michael D Kinney <michael.d.kinney@intel.com> https://bugzilla.tianocore.org/show_bug.cgi?id=802 Based on content from the following branch/commits: https://github.com/Microsoft/MS_UEFI/tree/share/MsCapsuleSupport The EsrtFmpDxe module is a lightweight version of the EsrtDxe module that produces ESRT entries based only on FMP Protocol instances. Cc: Sean Brogan <sean.brogan@microsoft.com> Cc: Jiewen Yao <jiewen.yao@intel.com> Cc: Star Zeng <star.zeng@intel.com> Cc: Eric Dong <eric.dong@intel.com> Cc: Ruiyu Ni <ruiyu.ni@intel.com> Contributed-under: TianoCore Contribution Agreement 1.1 Signed-off-by: Michael D Kinney <michael.d.kinney@intel.com> --- MdeModulePkg/MdeModulePkg.dsc | 1 + MdeModulePkg/Universal/EsrtFmpDxe/EsrtFmp.c | 482 +++++++++++++++++++++ .../Universal/EsrtFmpDxe/EsrtFmpDebugPrint.c | 161 +++++++ MdeModulePkg/Universal/EsrtFmpDxe/EsrtFmpDxe.inf | 74 ++++ MdeModulePkg/Universal/EsrtFmpDxe/EsrtFmpDxe.uni | 19 + .../Universal/EsrtFmpDxe/EsrtFmpDxeExtra.uni | 18 + 6 files changed, 755 insertions(+) create mode 100644 MdeModulePkg/Universal/EsrtFmpDxe/EsrtFmp.c create mode 100644 MdeModulePkg/Universal/EsrtFmpDxe/EsrtFmpDebugPrint.c create mode 100644 MdeModulePkg/Universal/EsrtFmpDxe/EsrtFmpDxe.inf create mode 100644 MdeModulePkg/Universal/EsrtFmpDxe/EsrtFmpDxe.uni create mode 100644 MdeModulePkg/Universal/EsrtFmpDxe/EsrtFmpDxeExtra.uni diff --git a/MdeModulePkg/MdeModulePkg.dsc b/MdeModulePkg/MdeModulePkg.dsc index 1c0085aee6..50002f8e3f 100644 --- a/MdeModulePkg/MdeModulePkg.dsc +++ b/MdeModulePkg/MdeModulePkg.dsc @@ -412,6 +412,7 @@ MdeModulePkg/Universal/FvSimpleFileSystemDxe/FvSimpleFileSystemDxe.inf MdeModulePkg/Universal/EsrtDxe/EsrtDxe.inf + MdeModulePkg/Universal/EsrtFmpDxe/EsrtFmpDxe.inf MdeModulePkg/Universal/PropertiesTableAttributesDxe/PropertiesTableAttributesDxe.inf MdeModulePkg/Universal/FileExplorerDxe/FileExplorerDxe.inf { diff --git a/MdeModulePkg/Universal/EsrtFmpDxe/EsrtFmp.c b/MdeModulePkg/Universal/EsrtFmpDxe/EsrtFmp.c new file mode 100644 index 0000000000..b98430edbf --- /dev/null +++ b/MdeModulePkg/Universal/EsrtFmpDxe/EsrtFmp.c @@ -0,0 +1,482 @@ +/** @file + Publishes ESRT table from Firmware Management Protocol instances + + Copyright (c) 2016, Microsoft Corporation + Copyright (c) 2018, Intel Corporation. All rights reserved.<BR> + + All rights reserved. + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are met: + 1. Redistributions of source code must retain the above copyright notice, + this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, + INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, + BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE + OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +**/ + +#include <Uefi.h> +#include <Library/BaseLib.h> +#include <Library/BaseMemoryLib.h> +#include <Library/MemoryAllocationLib.h> +#include <Library/UefiBootServicesTableLib.h> +#include <Library/DebugLib.h> +#include <Library/PcdLib.h> +#include <Library/UefiLib.h> +#include <Protocol/FirmwareManagement.h> +#include <Guid/EventGroup.h> +#include <Guid/SystemResourceTable.h> + +// +// Print ESRT to debug console +// +VOID +EFIAPI +PrintTable ( + IN EFI_SYSTEM_RESOURCE_TABLE *Table + ); + +// +// Number of ESRT entries to grow by each time we run out of room +// +#define GROWTH_STEP 10 + +// +// Module globals. +// +EFI_EVENT mEsrtReadyToBootEvent; +EFI_SYSTEM_RESOURCE_TABLE *mTable = NULL; +BOOLEAN mEsrtInstalled = FALSE; +EFI_EVENT mFmpInstallEvent; +VOID *mFmpInstallEventRegistration = NULL; + +/** + Install EFI System Resource Table into the UEFI Configuration Table + + @return Status code. + +**/ +EFI_STATUS +InstallEfiSystemResourceTableInUefiConfigurationTable ( + VOID + ) +{ + EFI_STATUS Status; + + Status = EFI_SUCCESS; + if (!mEsrtInstalled) { + if (mTable == NULL) { + DEBUG ((DEBUG_ERROR, "EsrtFmpDxe: Can't install ESRT table because it is NULL. \n")); + Status = EFI_OUT_OF_RESOURCES; + } else if (mTable->FwResourceCount == 0) { + DEBUG ((DEBUG_ERROR, "EsrtFmpDxe: Can't install ESRT table because it has zero Entries. \n")); + Status = EFI_UNSUPPORTED; + } else { + // + // Install the pointer into config table + // + Status = gBS->InstallConfigurationTable (&gEfiSystemResourceTableGuid, mTable); + if (EFI_ERROR (Status)) { + DEBUG ((DEBUG_ERROR, "EsrtFmpDxe: Can't install ESRT table. Status: %r. \n", Status)); + } else { + DEBUG ((DEBUG_INFO, "EsrtFmpDxe: Installed ESRT table. \n")); + mEsrtInstalled = TRUE; + } + } + } + return Status; +} + +/** + Return if this FMP is a system FMP or a device FMP, based upon FmpImageInfo. + + @param[in] FmpImageInfo A pointer to EFI_FIRMWARE_IMAGE_DESCRIPTOR + + @return TRUE It is a system FMP. + @return FALSE It is a device FMP. +**/ +BOOLEAN +IsSystemFmp ( + IN EFI_FIRMWARE_IMAGE_DESCRIPTOR *FmpImageInfo + ) +{ + GUID *Guid; + UINTN Count; + UINTN Index; + + Guid = PcdGetPtr (PcdSystemFmpCapsuleImageTypeIdGuid); + Count = PcdGetSize (PcdSystemFmpCapsuleImageTypeIdGuid) / sizeof(GUID); + + for (Index = 0; Index < Count; Index++, Guid++) { + if (CompareGuid (&FmpImageInfo->ImageTypeId, Guid)) { + return TRUE; + } + } + + return FALSE; +} + +/** + Function to create a single ESRT Entry and add it to the ESRT + given a FMP descriptor. If the guid is already in the ESRT it + will be ignored. The ESRT will grow if it does not have enough room. + + @return Status code. + +**/ +EFI_STATUS +EFIAPI +CreateEsrtEntry ( + IN EFI_FIRMWARE_IMAGE_DESCRIPTOR *FmpImageInfoBuf, + IN UINT32 FmpVersion + ) +{ + UINTN Index; + EFI_SYSTEM_RESOURCE_ENTRY *Entry; + UINTN NewSize; + EFI_SYSTEM_RESOURCE_TABLE *NewTable; + + Index = 0; + Entry = NULL; + + // + // Get our ESRT table. This should never be null at this point + // + if (mTable == NULL) { + return EFI_DEVICE_ERROR; + } + + Entry = (EFI_SYSTEM_RESOURCE_ENTRY *)(mTable + 1); + // + // Make sure Guid isn't already in the list + // + for (Index = 0; Index < mTable->FwResourceCount; Index++) { + if (CompareGuid (&Entry->FwClass, &FmpImageInfoBuf->ImageTypeId)) { + DEBUG ((DEBUG_ERROR, "EsrtFmpDxe: ESRT Entry already exists for FMP Instance with GUID %g\n", &Entry->FwClass)); + return EFI_INVALID_PARAMETER; + } + Entry++; + } + + // + // Grow table if needed + // + if (mTable->FwResourceCount >= mTable->FwResourceCountMax) { + // + // Can't grow table after installed. + // Only because didn't add support for this. + // Would need to re-install ESRT in system table if wanted to support + // + if (mEsrtInstalled) { + DEBUG ((DEBUG_ERROR, "EsrtFmpDxe: Failed to install entry because ESRT table needed to grow after table already installed. \n")); + return EFI_OUT_OF_RESOURCES; + } + + NewSize = ((mTable->FwResourceCountMax + GROWTH_STEP) * sizeof (EFI_SYSTEM_RESOURCE_ENTRY)) + sizeof (EFI_SYSTEM_RESOURCE_TABLE); + NewTable = AllocateRuntimeZeroPool (NewSize); + if (NewTable == NULL) { + DEBUG ((DEBUG_ERROR, "EsrtFmpDxe: Failed to allocate memory larger table for ESRT. \n")); + return EFI_OUT_OF_RESOURCES; + } + // + // Copy the whole old table into new table buffer + // + CopyMem ( + NewTable, + mTable, + ((mTable->FwResourceCountMax) * sizeof (EFI_SYSTEM_RESOURCE_ENTRY)) + sizeof (EFI_SYSTEM_RESOURCE_TABLE) + ); + // + // Update max + // + NewTable->FwResourceCountMax = NewTable->FwResourceCountMax + GROWTH_STEP; + // + // Free old table + // + FreePool (mTable); + // + // Reassign pointer to new table. + // + mTable = NewTable; + } + + // + // ESRT table has enough room for the new entry so add new entry + // + Entry = (EFI_SYSTEM_RESOURCE_ENTRY *)(((UINT8 *)mTable) + sizeof (EFI_SYSTEM_RESOURCE_TABLE)); + // + // Move to the location of new entry + // + Entry = Entry + mTable->FwResourceCount; + // + // Increment resource count + // + mTable->FwResourceCount++; + + CopyGuid (&Entry->FwClass, &FmpImageInfoBuf->ImageTypeId); + + if (IsSystemFmp (FmpImageInfoBuf)) { + DEBUG ((DEBUG_INFO, "EsrtFmpDxe: Found an ESRT entry for a System Device.\n")); + Entry->FwType = (UINT32)(ESRT_FW_TYPE_SYSTEMFIRMWARE); + } else { + Entry->FwType = (UINT32)(ESRT_FW_TYPE_DEVICEFIRMWARE); + } + + Entry->FwVersion = FmpImageInfoBuf->Version; + Entry->LowestSupportedFwVersion = 0; + Entry->CapsuleFlags = 0; + Entry->LastAttemptVersion = 0; + Entry->LastAttemptStatus = 0; + + // + // VERSION 2 has Lowest Supported + // + if (FmpVersion >= 2) { + Entry->LowestSupportedFwVersion = FmpImageInfoBuf->LowestSupportedImageVersion; + } + + // + // VERSION 3 supports last attempt values + // + if (FmpVersion >= 3) { + Entry->LastAttemptVersion = FmpImageInfoBuf->LastAttemptVersion; + Entry->LastAttemptStatus = FmpImageInfoBuf->LastAttemptStatus; + } + + return EFI_SUCCESS; +} + +/** + Notify function for every Firmware Management Protocol being installed. + Get the descriptors from FMP Instance and create ESRT entries (ESRE) + + @param[in] Event The Event that is being processed. + @param[in] Context The Event Context. + +**/ +VOID +EFIAPI +FmpInstallProtocolNotify ( + IN EFI_EVENT Event, + IN VOID *Context + ) +{ + EFI_STATUS Status; + EFI_HANDLE Handle; + UINTN BufferSize; + EFI_FIRMWARE_MANAGEMENT_PROTOCOL *Fmp; + UINTN DescriptorSize; + EFI_FIRMWARE_IMAGE_DESCRIPTOR *FmpImageInfoBuf; + EFI_FIRMWARE_IMAGE_DESCRIPTOR *FmpImageInfoBufOrg; + UINT8 FmpImageInfoCount; + UINT32 FmpImageInfoDescriptorVer; + UINTN ImageInfoSize; + UINT32 PackageVersion; + CHAR16 *PackageVersionName; + + Status = EFI_SUCCESS; + Handle = 0; + BufferSize = 0; + PackageVersionName = NULL; + FmpImageInfoBuf = NULL; + FmpImageInfoBufOrg = NULL; + Fmp = NULL; + + DEBUG ((DEBUG_INFO, "FMP Installed Notify\n")); + while (TRUE) { + BufferSize = sizeof (EFI_HANDLE); + Status = gBS->LocateHandle (ByRegisterNotify, NULL, mFmpInstallEventRegistration, &BufferSize, &Handle); + if (EFI_ERROR (Status)) { + DEBUG ((DEBUG_WARN, "EsrtFmpDxe: Failed to Locate handle from notify value. Status: %r\n", Status)); + return; + } + + Status = gBS->HandleProtocol (Handle, &gEfiFirmwareManagementProtocolGuid, (VOID **)&Fmp); + if (EFI_ERROR (Status)) { + DEBUG ((DEBUG_ERROR, "EsrtFmpDxe: Failed to get FMP for a handle 0x%x\n", Handle)); + continue; + } + ImageInfoSize = 0; + + Status = Fmp->GetImageInfo ( + Fmp, // FMP Pointer + &ImageInfoSize, // Buffer Size (in this case 0) + NULL, // NULL so we can get size + &FmpImageInfoDescriptorVer, // DescriptorVersion + &FmpImageInfoCount, // DescriptorCount + &DescriptorSize, // DescriptorSize + &PackageVersion, // PackageVersion + &PackageVersionName // PackageVersionName + ); + + if (Status != EFI_BUFFER_TOO_SMALL) { + DEBUG ((DEBUG_ERROR, "EsrtFmpDxe: Unexpected Failure in GetImageInfo. Status = %r\n", Status)); + continue; + } + + FmpImageInfoBuf = NULL; + FmpImageInfoBuf = AllocateZeroPool (ImageInfoSize); + if (FmpImageInfoBuf == NULL) { + DEBUG ((DEBUG_ERROR, "EsrtFmpDxe: Failed to get memory for descriptors.\n")); + continue; + } + + FmpImageInfoBufOrg = FmpImageInfoBuf; + PackageVersionName = NULL; + Status = Fmp->GetImageInfo ( + Fmp, + &ImageInfoSize, // ImageInfoSize + FmpImageInfoBuf, // ImageInfo + &FmpImageInfoDescriptorVer, // DescriptorVersion + &FmpImageInfoCount, // DescriptorCount + &DescriptorSize, // DescriptorSize + &PackageVersion, // PackageVersion + &PackageVersionName // PackageVersionName + ); + if (EFI_ERROR (Status)) { + DEBUG ((DEBUG_ERROR, "EsrtFmpDxe: Failure in GetImageInfo. Status = %r\n", Status)); + goto CleanUp; + } + + // + // Check each descriptor and read from the one specified + // + while (FmpImageInfoCount > 0) { + // + // If the descriptor has the IN USE bit set, create ESRT entry otherwise ignore. + // + if ((FmpImageInfoBuf->AttributesSetting & FmpImageInfoBuf->AttributesSupported & IMAGE_ATTRIBUTE_IN_USE) == IMAGE_ATTRIBUTE_IN_USE) { + // + // Create ESRT entry + // + CreateEsrtEntry (FmpImageInfoBuf, FmpImageInfoDescriptorVer); + } + FmpImageInfoCount--; + // + // Increment the buffer pointer ahead by the size of the descriptor + // + FmpImageInfoBuf = (EFI_FIRMWARE_IMAGE_DESCRIPTOR *)(((UINT8 *)FmpImageInfoBuf) + DescriptorSize); + } + + if (PackageVersionName != NULL) { + FreePool (PackageVersionName); + PackageVersionName = NULL; + } + if (FmpImageInfoBufOrg != NULL) { + FreePool (FmpImageInfoBufOrg); + FmpImageInfoBufOrg = NULL; + } + } + +CleanUp: + if (FmpImageInfoBufOrg != NULL) { + FreePool (FmpImageInfoBufOrg); + } + return; +} + +/** + Notify function for event group EFI_EVENT_GROUP_READY_TO_BOOT. This is used to + install the Efi System Resource Table. + + @param[in] Event The Event that is being processed. + @param[in] Context The Event Context. + +**/ +VOID +EFIAPI +EsrtReadyToBootEventNotify ( + IN EFI_EVENT Event, + IN VOID *Context + ) +{ + InstallEfiSystemResourceTableInUefiConfigurationTable (); + + // + // Print table on debug builds + // + DEBUG_CODE_BEGIN (); + PrintTable (mTable); + DEBUG_CODE_END (); +} + +/** + The module Entry Point of the Efi System Resource Table DXE driver. + + @param[in] ImageHandle The firmware allocated handle for the EFI image. + @param[in] SystemTable A pointer to the EFI System Table. + + @retval EFI_SUCCESS The entry point is executed successfully. + @retval Other Some error occurs when executing this entry point. + +**/ +EFI_STATUS +EFIAPI +EsrtFmpEntryPoint ( + IN EFI_HANDLE ImageHandle, + IN EFI_SYSTEM_TABLE *SystemTable + ) +{ + EFI_STATUS Status; + + // + // Allocate Memory for table + // + mTable = AllocateRuntimeZeroPool ( + (GROWTH_STEP * sizeof (EFI_SYSTEM_RESOURCE_ENTRY)) + sizeof (EFI_SYSTEM_RESOURCE_TABLE) + ); + ASSERT (mTable != NULL); + if (mTable == NULL) { + DEBUG ((DEBUG_ERROR, "EsrtFmpDxe: Failed to allocate memory for ESRT.\n")); + return EFI_OUT_OF_RESOURCES; + } + + mTable->FwResourceCount = 0; + mTable->FwResourceCountMax = GROWTH_STEP; + mTable->FwResourceVersion = EFI_SYSTEM_RESOURCE_TABLE_FIRMWARE_RESOURCE_VERSION; + + // + // Register notify function for all FMP installed + // + mFmpInstallEvent = EfiCreateProtocolNotifyEvent ( + &gEfiFirmwareManagementProtocolGuid, + TPL_CALLBACK, + FmpInstallProtocolNotify, + NULL, + &mFmpInstallEventRegistration + ); + + ASSERT (mFmpInstallEvent != NULL); + + if (mFmpInstallEvent == NULL) { + DEBUG ((DEBUG_ERROR, "EsrtFmpDxe: Failed to Create Protocol Notify Event for FMP.\n")); + } + + // + // Register notify function to install ESRT on ReadyToBoot Event. + // + Status = EfiCreateEventReadyToBootEx ( + TPL_CALLBACK, + EsrtReadyToBootEventNotify, + NULL, + &mEsrtReadyToBootEvent + ); + + ASSERT_EFI_ERROR (Status); + if (EFI_ERROR (Status)) { + DEBUG ((DEBUG_ERROR, "EsrtFmpDxe: Failed to register for ready to boot\n")); + } + + return Status; +} diff --git a/MdeModulePkg/Universal/EsrtFmpDxe/EsrtFmpDebugPrint.c b/MdeModulePkg/Universal/EsrtFmpDxe/EsrtFmpDebugPrint.c new file mode 100644 index 0000000000..b4e5135e05 --- /dev/null +++ b/MdeModulePkg/Universal/EsrtFmpDxe/EsrtFmpDebugPrint.c @@ -0,0 +1,161 @@ +/** @file + Publishes ESRT table from Firmware Management Protocol instances + + Copyright (c) 2016, Microsoft Corporation + Copyright (c) 2018, Intel Corporation. All rights reserved.<BR> + + All rights reserved. + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are met: + 1. Redistributions of source code must retain the above copyright notice, + this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, + INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, + BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE + OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +**/ + +#include <Uefi.h> +#include <Library/BaseLib.h> +#include <Library/BaseMemoryLib.h> +#include <Library/DebugLib.h> +#include <Protocol/FirmwareManagement.h> +#include <Guid/SystemResourceTable.h> + +/** + Function to print a single ESRT Entry (ESRE) to the debug console + + Print Format: + | 00000000-0000-0000-0000-000000000000 | SSSSSSSSSSSS | 0x00000000 | 0x00000000 | 0x00000000 | 0x00000000 | 0x00000000 | + + @param[in] Entry - Pointer to an ESRE entry + @retval EFI_SUCCESS + EFI_INVALID_PARAMETER +**/ +EFI_STATUS +EFIAPI +PrintOutEsrtEntry ( + IN EFI_SYSTEM_RESOURCE_ENTRY *Entry + ) +{ + if (Entry == NULL) { + DEBUG ((DEBUG_INFO, "| ERROR: Invalid resource entry pointer ")); + DEBUG ((DEBUG_INFO, " |\n")); + return EFI_INVALID_PARAMETER; + } + + // + // GUID FW Class (36 chars plus table formatting) + // + DEBUG ((DEBUG_INFO, "| %g |", &Entry->FwClass)); + + // + // Entry Type (12 chars plus table formatting) + // + switch (Entry->FwType) { + case (ESRT_FW_TYPE_SYSTEMFIRMWARE) : + DEBUG ((DEBUG_INFO, " System FW |")); + break; + case (ESRT_FW_TYPE_DEVICEFIRMWARE) : + DEBUG ((DEBUG_INFO, " Device FW |")); + break; + case (ESRT_FW_TYPE_UEFIDRIVER) : + DEBUG ((DEBUG_INFO, " Uefi Driver |")); + break; + case (ESRT_FW_TYPE_UNKNOWN) : + DEBUG ((DEBUG_INFO, " Unknown Type |")); + break; + default: + DEBUG ((DEBUG_INFO, " ? 0x%8X |", Entry->FwType)); + break; + } + + // + // FW Version (10 char UINT32 string plus table formatting) + // Lowest Supported Version (10 char UINT32 string plus table formatting) + // Capsule Flags (10 char UINT32 string plus table formatting) + // Last Attempt Version (10 char UINT32 string plus table formatting) + // Last Attempt Status (10 char UINT32 string plus table formatting) + // + DEBUG ((DEBUG_INFO, + " 0x%8X | 0x%8X | 0x%8X | 0x%8X | 0x%8X |\n", + Entry->FwVersion, + Entry->LowestSupportedFwVersion, + Entry->CapsuleFlags, + Entry->LastAttemptVersion, + Entry->LastAttemptStatus + )); + + return EFI_SUCCESS; +} + +/** + Function to print the ESRT table to the debug console + + @param[in] Table - Pointer to the ESRT table +**/ +VOID +EFIAPI +PrintTable ( + IN EFI_SYSTEM_RESOURCE_TABLE *Table + ) +{ + EFI_SYSTEM_RESOURCE_ENTRY *Entry; + UINTN Index; + + Entry = (EFI_SYSTEM_RESOURCE_ENTRY *)(((UINT8 *)Table) + sizeof (EFI_SYSTEM_RESOURCE_TABLE)); + + // + // Print ESRT table information + // + DEBUG ((DEBUG_INFO, "ESRT Table Information:\n")); + if (Table == NULL) { + DEBUG ((DEBUG_INFO, "ERROR: Invalid table pointer\n")); + return; + } + + DEBUG ((DEBUG_INFO, "+--------------------------------------------------------+\n")); + DEBUG ((DEBUG_INFO, "| Firmware Resource Count : 0x%08x |\n", Table->FwResourceCount)); + DEBUG ((DEBUG_INFO, "| Firmware Resource Count Max : 0x%08x |\n", Table->FwResourceCountMax)); + DEBUG ((DEBUG_INFO, "| Firmware Resource Entry Version : 0x%016x |\n", Table->FwResourceVersion)); + DEBUG ((DEBUG_INFO, "+--------------------------------------------------------+\n")); + + // + // Print table entry information + // + DEBUG ((DEBUG_INFO, "ESRT Table Entries:\n")); + if (Table->FwResourceVersion != EFI_SYSTEM_RESOURCE_TABLE_FIRMWARE_RESOURCE_VERSION) { + DEBUG ((DEBUG_INFO, "ERROR: Unsupported Resource Entry Version\n")); + return; + } + + DEBUG ((DEBUG_INFO, "+--------------------------------------+--------------+------------")); + DEBUG ((DEBUG_INFO, "+------------+------------+------------+------------+\n")); + DEBUG ((DEBUG_INFO, "| | | ")); + DEBUG ((DEBUG_INFO, "| Lowest | | Last | Last |\n")); + DEBUG ((DEBUG_INFO, "| | Firmware | ")); + DEBUG ((DEBUG_INFO, "| Supported | Capsule | Attempted | Attempted |\n")); + DEBUG ((DEBUG_INFO, "| CLASS GUID | Type | Version ")); + DEBUG ((DEBUG_INFO, "| Version | Flags | Version | Status |\n")); + DEBUG ((DEBUG_INFO, "+--------------------------------------+--------------+------------")); + DEBUG ((DEBUG_INFO, "+------------+------------+------------+------------+\n")); + + for (Index = 0; Index < Table->FwResourceCount; Index++) { + PrintOutEsrtEntry (&(Entry[Index])); + } + + DEBUG ((DEBUG_INFO, "+--------------------------------------+--------------+------------")); + DEBUG ((DEBUG_INFO, "+------------+------------+------------+------------+\n")); +} + diff --git a/MdeModulePkg/Universal/EsrtFmpDxe/EsrtFmpDxe.inf b/MdeModulePkg/Universal/EsrtFmpDxe/EsrtFmpDxe.inf new file mode 100644 index 0000000000..6da5ce5b04 --- /dev/null +++ b/MdeModulePkg/Universal/EsrtFmpDxe/EsrtFmpDxe.inf @@ -0,0 +1,74 @@ +## @file +# Publishes ESRT table from Firmware Management Protocol instances +# +# Copyright (c) 2016, Microsoft Corporation +# Copyright (c) 2018, Intel Corporation. All rights reserved.<BR> +# +# All rights reserved. +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions are met: +# 1. Redistributions of source code must retain the above copyright notice, +# this list of conditions and the following disclaimer. +# 2. Redistributions in binary form must reproduce the above copyright notice, +# this list of conditions and the following disclaimer in the documentation +# and/or other materials provided with the distribution. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND +# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +# WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. +# IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, +# INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, +# BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +# LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE +# OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF +# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +## + +[Defines] + INF_VERSION = 0x00010005 + BASE_NAME = EsrtFmpDxe + MODULE_UNI_FILE = EsrtFmpDxe.uni + FILE_GUID = FF626DA9-17EE-4949-A8B8-B10FA0044E9F + MODULE_TYPE = DXE_DRIVER + VERSION_STRING = 1.0 + ENTRY_POINT = EsrtFmpEntryPoint + +# +# The following information is for reference only and not required by the build tools. +# +# VALID_ARCHITECTURES = IA32 X64 +# + +[Sources] + EsrtFmp.c + EsrtFmpDebugPrint.c + +[Packages] + MdePkg/MdePkg.dec + MdeModulePkg/MdeModulePkg.dec + +[LibraryClasses] + UefiDriverEntryPoint + BaseLib + BaseMemoryLib + MemoryAllocationLib + UefiLib + UefiBootServicesTableLib + DebugLib + PcdLib + +[Protocols] + gEfiFirmwareManagementProtocolGuid ## CONSUMES + +[Pcd] + gEfiMdeModulePkgTokenSpaceGuid.PcdSystemFmpCapsuleImageTypeIdGuid ## CONSUMES + +[Guids] + gEfiSystemResourceTableGuid ## PRODUCES + +[Depex] + TRUE + +[UserExtensions.TianoCore."ExtraFiles"] + EsrtFmpDxeExtra.uni diff --git a/MdeModulePkg/Universal/EsrtFmpDxe/EsrtFmpDxe.uni b/MdeModulePkg/Universal/EsrtFmpDxe/EsrtFmpDxe.uni new file mode 100644 index 0000000000..fdad5b5bd9 --- /dev/null +++ b/MdeModulePkg/Universal/EsrtFmpDxe/EsrtFmpDxe.uni @@ -0,0 +1,19 @@ +// /** @file +// Publishes ESRT table from Firmware Management Protocol instances +// +// Copyright (c) 2018, Intel Corporation. All rights reserved.<BR> +// +// This program and the accompanying materials +// are licensed and made available under the terms and conditions of the BSD License +// which accompanies this distribution. The full text of the license may be found at +// http://opensource.org/licenses/bsd-license.php +// +// THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, +// WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. +// +// **/ + +#string STR_MODULE_ABSTRACT #language en-US "Publishes ESRT table from Firmware Management Protocol instances" + +#string STR_MODULE_DESCRIPTION #language en-US "This driver publishes the ESRT table from Firmware Management Protocol instances.<BR><BR>\n" + "The ESRT table is published when the Ready To Boot event is signaled.<BR>" diff --git a/MdeModulePkg/Universal/EsrtFmpDxe/EsrtFmpDxeExtra.uni b/MdeModulePkg/Universal/EsrtFmpDxe/EsrtFmpDxeExtra.uni new file mode 100644 index 0000000000..2c6f6dab9c --- /dev/null +++ b/MdeModulePkg/Universal/EsrtFmpDxe/EsrtFmpDxeExtra.uni @@ -0,0 +1,18 @@ +// /** @file +// EsrtFmpDxe Localized Strings and Content +// +// Copyright (c) 2018, Intel Corporation. All rights reserved.<BR> +// +// This program and the accompanying materials +// are licensed and made available under the terms and conditions of the BSD License +// which accompanies this distribution. The full text of the license may be found at +// http://opensource.org/licenses/bsd-license.php +// +// THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, +// WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. +// +// **/ + +#string STR_PROPERTIES_MODULE_NAME +#language en-US +"ESRT FMP DXE Driver" -- 2.14.2.windows.3 ^ permalink raw reply related [flat|nested] 7+ messages in thread
* Re: [Patch V2 1/3] MdeModulePkg/EsrtFmpDxe: Add EsrtFmpDxe module 2018-02-07 22:37 ` [Patch V2 1/3] " Kinney, Michael D @ 2018-02-08 5:34 ` Zeng, Star 0 siblings, 0 replies; 7+ messages in thread From: Zeng, Star @ 2018-02-08 5:34 UTC (permalink / raw) To: Kinney, Michael D, edk2-devel@lists.01.org Cc: Sean Brogan, Yao, Jiewen, Dong, Eric, Ni, Ruiyu, Zeng, Star Reviewed-by: Star Zeng <star.zeng@intel.com> Thanks, Star -----Original Message----- From: Kinney, Michael D Sent: Thursday, February 8, 2018 6:38 AM To: edk2-devel@lists.01.org Cc: Kinney, Michael D <michael.d.kinney@intel.com>; Sean Brogan <sean.brogan@microsoft.com>; Yao, Jiewen <jiewen.yao@intel.com>; Zeng, Star <star.zeng@intel.com>; Dong, Eric <eric.dong@intel.com>; Ni, Ruiyu <ruiyu.ni@intel.com> Subject: [Patch V2 1/3] MdeModulePkg/EsrtFmpDxe: Add EsrtFmpDxe module From: Michael D Kinney <michael.d.kinney@intel.com> https://bugzilla.tianocore.org/show_bug.cgi?id=802 Based on content from the following branch/commits: https://github.com/Microsoft/MS_UEFI/tree/share/MsCapsuleSupport The EsrtFmpDxe module is a lightweight version of the EsrtDxe module that produces ESRT entries based only on FMP Protocol instances. Cc: Sean Brogan <sean.brogan@microsoft.com> Cc: Jiewen Yao <jiewen.yao@intel.com> Cc: Star Zeng <star.zeng@intel.com> Cc: Eric Dong <eric.dong@intel.com> Cc: Ruiyu Ni <ruiyu.ni@intel.com> Contributed-under: TianoCore Contribution Agreement 1.1 Signed-off-by: Michael D Kinney <michael.d.kinney@intel.com> --- MdeModulePkg/MdeModulePkg.dsc | 1 + MdeModulePkg/Universal/EsrtFmpDxe/EsrtFmp.c | 482 +++++++++++++++++++++ .../Universal/EsrtFmpDxe/EsrtFmpDebugPrint.c | 161 +++++++ MdeModulePkg/Universal/EsrtFmpDxe/EsrtFmpDxe.inf | 74 ++++ MdeModulePkg/Universal/EsrtFmpDxe/EsrtFmpDxe.uni | 19 + .../Universal/EsrtFmpDxe/EsrtFmpDxeExtra.uni | 18 + 6 files changed, 755 insertions(+) create mode 100644 MdeModulePkg/Universal/EsrtFmpDxe/EsrtFmp.c create mode 100644 MdeModulePkg/Universal/EsrtFmpDxe/EsrtFmpDebugPrint.c create mode 100644 MdeModulePkg/Universal/EsrtFmpDxe/EsrtFmpDxe.inf create mode 100644 MdeModulePkg/Universal/EsrtFmpDxe/EsrtFmpDxe.uni create mode 100644 MdeModulePkg/Universal/EsrtFmpDxe/EsrtFmpDxeExtra.uni diff --git a/MdeModulePkg/MdeModulePkg.dsc b/MdeModulePkg/MdeModulePkg.dsc index 1c0085aee6..50002f8e3f 100644 --- a/MdeModulePkg/MdeModulePkg.dsc +++ b/MdeModulePkg/MdeModulePkg.dsc @@ -412,6 +412,7 @@ MdeModulePkg/Universal/FvSimpleFileSystemDxe/FvSimpleFileSystemDxe.inf MdeModulePkg/Universal/EsrtDxe/EsrtDxe.inf + MdeModulePkg/Universal/EsrtFmpDxe/EsrtFmpDxe.inf MdeModulePkg/Universal/PropertiesTableAttributesDxe/PropertiesTableAttributesDxe.inf MdeModulePkg/Universal/FileExplorerDxe/FileExplorerDxe.inf { diff --git a/MdeModulePkg/Universal/EsrtFmpDxe/EsrtFmp.c b/MdeModulePkg/Universal/EsrtFmpDxe/EsrtFmp.c new file mode 100644 index 0000000000..b98430edbf --- /dev/null +++ b/MdeModulePkg/Universal/EsrtFmpDxe/EsrtFmp.c @@ -0,0 +1,482 @@ +/** @file + Publishes ESRT table from Firmware Management Protocol instances + + Copyright (c) 2016, Microsoft Corporation Copyright (c) 2018, Intel + Corporation. All rights reserved.<BR> + + All rights reserved. + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are met: + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR + ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR + BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE + OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +**/ + +#include <Uefi.h> +#include <Library/BaseLib.h> +#include <Library/BaseMemoryLib.h> +#include <Library/MemoryAllocationLib.h> #include +<Library/UefiBootServicesTableLib.h> +#include <Library/DebugLib.h> +#include <Library/PcdLib.h> +#include <Library/UefiLib.h> +#include <Protocol/FirmwareManagement.h> #include <Guid/EventGroup.h> +#include <Guid/SystemResourceTable.h> + +// +// Print ESRT to debug console +// +VOID +EFIAPI +PrintTable ( + IN EFI_SYSTEM_RESOURCE_TABLE *Table + ); + +// +// Number of ESRT entries to grow by each time we run out of room // +#define GROWTH_STEP 10 + +// +// Module globals. +// +EFI_EVENT mEsrtReadyToBootEvent; +EFI_SYSTEM_RESOURCE_TABLE *mTable = NULL; +BOOLEAN mEsrtInstalled = FALSE; +EFI_EVENT mFmpInstallEvent; +VOID *mFmpInstallEventRegistration = NULL; + +/** + Install EFI System Resource Table into the UEFI Configuration Table + + @return Status code. + +**/ +EFI_STATUS +InstallEfiSystemResourceTableInUefiConfigurationTable ( + VOID + ) +{ + EFI_STATUS Status; + + Status = EFI_SUCCESS; + if (!mEsrtInstalled) { + if (mTable == NULL) { + DEBUG ((DEBUG_ERROR, "EsrtFmpDxe: Can't install ESRT table because it is NULL. \n")); + Status = EFI_OUT_OF_RESOURCES; + } else if (mTable->FwResourceCount == 0) { + DEBUG ((DEBUG_ERROR, "EsrtFmpDxe: Can't install ESRT table because it has zero Entries. \n")); + Status = EFI_UNSUPPORTED; + } else { + // + // Install the pointer into config table + // + Status = gBS->InstallConfigurationTable (&gEfiSystemResourceTableGuid, mTable); + if (EFI_ERROR (Status)) { + DEBUG ((DEBUG_ERROR, "EsrtFmpDxe: Can't install ESRT table. Status: %r. \n", Status)); + } else { + DEBUG ((DEBUG_INFO, "EsrtFmpDxe: Installed ESRT table. \n")); + mEsrtInstalled = TRUE; + } + } + } + return Status; +} + +/** + Return if this FMP is a system FMP or a device FMP, based upon FmpImageInfo. + + @param[in] FmpImageInfo A pointer to EFI_FIRMWARE_IMAGE_DESCRIPTOR + + @return TRUE It is a system FMP. + @return FALSE It is a device FMP. +**/ +BOOLEAN +IsSystemFmp ( + IN EFI_FIRMWARE_IMAGE_DESCRIPTOR *FmpImageInfo + ) +{ + GUID *Guid; + UINTN Count; + UINTN Index; + + Guid = PcdGetPtr (PcdSystemFmpCapsuleImageTypeIdGuid); + Count = PcdGetSize (PcdSystemFmpCapsuleImageTypeIdGuid) / + sizeof(GUID); + + for (Index = 0; Index < Count; Index++, Guid++) { + if (CompareGuid (&FmpImageInfo->ImageTypeId, Guid)) { + return TRUE; + } + } + + return FALSE; +} + +/** + Function to create a single ESRT Entry and add it to the ESRT + given a FMP descriptor. If the guid is already in the ESRT it + will be ignored. The ESRT will grow if it does not have enough room. + + @return Status code. + +**/ +EFI_STATUS +EFIAPI +CreateEsrtEntry ( + IN EFI_FIRMWARE_IMAGE_DESCRIPTOR *FmpImageInfoBuf, + IN UINT32 FmpVersion + ) +{ + UINTN Index; + EFI_SYSTEM_RESOURCE_ENTRY *Entry; + UINTN NewSize; + EFI_SYSTEM_RESOURCE_TABLE *NewTable; + + Index = 0; + Entry = NULL; + + // + // Get our ESRT table. This should never be null at this point // + if (mTable == NULL) { + return EFI_DEVICE_ERROR; + } + + Entry = (EFI_SYSTEM_RESOURCE_ENTRY *)(mTable + 1); // // Make sure + Guid isn't already in the list // for (Index = 0; Index < + mTable->FwResourceCount; Index++) { + if (CompareGuid (&Entry->FwClass, &FmpImageInfoBuf->ImageTypeId)) { + DEBUG ((DEBUG_ERROR, "EsrtFmpDxe: ESRT Entry already exists for FMP Instance with GUID %g\n", &Entry->FwClass)); + return EFI_INVALID_PARAMETER; + } + Entry++; + } + + // + // Grow table if needed + // + if (mTable->FwResourceCount >= mTable->FwResourceCountMax) { + // + // Can't grow table after installed. + // Only because didn't add support for this. + // Would need to re-install ESRT in system table if wanted to support + // + if (mEsrtInstalled) { + DEBUG ((DEBUG_ERROR, "EsrtFmpDxe: Failed to install entry because ESRT table needed to grow after table already installed. \n")); + return EFI_OUT_OF_RESOURCES; + } + + NewSize = ((mTable->FwResourceCountMax + GROWTH_STEP) * sizeof (EFI_SYSTEM_RESOURCE_ENTRY)) + sizeof (EFI_SYSTEM_RESOURCE_TABLE); + NewTable = AllocateRuntimeZeroPool (NewSize); + if (NewTable == NULL) { + DEBUG ((DEBUG_ERROR, "EsrtFmpDxe: Failed to allocate memory larger table for ESRT. \n")); + return EFI_OUT_OF_RESOURCES; + } + // + // Copy the whole old table into new table buffer + // + CopyMem ( + NewTable, + mTable, + ((mTable->FwResourceCountMax) * sizeof (EFI_SYSTEM_RESOURCE_ENTRY)) + sizeof (EFI_SYSTEM_RESOURCE_TABLE) + ); + // + // Update max + // + NewTable->FwResourceCountMax = NewTable->FwResourceCountMax + GROWTH_STEP; + // + // Free old table + // + FreePool (mTable); + // + // Reassign pointer to new table. + // + mTable = NewTable; + } + + // + // ESRT table has enough room for the new entry so add new entry // + Entry = (EFI_SYSTEM_RESOURCE_ENTRY *)(((UINT8 *)mTable) + sizeof + (EFI_SYSTEM_RESOURCE_TABLE)); // // Move to the location of new + entry // Entry = Entry + mTable->FwResourceCount; // // Increment + resource count // mTable->FwResourceCount++; + + CopyGuid (&Entry->FwClass, &FmpImageInfoBuf->ImageTypeId); + + if (IsSystemFmp (FmpImageInfoBuf)) { + DEBUG ((DEBUG_INFO, "EsrtFmpDxe: Found an ESRT entry for a System Device.\n")); + Entry->FwType = (UINT32)(ESRT_FW_TYPE_SYSTEMFIRMWARE); + } else { + Entry->FwType = (UINT32)(ESRT_FW_TYPE_DEVICEFIRMWARE); + } + + Entry->FwVersion = FmpImageInfoBuf->Version; + Entry->LowestSupportedFwVersion = 0; Entry->CapsuleFlags = 0; + Entry->LastAttemptVersion = 0; Entry->LastAttemptStatus = 0; + + // + // VERSION 2 has Lowest Supported + // + if (FmpVersion >= 2) { + Entry->LowestSupportedFwVersion = + FmpImageInfoBuf->LowestSupportedImageVersion; + } + + // + // VERSION 3 supports last attempt values // if (FmpVersion >= 3) { + Entry->LastAttemptVersion = FmpImageInfoBuf->LastAttemptVersion; + Entry->LastAttemptStatus = FmpImageInfoBuf->LastAttemptStatus; + } + + return EFI_SUCCESS; +} + +/** + Notify function for every Firmware Management Protocol being installed. + Get the descriptors from FMP Instance and create ESRT entries (ESRE) + + @param[in] Event The Event that is being processed. + @param[in] Context The Event Context. + +**/ +VOID +EFIAPI +FmpInstallProtocolNotify ( + IN EFI_EVENT Event, + IN VOID *Context + ) +{ + EFI_STATUS Status; + EFI_HANDLE Handle; + UINTN BufferSize; + EFI_FIRMWARE_MANAGEMENT_PROTOCOL *Fmp; + UINTN DescriptorSize; + EFI_FIRMWARE_IMAGE_DESCRIPTOR *FmpImageInfoBuf; + EFI_FIRMWARE_IMAGE_DESCRIPTOR *FmpImageInfoBufOrg; + UINT8 FmpImageInfoCount; + UINT32 FmpImageInfoDescriptorVer; + UINTN ImageInfoSize; + UINT32 PackageVersion; + CHAR16 *PackageVersionName; + + Status = EFI_SUCCESS; + Handle = 0; + BufferSize = 0; + PackageVersionName = NULL; + FmpImageInfoBuf = NULL; + FmpImageInfoBufOrg = NULL; + Fmp = NULL; + + DEBUG ((DEBUG_INFO, "FMP Installed Notify\n")); while (TRUE) { + BufferSize = sizeof (EFI_HANDLE); + Status = gBS->LocateHandle (ByRegisterNotify, NULL, mFmpInstallEventRegistration, &BufferSize, &Handle); + if (EFI_ERROR (Status)) { + DEBUG ((DEBUG_WARN, "EsrtFmpDxe: Failed to Locate handle from notify value. Status: %r\n", Status)); + return; + } + + Status = gBS->HandleProtocol (Handle, &gEfiFirmwareManagementProtocolGuid, (VOID **)&Fmp); + if (EFI_ERROR (Status)) { + DEBUG ((DEBUG_ERROR, "EsrtFmpDxe: Failed to get FMP for a handle 0x%x\n", Handle)); + continue; + } + ImageInfoSize = 0; + + Status = Fmp->GetImageInfo ( + Fmp, // FMP Pointer + &ImageInfoSize, // Buffer Size (in this case 0) + NULL, // NULL so we can get size + &FmpImageInfoDescriptorVer, // DescriptorVersion + &FmpImageInfoCount, // DescriptorCount + &DescriptorSize, // DescriptorSize + &PackageVersion, // PackageVersion + &PackageVersionName // PackageVersionName + ); + + if (Status != EFI_BUFFER_TOO_SMALL) { + DEBUG ((DEBUG_ERROR, "EsrtFmpDxe: Unexpected Failure in GetImageInfo. Status = %r\n", Status)); + continue; + } + + FmpImageInfoBuf = NULL; + FmpImageInfoBuf = AllocateZeroPool (ImageInfoSize); + if (FmpImageInfoBuf == NULL) { + DEBUG ((DEBUG_ERROR, "EsrtFmpDxe: Failed to get memory for descriptors.\n")); + continue; + } + + FmpImageInfoBufOrg = FmpImageInfoBuf; + PackageVersionName = NULL; + Status = Fmp->GetImageInfo ( + Fmp, + &ImageInfoSize, // ImageInfoSize + FmpImageInfoBuf, // ImageInfo + &FmpImageInfoDescriptorVer, // DescriptorVersion + &FmpImageInfoCount, // DescriptorCount + &DescriptorSize, // DescriptorSize + &PackageVersion, // PackageVersion + &PackageVersionName // PackageVersionName + ); + if (EFI_ERROR (Status)) { + DEBUG ((DEBUG_ERROR, "EsrtFmpDxe: Failure in GetImageInfo. Status = %r\n", Status)); + goto CleanUp; + } + + // + // Check each descriptor and read from the one specified + // + while (FmpImageInfoCount > 0) { + // + // If the descriptor has the IN USE bit set, create ESRT entry otherwise ignore. + // + if ((FmpImageInfoBuf->AttributesSetting & FmpImageInfoBuf->AttributesSupported & IMAGE_ATTRIBUTE_IN_USE) == IMAGE_ATTRIBUTE_IN_USE) { + // + // Create ESRT entry + // + CreateEsrtEntry (FmpImageInfoBuf, FmpImageInfoDescriptorVer); + } + FmpImageInfoCount--; + // + // Increment the buffer pointer ahead by the size of the descriptor + // + FmpImageInfoBuf = (EFI_FIRMWARE_IMAGE_DESCRIPTOR *)(((UINT8 *)FmpImageInfoBuf) + DescriptorSize); + } + + if (PackageVersionName != NULL) { + FreePool (PackageVersionName); + PackageVersionName = NULL; + } + if (FmpImageInfoBufOrg != NULL) { + FreePool (FmpImageInfoBufOrg); + FmpImageInfoBufOrg = NULL; + } + } + +CleanUp: + if (FmpImageInfoBufOrg != NULL) { + FreePool (FmpImageInfoBufOrg); + } + return; +} + +/** + Notify function for event group EFI_EVENT_GROUP_READY_TO_BOOT. This +is used to + install the Efi System Resource Table. + + @param[in] Event The Event that is being processed. + @param[in] Context The Event Context. + +**/ +VOID +EFIAPI +EsrtReadyToBootEventNotify ( + IN EFI_EVENT Event, + IN VOID *Context + ) +{ + InstallEfiSystemResourceTableInUefiConfigurationTable (); + + // + // Print table on debug builds + // + DEBUG_CODE_BEGIN (); + PrintTable (mTable); + DEBUG_CODE_END (); +} + +/** + The module Entry Point of the Efi System Resource Table DXE driver. + + @param[in] ImageHandle The firmware allocated handle for the EFI image. + @param[in] SystemTable A pointer to the EFI System Table. + + @retval EFI_SUCCESS The entry point is executed successfully. + @retval Other Some error occurs when executing this entry point. + +**/ +EFI_STATUS +EFIAPI +EsrtFmpEntryPoint ( + IN EFI_HANDLE ImageHandle, + IN EFI_SYSTEM_TABLE *SystemTable + ) +{ + EFI_STATUS Status; + + // + // Allocate Memory for table + // + mTable = AllocateRuntimeZeroPool ( + (GROWTH_STEP * sizeof (EFI_SYSTEM_RESOURCE_ENTRY)) + sizeof (EFI_SYSTEM_RESOURCE_TABLE) + ); + ASSERT (mTable != NULL); + if (mTable == NULL) { + DEBUG ((DEBUG_ERROR, "EsrtFmpDxe: Failed to allocate memory for ESRT.\n")); + return EFI_OUT_OF_RESOURCES; + } + + mTable->FwResourceCount = 0; + mTable->FwResourceCountMax = GROWTH_STEP; mTable->FwResourceVersion + = EFI_SYSTEM_RESOURCE_TABLE_FIRMWARE_RESOURCE_VERSION; + + // + // Register notify function for all FMP installed // + mFmpInstallEvent = EfiCreateProtocolNotifyEvent ( + &gEfiFirmwareManagementProtocolGuid, + TPL_CALLBACK, + FmpInstallProtocolNotify, + NULL, + &mFmpInstallEventRegistration + ); + + ASSERT (mFmpInstallEvent != NULL); + + if (mFmpInstallEvent == NULL) { + DEBUG ((DEBUG_ERROR, "EsrtFmpDxe: Failed to Create Protocol Notify + Event for FMP.\n")); } + + // + // Register notify function to install ESRT on ReadyToBoot Event. + // + Status = EfiCreateEventReadyToBootEx ( + TPL_CALLBACK, + EsrtReadyToBootEventNotify, + NULL, + &mEsrtReadyToBootEvent + ); + + ASSERT_EFI_ERROR (Status); + if (EFI_ERROR (Status)) { + DEBUG ((DEBUG_ERROR, "EsrtFmpDxe: Failed to register for ready to + boot\n")); } + + return Status; +} diff --git a/MdeModulePkg/Universal/EsrtFmpDxe/EsrtFmpDebugPrint.c b/MdeModulePkg/Universal/EsrtFmpDxe/EsrtFmpDebugPrint.c new file mode 100644 index 0000000000..b4e5135e05 --- /dev/null +++ b/MdeModulePkg/Universal/EsrtFmpDxe/EsrtFmpDebugPrint.c @@ -0,0 +1,161 @@ +/** @file + Publishes ESRT table from Firmware Management Protocol instances + + Copyright (c) 2016, Microsoft Corporation Copyright (c) 2018, Intel + Corporation. All rights reserved.<BR> + + All rights reserved. + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are met: + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR + ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR + BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE + OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +**/ + +#include <Uefi.h> +#include <Library/BaseLib.h> +#include <Library/BaseMemoryLib.h> +#include <Library/DebugLib.h> +#include <Protocol/FirmwareManagement.h> #include +<Guid/SystemResourceTable.h> + +/** + Function to print a single ESRT Entry (ESRE) to the debug console + + Print Format: + | 00000000-0000-0000-0000-000000000000 | SSSSSSSSSSSS | 0x00000000 | + 0x00000000 | 0x00000000 | 0x00000000 | 0x00000000 | + + @param[in] Entry - Pointer to an ESRE entry + @retval EFI_SUCCESS + EFI_INVALID_PARAMETER **/ EFI_STATUS EFIAPI +PrintOutEsrtEntry ( + IN EFI_SYSTEM_RESOURCE_ENTRY *Entry + ) +{ + if (Entry == NULL) { + DEBUG ((DEBUG_INFO, "| ERROR: Invalid resource entry pointer ")); + DEBUG ((DEBUG_INFO, " |\n")); + return EFI_INVALID_PARAMETER; + } + + // + // GUID FW Class (36 chars plus table formatting) // DEBUG + ((DEBUG_INFO, "| %g |", &Entry->FwClass)); + + // + // Entry Type (12 chars plus table formatting) // switch + (Entry->FwType) { case (ESRT_FW_TYPE_SYSTEMFIRMWARE) : + DEBUG ((DEBUG_INFO, " System FW |")); + break; + case (ESRT_FW_TYPE_DEVICEFIRMWARE) : + DEBUG ((DEBUG_INFO, " Device FW |")); + break; + case (ESRT_FW_TYPE_UEFIDRIVER) : + DEBUG ((DEBUG_INFO, " Uefi Driver |")); + break; + case (ESRT_FW_TYPE_UNKNOWN) : + DEBUG ((DEBUG_INFO, " Unknown Type |")); + break; + default: + DEBUG ((DEBUG_INFO, " ? 0x%8X |", Entry->FwType)); + break; + } + + // + // FW Version (10 char UINT32 string plus table formatting) // + Lowest Supported Version (10 char UINT32 string plus table formatting) + // Capsule Flags (10 char UINT32 string plus table formatting) // + Last Attempt Version (10 char UINT32 string plus table formatting) // + Last Attempt Status (10 char UINT32 string plus table formatting) // + DEBUG ((DEBUG_INFO, + " 0x%8X | 0x%8X | 0x%8X | 0x%8X | 0x%8X |\n", + Entry->FwVersion, + Entry->LowestSupportedFwVersion, + Entry->CapsuleFlags, + Entry->LastAttemptVersion, + Entry->LastAttemptStatus + )); + + return EFI_SUCCESS; +} + +/** + Function to print the ESRT table to the debug console + + @param[in] Table - Pointer to the ESRT table **/ VOID EFIAPI +PrintTable ( + IN EFI_SYSTEM_RESOURCE_TABLE *Table + ) +{ + EFI_SYSTEM_RESOURCE_ENTRY *Entry; + UINTN Index; + + Entry = (EFI_SYSTEM_RESOURCE_ENTRY *)(((UINT8 *)Table) + sizeof + (EFI_SYSTEM_RESOURCE_TABLE)); + + // + // Print ESRT table information + // + DEBUG ((DEBUG_INFO, "ESRT Table Information:\n")); if (Table == + NULL) { + DEBUG ((DEBUG_INFO, "ERROR: Invalid table pointer\n")); + return; + } + + DEBUG ((DEBUG_INFO, "+--------------------------------------------------------+\n")); + DEBUG ((DEBUG_INFO, "| Firmware Resource Count : 0x%08x |\n", Table->FwResourceCount)); + DEBUG ((DEBUG_INFO, "| Firmware Resource Count Max : 0x%08x |\n", Table->FwResourceCountMax)); + DEBUG ((DEBUG_INFO, "| Firmware Resource Entry Version : 0x%016x |\n", Table->FwResourceVersion)); + DEBUG ((DEBUG_INFO, + "+--------------------------------------------------------+\n")); + + // + // Print table entry information + // + DEBUG ((DEBUG_INFO, "ESRT Table Entries:\n")); if + (Table->FwResourceVersion != EFI_SYSTEM_RESOURCE_TABLE_FIRMWARE_RESOURCE_VERSION) { + DEBUG ((DEBUG_INFO, "ERROR: Unsupported Resource Entry Version\n")); + return; + } + + DEBUG ((DEBUG_INFO, + "+--------------------------------------+--------------+------------") + ); DEBUG ((DEBUG_INFO, + "+------------+------------+------------+------------+\n")); + DEBUG ((DEBUG_INFO, "| | | ")); + DEBUG ((DEBUG_INFO, "| Lowest | | Last | Last |\n")); + DEBUG ((DEBUG_INFO, "| | Firmware | ")); + DEBUG ((DEBUG_INFO, "| Supported | Capsule | Attempted | Attempted |\n")); + DEBUG ((DEBUG_INFO, "| CLASS GUID | Type | Version ")); + DEBUG ((DEBUG_INFO, "| Version | Flags | Version | Status |\n")); + DEBUG ((DEBUG_INFO, + "+--------------------------------------+--------------+------------") + ); DEBUG ((DEBUG_INFO, + "+------------+------------+------------+------------+\n")); + + for (Index = 0; Index < Table->FwResourceCount; Index++) { + PrintOutEsrtEntry (&(Entry[Index])); } + + DEBUG ((DEBUG_INFO, +"+--------------------------------------+--------------+------------")) +; + DEBUG ((DEBUG_INFO, +"+------------+------------+------------+------------+\n")); +} + diff --git a/MdeModulePkg/Universal/EsrtFmpDxe/EsrtFmpDxe.inf b/MdeModulePkg/Universal/EsrtFmpDxe/EsrtFmpDxe.inf new file mode 100644 index 0000000000..6da5ce5b04 --- /dev/null +++ b/MdeModulePkg/Universal/EsrtFmpDxe/EsrtFmpDxe.inf @@ -0,0 +1,74 @@ +## @file +# Publishes ESRT table from Firmware Management Protocol instances # # +Copyright (c) 2016, Microsoft Corporation # Copyright (c) 2018, Intel +Corporation. All rights reserved.<BR> # # All rights reserved. +# Redistribution and use in source and binary forms, with or without # +modification, are permitted provided that the following conditions are met: +# 1. Redistributions of source code must retain the above copyright +notice, # this list of conditions and the following disclaimer. +# 2. Redistributions in binary form must reproduce the above copyright +notice, # this list of conditions and the following disclaimer in the +documentation # and/or other materials provided with the distribution. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND # ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED # WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. +# IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR +ANY DIRECT, # INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +CONSEQUENTIAL DAMAGES (INCLUDING, # BUT NOT LIMITED TO, PROCUREMENT OF +SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, # DATA, OR PROFITS; OR +BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF # LIABILITY, +WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE # +OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF # ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +## + +[Defines] + INF_VERSION = 0x00010005 + BASE_NAME = EsrtFmpDxe + MODULE_UNI_FILE = EsrtFmpDxe.uni + FILE_GUID = FF626DA9-17EE-4949-A8B8-B10FA0044E9F + MODULE_TYPE = DXE_DRIVER + VERSION_STRING = 1.0 + ENTRY_POINT = EsrtFmpEntryPoint + +# +# The following information is for reference only and not required by the build tools. +# +# VALID_ARCHITECTURES = IA32 X64 +# + +[Sources] + EsrtFmp.c + EsrtFmpDebugPrint.c + +[Packages] + MdePkg/MdePkg.dec + MdeModulePkg/MdeModulePkg.dec + +[LibraryClasses] + UefiDriverEntryPoint + BaseLib + BaseMemoryLib + MemoryAllocationLib + UefiLib + UefiBootServicesTableLib + DebugLib + PcdLib + +[Protocols] + gEfiFirmwareManagementProtocolGuid ## CONSUMES + +[Pcd] + gEfiMdeModulePkgTokenSpaceGuid.PcdSystemFmpCapsuleImageTypeIdGuid ## +CONSUMES + +[Guids] + gEfiSystemResourceTableGuid ## PRODUCES + +[Depex] + TRUE + +[UserExtensions.TianoCore."ExtraFiles"] + EsrtFmpDxeExtra.uni diff --git a/MdeModulePkg/Universal/EsrtFmpDxe/EsrtFmpDxe.uni b/MdeModulePkg/Universal/EsrtFmpDxe/EsrtFmpDxe.uni new file mode 100644 index 0000000000..fdad5b5bd9 --- /dev/null +++ b/MdeModulePkg/Universal/EsrtFmpDxe/EsrtFmpDxe.uni @@ -0,0 +1,19 @@ +// /** @file +// Publishes ESRT table from Firmware Management Protocol instances // +// Copyright (c) 2018, Intel Corporation. All rights reserved.<BR> // +// This program and the accompanying materials // are licensed and made +available under the terms and conditions of the BSD License // which +accompanies this distribution. The full text of the license may be +found at // http://opensource.org/licenses/bsd-license.php +// +// THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" +BASIS, // WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. +// +// **/ + +#string STR_MODULE_ABSTRACT #language en-US "Publishes ESRT table from Firmware Management Protocol instances" + +#string STR_MODULE_DESCRIPTION #language en-US "This driver publishes the ESRT table from Firmware Management Protocol instances.<BR><BR>\n" + "The ESRT table is published when the Ready To Boot event is signaled.<BR>" diff --git a/MdeModulePkg/Universal/EsrtFmpDxe/EsrtFmpDxeExtra.uni b/MdeModulePkg/Universal/EsrtFmpDxe/EsrtFmpDxeExtra.uni new file mode 100644 index 0000000000..2c6f6dab9c --- /dev/null +++ b/MdeModulePkg/Universal/EsrtFmpDxe/EsrtFmpDxeExtra.uni @@ -0,0 +1,18 @@ +// /** @file +// EsrtFmpDxe Localized Strings and Content // // Copyright (c) 2018, +Intel Corporation. All rights reserved.<BR> // // This program and the +accompanying materials // are licensed and made available under the +terms and conditions of the BSD License // which accompanies this +distribution. The full text of the license may be found at // +http://opensource.org/licenses/bsd-license.php +// +// THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" +BASIS, // WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. +// +// **/ + +#string STR_PROPERTIES_MODULE_NAME +#language en-US +"ESRT FMP DXE Driver" -- 2.14.2.windows.3 ^ permalink raw reply related [flat|nested] 7+ messages in thread
* [Patch V2 2/3] QuarkPlatformPkg: Switch from EsrtDxe to EsrtFmpDxe 2018-02-07 22:37 [Patch V2 0/3] MdeModulePkg/EsrtFmpDxe: Add EsrtFmpDxe module Kinney, Michael D 2018-02-07 22:37 ` [Patch V2 1/3] " Kinney, Michael D @ 2018-02-07 22:37 ` Kinney, Michael D 2018-02-07 22:37 ` [Patch V2 3/3] Vlv2TbltDevicePkg: " Kinney, Michael D ` (2 subsequent siblings) 4 siblings, 0 replies; 7+ messages in thread From: Kinney, Michael D @ 2018-02-07 22:37 UTC (permalink / raw) To: edk2-devel Cc: Michael D Kinney, Sean Brogan, Jiewen Yao, Star Zeng, Eric Dong, Ruiyu Ni From: Michael D Kinney <michael.d.kinney@intel.com> https://bugzilla.tianocore.org/show_bug.cgi?id=802 Based on content from the following branch/commits: https://github.com/Microsoft/MS_UEFI/tree/share/MsCapsuleSupport The EsrtFmpDxe module is a lightweight version of the EsrtDxe module that produces ESRT entries based only on FMP Protocol instances. Cc: Sean Brogan <sean.brogan@microsoft.com> Cc: Jiewen Yao <jiewen.yao@intel.com> Cc: Star Zeng <star.zeng@intel.com> Cc: Eric Dong <eric.dong@intel.com> Cc: Ruiyu Ni <ruiyu.ni@intel.com> Contributed-under: TianoCore Contribution Agreement 1.1 Signed-off-by: Michael D Kinney <michael.d.kinney@intel.com> --- QuarkPlatformPkg/Quark.dsc | 4 ++-- QuarkPlatformPkg/Quark.fdf | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/QuarkPlatformPkg/Quark.dsc b/QuarkPlatformPkg/Quark.dsc index 5624451e12..2176c8c9db 100644 --- a/QuarkPlatformPkg/Quark.dsc +++ b/QuarkPlatformPkg/Quark.dsc @@ -2,7 +2,7 @@ # Clanton Peak CRB platform with 32-bit DXE for 4MB/8MB flash devices. # # This package provides Clanton Peak CRB platform specific modules. -# Copyright (c) 2013 - 2017 Intel Corporation. +# Copyright (c) 2013 - 2018 Intel Corporation. # # This program and the accompanying materials # are licensed and made available under the terms and conditions of the BSD License @@ -921,7 +921,7 @@ } !if $(CAPSULE_ENABLE) - MdeModulePkg/Universal/EsrtDxe/EsrtDxe.inf + MdeModulePkg/Universal/EsrtFmpDxe/EsrtFmpDxe.inf SignedCapsulePkg/Universal/SystemFirmwareUpdate/SystemFirmwareReportDxe.inf { <LibraryClasses> diff --git a/QuarkPlatformPkg/Quark.fdf b/QuarkPlatformPkg/Quark.fdf index ab0f84b860..609f6e9b35 100644 --- a/QuarkPlatformPkg/Quark.fdf +++ b/QuarkPlatformPkg/Quark.fdf @@ -2,7 +2,7 @@ # FDF file of Clanton Peak CRB platform with 32-bit DXE # # This package provides QuarkNcSocId platform specific modules. -# Copyright (c) 2013 - 2017 Intel Corporation. +# Copyright (c) 2013 - 2018 Intel Corporation. # # This program and the accompanying materials # are licensed and made available under the terms and conditions of the BSD License @@ -598,7 +598,7 @@ INF RuleOverride = DRIVER_ACPITABLE SecurityPkg/Tcg/TcgSmm/TcgSmm.inf !endif !if $(CAPSULE_ENABLE) -INF MdeModulePkg/Universal/EsrtDxe/EsrtDxe.inf +INF MdeModulePkg/Universal/EsrtFmpDxe/EsrtFmpDxe.inf INF SignedCapsulePkg/Universal/SystemFirmwareUpdate/SystemFirmwareReportDxe.inf !endif -- 2.14.2.windows.3 ^ permalink raw reply related [flat|nested] 7+ messages in thread
* [Patch V2 3/3] Vlv2TbltDevicePkg: Switch from EsrtDxe to EsrtFmpDxe 2018-02-07 22:37 [Patch V2 0/3] MdeModulePkg/EsrtFmpDxe: Add EsrtFmpDxe module Kinney, Michael D 2018-02-07 22:37 ` [Patch V2 1/3] " Kinney, Michael D 2018-02-07 22:37 ` [Patch V2 2/3] QuarkPlatformPkg: Switch from EsrtDxe to EsrtFmpDxe Kinney, Michael D @ 2018-02-07 22:37 ` Kinney, Michael D 2018-02-11 0:17 ` [Patch V2 0/3] MdeModulePkg/EsrtFmpDxe: Add EsrtFmpDxe module Bret Barkelew 2018-02-11 0:19 ` Bret Barkelew 4 siblings, 0 replies; 7+ messages in thread From: Kinney, Michael D @ 2018-02-07 22:37 UTC (permalink / raw) To: edk2-devel Cc: Michael D Kinney, Sean Brogan, Jiewen Yao, Star Zeng, Eric Dong, Ruiyu Ni From: Michael D Kinney <michael.d.kinney@intel.com> https://bugzilla.tianocore.org/show_bug.cgi?id=802 Based on content from the following branch/commits: https://github.com/Microsoft/MS_UEFI/tree/share/MsCapsuleSupport The EsrtFmpDxe module is a lightweight version of the EsrtDxe module that produces ESRT entries based only on FMP Protocol instances. Cc: Sean Brogan <sean.brogan@microsoft.com> Cc: Jiewen Yao <jiewen.yao@intel.com> Cc: Star Zeng <star.zeng@intel.com> Cc: Eric Dong <eric.dong@intel.com> Cc: Ruiyu Ni <ruiyu.ni@intel.com> Contributed-under: TianoCore Contribution Agreement 1.1 Signed-off-by: Michael D Kinney <michael.d.kinney@intel.com> --- Vlv2TbltDevicePkg/PlatformPkg.fdf | 4 ++-- Vlv2TbltDevicePkg/PlatformPkgGcc.fdf | 4 ++-- Vlv2TbltDevicePkg/PlatformPkgGccX64.dsc | 4 ++-- Vlv2TbltDevicePkg/PlatformPkgIA32.dsc | 4 ++-- Vlv2TbltDevicePkg/PlatformPkgX64.dsc | 4 ++-- 5 files changed, 10 insertions(+), 10 deletions(-) diff --git a/Vlv2TbltDevicePkg/PlatformPkg.fdf b/Vlv2TbltDevicePkg/PlatformPkg.fdf index 5ed85f4dee..148553828c 100644 --- a/Vlv2TbltDevicePkg/PlatformPkg.fdf +++ b/Vlv2TbltDevicePkg/PlatformPkg.fdf @@ -1,7 +1,7 @@ #/** @file # FDF file of Platform. # -# Copyright (c) 2008 - 2017, Intel Corporation. All rights reserved.<BR> +# Copyright (c) 2008 - 2018, Intel Corporation. All rights reserved.<BR> # # This program and the accompanying materials are licensed and made available under # the terms and conditions of the BSD License that accompanies this distribution. @@ -773,7 +773,7 @@ FILE FREEFORM = 878AC2CC-5343-46F2-B563-51F89DAF56BA { !endif !if $(CAPSULE_ENABLE) || $(MICOCODE_CAPSULE_ENABLE) -INF MdeModulePkg/Universal/EsrtDxe/EsrtDxe.inf +INF MdeModulePkg/Universal/EsrtFmpDxe/EsrtFmpDxe.inf !endif !if $(CAPSULE_ENABLE) INF SignedCapsulePkg/Universal/SystemFirmwareUpdate/SystemFirmwareReportDxe.inf diff --git a/Vlv2TbltDevicePkg/PlatformPkgGcc.fdf b/Vlv2TbltDevicePkg/PlatformPkgGcc.fdf index a02a4f6286..d208871ae6 100644 --- a/Vlv2TbltDevicePkg/PlatformPkgGcc.fdf +++ b/Vlv2TbltDevicePkg/PlatformPkgGcc.fdf @@ -1,7 +1,7 @@ #/** @file # FDF file of Platform. # -# Copyright (c) 2008 - 2017, Intel Corporation. All rights reserved.<BR> +# Copyright (c) 2008 - 2018, Intel Corporation. All rights reserved.<BR> # # This program and the accompanying materials are licensed and made available under # the terms and conditions of the BSD License that accompanies this distribution. @@ -730,7 +730,7 @@ FILE FREEFORM = 878AC2CC-5343-46F2-B563-51F89DAF56BA { !endif !if $(CAPSULE_ENABLE) || $(MICOCODE_CAPSULE_ENABLE) -INF MdeModulePkg/Universal/EsrtDxe/EsrtDxe.inf +INF MdeModulePkg/Universal/EsrtFmpDxe/EsrtFmpDxe.inf !endif !if $(CAPSULE_ENABLE) INF SignedCapsulePkg/Universal/SystemFirmwareUpdate/SystemFirmwareReportDxe.inf diff --git a/Vlv2TbltDevicePkg/PlatformPkgGccX64.dsc b/Vlv2TbltDevicePkg/PlatformPkgGccX64.dsc index f98263d8a5..7a431130a3 100644 --- a/Vlv2TbltDevicePkg/PlatformPkgGccX64.dsc +++ b/Vlv2TbltDevicePkg/PlatformPkgGccX64.dsc @@ -1,7 +1,7 @@ #/** @file # Platform description. # -# Copyright (c) 2012 - 2017, Intel Corporation. All rights reserved.<BR> +# Copyright (c) 2012 - 2018, Intel Corporation. All rights reserved.<BR> # # This program and the accompanying materials are licensed and made available under # the terms and conditions of the BSD License that accompanies this distribution. @@ -1567,7 +1567,7 @@ $(PLATFORM_BINARY_PACKAGE)/$(DXE_ARCHITECTURE)$(TARGET)/IA32/fTPMInitPeim.inf Vlv2TbltDevicePkg/Application/FirmwareUpdate/FirmwareUpdate.inf !if $(CAPSULE_ENABLE) || $(MICOCODE_CAPSULE_ENABLE) - MdeModulePkg/Universal/EsrtDxe/EsrtDxe.inf + MdeModulePkg/Universal/EsrtFmpDxe/EsrtFmpDxe.inf MdeModulePkg/Application/CapsuleApp/CapsuleApp.inf !endif diff --git a/Vlv2TbltDevicePkg/PlatformPkgIA32.dsc b/Vlv2TbltDevicePkg/PlatformPkgIA32.dsc index c755df2fe2..d27fc49df7 100644 --- a/Vlv2TbltDevicePkg/PlatformPkgIA32.dsc +++ b/Vlv2TbltDevicePkg/PlatformPkgIA32.dsc @@ -1,7 +1,7 @@ #/** @file # Platform description. # -# Copyright (c) 2012 - 2017, Intel Corporation. All rights reserved.<BR> +# Copyright (c) 2012 - 2018, Intel Corporation. All rights reserved.<BR> # # This program and the accompanying materials are licensed and made available under # the terms and conditions of the BSD License that accompanies this distribution. @@ -1555,7 +1555,7 @@ $(PLATFORM_BINARY_PACKAGE)/$(DXE_ARCHITECTURE)$(TARGET)/IA32/fTPMInitPeim.inf Vlv2TbltDevicePkg/Application/FirmwareUpdate/FirmwareUpdate.inf !if $(CAPSULE_ENABLE) || $(MICOCODE_CAPSULE_ENABLE) - MdeModulePkg/Universal/EsrtDxe/EsrtDxe.inf + MdeModulePkg/Universal/EsrtFmpDxe/EsrtFmpDxe.inf MdeModulePkg/Application/CapsuleApp/CapsuleApp.inf !endif diff --git a/Vlv2TbltDevicePkg/PlatformPkgX64.dsc b/Vlv2TbltDevicePkg/PlatformPkgX64.dsc index dda8216e6a..ca68928b23 100644 --- a/Vlv2TbltDevicePkg/PlatformPkgX64.dsc +++ b/Vlv2TbltDevicePkg/PlatformPkgX64.dsc @@ -1,7 +1,7 @@ #/** @file # Platform description. # -# Copyright (c) 2012 - 2017, Intel Corporation. All rights reserved.<BR> +# Copyright (c) 2012 - 2018, Intel Corporation. All rights reserved.<BR> # # This program and the accompanying materials are licensed and made available under # the terms and conditions of the BSD License that accompanies this distribution. @@ -1567,7 +1567,7 @@ $(PLATFORM_BINARY_PACKAGE)/$(DXE_ARCHITECTURE)$(TARGET)/IA32/fTPMInitPeim.inf Vlv2TbltDevicePkg/Application/FirmwareUpdate/FirmwareUpdate.inf !if $(CAPSULE_ENABLE) || $(MICOCODE_CAPSULE_ENABLE) - MdeModulePkg/Universal/EsrtDxe/EsrtDxe.inf + MdeModulePkg/Universal/EsrtFmpDxe/EsrtFmpDxe.inf MdeModulePkg/Application/CapsuleApp/CapsuleApp.inf !endif -- 2.14.2.windows.3 ^ permalink raw reply related [flat|nested] 7+ messages in thread
* Re: [Patch V2 0/3] MdeModulePkg/EsrtFmpDxe: Add EsrtFmpDxe module 2018-02-07 22:37 [Patch V2 0/3] MdeModulePkg/EsrtFmpDxe: Add EsrtFmpDxe module Kinney, Michael D ` (2 preceding siblings ...) 2018-02-07 22:37 ` [Patch V2 3/3] Vlv2TbltDevicePkg: " Kinney, Michael D @ 2018-02-11 0:17 ` Bret Barkelew 2018-02-11 0:19 ` Bret Barkelew 4 siblings, 0 replies; 7+ messages in thread From: Bret Barkelew @ 2018-02-11 0:17 UTC (permalink / raw) To: Kinney, Michael D, edk2-devel@lists.01.org Cc: Ruiyu Ni, Eric Dong, Jiewen Yao, Michael D Kinney, Star Zeng Approved. Reviewd-By: Bret Barkelew Bret.Barkelew@microsoft.com - Bret From: Kinney, Michael D<mailto:michael.d.kinney@intel.com> Sent: Wednesday, February 7, 2018 2:37 PM To: edk2-devel@lists.01.org<mailto:edk2-devel@lists.01.org> Cc: Ruiyu Ni<mailto:ruiyu.ni@intel.com>; Eric Dong<mailto:eric.dong@intel.com>; Jiewen Yao<mailto:jiewen.yao@intel.com>; Michael D Kinney<mailto:michael.d.kinney@intel.com>; Star Zeng<mailto:star.zeng@intel.com> Subject: [edk2] [Patch V2 0/3] MdeModulePkg/EsrtFmpDxe: Add EsrtFmpDxe module V2: * Add .uni files with module name, abstract, description * Use EfiCreateEventReadyToBootEx() instead of gBS->CreateEventEx() * Change module type from UEFI_DRIVER to DXE_DRIVER with depex TRUE https://na01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fbugzilla.tianocore.org%2Fshow_bug.cgi%3Fid%3D802&data=04%7C01%7CBret.Barkelew%40microsoft.com%7C9e5206ce94194414d99a08d56e7b6983%7Cee3303d7fb734b0c8589bcd847f1c277%7C1%7C1%7C636536398699159661%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwifQ%3D%3D%7C-1&sdata=8FMEWUCKeIbpbSEsvDTyociFncaT7%2FZNSEAWZNEegKo%3D&reserved=0 Branch for review: https://na01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com%2Fmdkinney%2Fedk2%2Ftree%2FBug_802_EsrtFmpDxe_V2&data=04%7C01%7CBret.Barkelew%40microsoft.com%7C9e5206ce94194414d99a08d56e7b6983%7Cee3303d7fb734b0c8589bcd847f1c277%7C1%7C1%7C636536398699159661%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwifQ%3D%3D%7C-1&sdata=7UgCrt4anNXC2ZovAOYohYUqoegULqU%2Fl%2BJzR8nTDAU%3D&reserved=0 Based on content from the following branch/commits: https://na01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com%2FMicrosoft%2FMS_UEFI%2Ftree%2Fshare%2FMsCapsuleSupport&data=04%7C01%7CBret.Barkelew%40microsoft.com%7C9e5206ce94194414d99a08d56e7b6983%7Cee3303d7fb734b0c8589bcd847f1c277%7C1%7C1%7C636536398699159661%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwifQ%3D%3D%7C-1&sdata=PeG8g7IFQRV23hD85awLq%2BxiCxYB2vGuDHnDey6x4%2FQ%3D&reserved=0 The EsrtFmpDxe module is a lightweight version of the EsrtDxe module that produces ESRT entries based only on FMP Protocol instances. Update Quark and Vlv2 platforms to use EsrtFmpDxe. Cc: Sean Brogan <sean.brogan@microsoft.com> Cc: Jiewen Yao <jiewen.yao@intel.com> Cc: Star Zeng <star.zeng@intel.com> Cc: Eric Dong <eric.dong@intel.com> Cc: Ruiyu Ni <ruiyu.ni@intel.com> Contributed-under: TianoCore Contribution Agreement 1.1 Signed-off-by: Michael D Kinney <michael.d.kinney@intel.com> Michael D Kinney (3): MdeModulePkg/EsrtFmpDxe: Add EsrtFmpDxe module QuarkPlatformPkg: Switch from EsrtDxe to EsrtFmpDxe Vlv2TbltDevicePkg: Switch from EsrtDxe to EsrtFmpDxe MdeModulePkg/MdeModulePkg.dsc | 1 + MdeModulePkg/Universal/EsrtFmpDxe/EsrtFmp.c | 482 +++++++++++++++++++++ .../Universal/EsrtFmpDxe/EsrtFmpDebugPrint.c | 161 +++++++ MdeModulePkg/Universal/EsrtFmpDxe/EsrtFmpDxe.inf | 74 ++++ MdeModulePkg/Universal/EsrtFmpDxe/EsrtFmpDxe.uni | 19 + .../Universal/EsrtFmpDxe/EsrtFmpDxeExtra.uni | 18 + QuarkPlatformPkg/Quark.dsc | 4 +- QuarkPlatformPkg/Quark.fdf | 4 +- Vlv2TbltDevicePkg/PlatformPkg.fdf | 4 +- Vlv2TbltDevicePkg/PlatformPkgGcc.fdf | 4 +- Vlv2TbltDevicePkg/PlatformPkgGccX64.dsc | 4 +- Vlv2TbltDevicePkg/PlatformPkgIA32.dsc | 4 +- Vlv2TbltDevicePkg/PlatformPkgX64.dsc | 4 +- 13 files changed, 769 insertions(+), 14 deletions(-) create mode 100644 MdeModulePkg/Universal/EsrtFmpDxe/EsrtFmp.c create mode 100644 MdeModulePkg/Universal/EsrtFmpDxe/EsrtFmpDebugPrint.c create mode 100644 MdeModulePkg/Universal/EsrtFmpDxe/EsrtFmpDxe.inf create mode 100644 MdeModulePkg/Universal/EsrtFmpDxe/EsrtFmpDxe.uni create mode 100644 MdeModulePkg/Universal/EsrtFmpDxe/EsrtFmpDxeExtra.uni -- 2.14.2.windows.3 _______________________________________________ edk2-devel mailing list edk2-devel@lists.01.org https://na01.safelinks.protection.outlook.com/?url=https%3A%2F%2Flists.01.org%2Fmailman%2Flistinfo%2Fedk2-devel&data=04%7C01%7CBret.Barkelew%40microsoft.com%7C9e5206ce94194414d99a08d56e7b6983%7Cee3303d7fb734b0c8589bcd847f1c277%7C1%7C1%7C636536398699159661%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwifQ%3D%3D%7C-1&sdata=s78ABbPoAfaisnyGBoPciGJUl6zyXu0agNx1OMOTa9s%3D&reserved=0 ^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [Patch V2 0/3] MdeModulePkg/EsrtFmpDxe: Add EsrtFmpDxe module 2018-02-07 22:37 [Patch V2 0/3] MdeModulePkg/EsrtFmpDxe: Add EsrtFmpDxe module Kinney, Michael D ` (3 preceding siblings ...) 2018-02-11 0:17 ` [Patch V2 0/3] MdeModulePkg/EsrtFmpDxe: Add EsrtFmpDxe module Bret Barkelew @ 2018-02-11 0:19 ` Bret Barkelew 4 siblings, 0 replies; 7+ messages in thread From: Bret Barkelew @ 2018-02-11 0:19 UTC (permalink / raw) To: Kinney, Michael D, edk2-devel@lists.01.org Cc: Ruiyu Ni, Eric Dong, Jiewen Yao, Michael D Kinney, Star Zeng Approved. Reviewed-By: Bret Barkelew Bret.Barkelew@microsoft.com - Bret From: Kinney, Michael D<mailto:michael.d.kinney@intel.com> Sent: Wednesday, February 7, 2018 2:37 PM To: edk2-devel@lists.01.org<mailto:edk2-devel@lists.01.org> Cc: Ruiyu Ni<mailto:ruiyu.ni@intel.com>; Eric Dong<mailto:eric.dong@intel.com>; Jiewen Yao<mailto:jiewen.yao@intel.com>; Michael D Kinney<mailto:michael.d.kinney@intel.com>; Star Zeng<mailto:star.zeng@intel.com> Subject: [edk2] [Patch V2 0/3] MdeModulePkg/EsrtFmpDxe: Add EsrtFmpDxe module V2: * Add .uni files with module name, abstract, description * Use EfiCreateEventReadyToBootEx() instead of gBS->CreateEventEx() * Change module type from UEFI_DRIVER to DXE_DRIVER with depex TRUE https://na01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fbugzilla.tianocore.org%2Fshow_bug.cgi%3Fid%3D802&data=04%7C01%7CBret.Barkelew%40microsoft.com%7C9e5206ce94194414d99a08d56e7b6983%7Cee3303d7fb734b0c8589bcd847f1c277%7C1%7C1%7C636536398699159661%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwifQ%3D%3D%7C-1&sdata=8FMEWUCKeIbpbSEsvDTyociFncaT7%2FZNSEAWZNEegKo%3D&reserved=0 Branch for review: https://na01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com%2Fmdkinney%2Fedk2%2Ftree%2FBug_802_EsrtFmpDxe_V2&data=04%7C01%7CBret.Barkelew%40microsoft.com%7C9e5206ce94194414d99a08d56e7b6983%7Cee3303d7fb734b0c8589bcd847f1c277%7C1%7C1%7C636536398699159661%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwifQ%3D%3D%7C-1&sdata=7UgCrt4anNXC2ZovAOYohYUqoegULqU%2Fl%2BJzR8nTDAU%3D&reserved=0 Based on content from the following branch/commits: https://na01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com%2FMicrosoft%2FMS_UEFI%2Ftree%2Fshare%2FMsCapsuleSupport&data=04%7C01%7CBret.Barkelew%40microsoft.com%7C9e5206ce94194414d99a08d56e7b6983%7Cee3303d7fb734b0c8589bcd847f1c277%7C1%7C1%7C636536398699159661%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwifQ%3D%3D%7C-1&sdata=PeG8g7IFQRV23hD85awLq%2BxiCxYB2vGuDHnDey6x4%2FQ%3D&reserved=0 The EsrtFmpDxe module is a lightweight version of the EsrtDxe module that produces ESRT entries based only on FMP Protocol instances. Update Quark and Vlv2 platforms to use EsrtFmpDxe. Cc: Sean Brogan <sean.brogan@microsoft.com> Cc: Jiewen Yao <jiewen.yao@intel.com> Cc: Star Zeng <star.zeng@intel.com> Cc: Eric Dong <eric.dong@intel.com> Cc: Ruiyu Ni <ruiyu.ni@intel.com> Contributed-under: TianoCore Contribution Agreement 1.1 Signed-off-by: Michael D Kinney <michael.d.kinney@intel.com> Michael D Kinney (3): MdeModulePkg/EsrtFmpDxe: Add EsrtFmpDxe module QuarkPlatformPkg: Switch from EsrtDxe to EsrtFmpDxe Vlv2TbltDevicePkg: Switch from EsrtDxe to EsrtFmpDxe MdeModulePkg/MdeModulePkg.dsc | 1 + MdeModulePkg/Universal/EsrtFmpDxe/EsrtFmp.c | 482 +++++++++++++++++++++ .../Universal/EsrtFmpDxe/EsrtFmpDebugPrint.c | 161 +++++++ MdeModulePkg/Universal/EsrtFmpDxe/EsrtFmpDxe.inf | 74 ++++ MdeModulePkg/Universal/EsrtFmpDxe/EsrtFmpDxe.uni | 19 + .../Universal/EsrtFmpDxe/EsrtFmpDxeExtra.uni | 18 + QuarkPlatformPkg/Quark.dsc | 4 +- QuarkPlatformPkg/Quark.fdf | 4 +- Vlv2TbltDevicePkg/PlatformPkg.fdf | 4 +- Vlv2TbltDevicePkg/PlatformPkgGcc.fdf | 4 +- Vlv2TbltDevicePkg/PlatformPkgGccX64.dsc | 4 +- Vlv2TbltDevicePkg/PlatformPkgIA32.dsc | 4 +- Vlv2TbltDevicePkg/PlatformPkgX64.dsc | 4 +- 13 files changed, 769 insertions(+), 14 deletions(-) create mode 100644 MdeModulePkg/Universal/EsrtFmpDxe/EsrtFmp.c create mode 100644 MdeModulePkg/Universal/EsrtFmpDxe/EsrtFmpDebugPrint.c create mode 100644 MdeModulePkg/Universal/EsrtFmpDxe/EsrtFmpDxe.inf create mode 100644 MdeModulePkg/Universal/EsrtFmpDxe/EsrtFmpDxe.uni create mode 100644 MdeModulePkg/Universal/EsrtFmpDxe/EsrtFmpDxeExtra.uni -- 2.14.2.windows.3 _______________________________________________ edk2-devel mailing list edk2-devel@lists.01.org https://na01.safelinks.protection.outlook.com/?url=https%3A%2F%2Flists.01.org%2Fmailman%2Flistinfo%2Fedk2-devel&data=04%7C01%7CBret.Barkelew%40microsoft.com%7C9e5206ce94194414d99a08d56e7b6983%7Cee3303d7fb734b0c8589bcd847f1c277%7C1%7C1%7C636536398699159661%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwifQ%3D%3D%7C-1&sdata=s78ABbPoAfaisnyGBoPciGJUl6zyXu0agNx1OMOTa9s%3D&reserved=0 ^ permalink raw reply [flat|nested] 7+ messages in thread
end of thread, other threads:[~2018-02-11 0:14 UTC | newest] Thread overview: 7+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2018-02-07 22:37 [Patch V2 0/3] MdeModulePkg/EsrtFmpDxe: Add EsrtFmpDxe module Kinney, Michael D 2018-02-07 22:37 ` [Patch V2 1/3] " Kinney, Michael D 2018-02-08 5:34 ` Zeng, Star 2018-02-07 22:37 ` [Patch V2 2/3] QuarkPlatformPkg: Switch from EsrtDxe to EsrtFmpDxe Kinney, Michael D 2018-02-07 22:37 ` [Patch V2 3/3] Vlv2TbltDevicePkg: " Kinney, Michael D 2018-02-11 0:17 ` [Patch V2 0/3] MdeModulePkg/EsrtFmpDxe: Add EsrtFmpDxe module Bret Barkelew 2018-02-11 0:19 ` Bret Barkelew
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox