From: "Michael Kubacki" <mikuback@linux.microsoft.com>
To: devel@edk2.groups.io
Cc: Rangasai V Chaganty <rangasai.v.chaganty@intel.com>,
Ray Ni <ray.ni@intel.com>,
Nate DeSimone <nathaniel.l.desimone@intel.com>
Subject: Re: [edk2-devel] [edk2-platforms][PATCH v1 1/1] IntelSiliconPkg/SpiFvbService: Add support for VariableFlashInfoLib
Date: Tue, 10 May 2022 13:33:19 -0400 [thread overview]
Message-ID: <30c59c6c-a891-bb8e-5005-840f928e704e@linux.microsoft.com> (raw)
In-Reply-To: <e13a6188-9363-cebe-c2b8-cb6a23282ba3@linux.microsoft.com>
Another reminder to review this patch.
Thanks,
Michael
On 4/29/2022 4:08 PM, Michael Kubacki wrote:
> Please help review this patch when possible.
>
> Thanks,
> Michael
>
> On 4/22/2022 10:02 AM, Michael Kubacki wrote:
>> Reminder to review this patch.
>>
>>
>> On 4/18/2022 7:43 PM, Michael Kubacki wrote:
>>> From: Michael Kubacki <michael.kubacki@microsoft.com>
>>>
>>> REF:https://bugzilla.tianocore.org/show_bug.cgi?id=3478
>>>
>>> Adds support for getting the variable flash information from
>>> VariableFlashInfoLib. This library abstracts the source of flash
>>> information so platforms could expect the information to come
>>> from a different source in the library implementation than the
>>> PCDs previously used as the information source in this module.
>>>
>>> In particular, the library allows Standalone MM platforms to
>>> dynamically pass the information behind the library API.
>>>
>>> Cc: Rangasai V Chaganty <rangasai.v.chaganty@intel.com>
>>> Cc: Ray Ni <ray.ni@intel.com>
>>> Cc: Nate DeSimone <nathaniel.l.desimone@intel.com>
>>> Signed-off-by: Michael Kubacki <michael.kubacki@microsoft.com>
>>> ---
>>>
>>> Notes:
>>> Depends on https://bugzilla.tianocore.org/show_bug.cgi?id=3479
>>> to complete
>>>
>>> Silicon/Intel/IntelSiliconPkg/Feature/Flash/SpiFvbService/FvbInfo.c |
>>> 120 +++++++++++++-------
>>> Silicon/Intel/IntelSiliconPkg/Feature/Flash/SpiFvbService/SpiFvbServiceCommon.c
>>> | 93 +++++++++++++--
>>> Silicon/Intel/IntelSiliconPkg/Feature/Flash/SpiFvbService/SpiFvbServiceMm.c
>>> | 28 ++++-
>>> Silicon/Intel/IntelSiliconPkg/Feature/Flash/SpiFvbService/SpiFvbServiceCommon.h
>>> | 18 ++-
>>> Silicon/Intel/IntelSiliconPkg/Feature/Flash/SpiFvbService/SpiFvbServiceSmm.inf
>>> | 6 +-
>>> Silicon/Intel/IntelSiliconPkg/Feature/Flash/SpiFvbService/SpiFvbServiceStandaloneMm.inf
>>> | 6 +-
>>> Silicon/Intel/IntelSiliconPkg/IntelSiliconPkg.dsc | 7 ++
>>> 7 files changed, 215 insertions(+), 63 deletions(-)
>>>
>>> diff --git
>>> a/Silicon/Intel/IntelSiliconPkg/Feature/Flash/SpiFvbService/FvbInfo.c
>>> b/Silicon/Intel/IntelSiliconPkg/Feature/Flash/SpiFvbService/FvbInfo.c
>>> index 7f2678fa9e5a..5e78c1ce0c14 100644
>>> ---
>>> a/Silicon/Intel/IntelSiliconPkg/Feature/Flash/SpiFvbService/FvbInfo.c
>>> +++
>>> b/Silicon/Intel/IntelSiliconPkg/Feature/Flash/SpiFvbService/FvbInfo.c
>>> @@ -3,6 +3,7 @@
>>> These data is intent to decouple FVB driver with FV header.
>>> Copyright (c) 2017, Intel Corporation. All rights reserved.<BR>
>>> +Copyright (c) Microsoft Corporation.<BR>
>>> SPDX-License-Identifier: BSD-2-Clause-Patent
>>> **/
>>> @@ -11,51 +12,84 @@ SPDX-License-Identifier: BSD-2-Clause-Patent
>>> #define FIRMWARE_BLOCK_SIZE 0x10000
>>> #define FVB_MEDIA_BLOCK_SIZE FIRMWARE_BLOCK_SIZE
>>> -
>>> -#define NV_STORAGE_BASE_ADDRESS
>>> FixedPcdGet32(PcdFlashNvStorageVariableBase)
>>> -#define SYSTEM_NV_BLOCK_NUM
>>> ((FixedPcdGet32(PcdFlashNvStorageVariableSize)+
>>> FixedPcdGet32(PcdFlashNvStorageFtwWorkingSize) +
>>> FixedPcdGet32(PcdFlashNvStorageFtwSpareSize))/ FVB_MEDIA_BLOCK_SIZE)
>>> -
>>> typedef struct {
>>> EFI_PHYSICAL_ADDRESS BaseAddress;
>>> EFI_FIRMWARE_VOLUME_HEADER FvbInfo;
>>> EFI_FV_BLOCK_MAP_ENTRY End[1];
>>> } EFI_FVB2_MEDIA_INFO;
>>> -//
>>> -// This data structure contains a template of all correct FV
>>> headers, which is used to restore
>>> -// Fv header if it's corrupted.
>>> -//
>>> -EFI_FVB2_MEDIA_INFO mPlatformFvbMediaInfo[] = {
>>> - //
>>> - // Systen NvStorage FVB
>>> - //
>>> - {
>>> - NV_STORAGE_BASE_ADDRESS,
>>> - {
>>> - {0,}, //ZeroVector[16]
>>> - EFI_SYSTEM_NV_DATA_FV_GUID,
>>> - FVB_MEDIA_BLOCK_SIZE * SYSTEM_NV_BLOCK_NUM,
>>> - EFI_FVH_SIGNATURE,
>>> - 0x0004feff, // check MdePkg/Include/Pi/PiFirmwareVolume.h for
>>> details on EFI_FVB_ATTRIBUTES_2
>>> - sizeof (EFI_FIRMWARE_VOLUME_HEADER) + sizeof
>>> (EFI_FV_BLOCK_MAP_ENTRY),
>>> - 0, //CheckSum which will be calucated dynamically.
>>> - 0, //ExtHeaderOffset
>>> - {0,}, //Reserved[1]
>>> - 2, //Revision
>>> - {
>>> - {
>>> - SYSTEM_NV_BLOCK_NUM,
>>> - FVB_MEDIA_BLOCK_SIZE,
>>> - }
>>> - }
>>> - },
>>> - {
>>> - {
>>> - 0,
>>> - 0
>>> - }
>>> - }
>>> +/**
>>> + Returns FVB media information for NV variable storage.
>>> +
>>> + @return FvbMediaInfo A pointer to an instance of
>>> FVB media info produced by this function.
>>> + The buffer is allocated
>>> internally to this function and it is the caller's
>>> + responsibility to free the memory
>>> +
>>> +**/
>>> +typedef
>>> +EFI_STATUS
>>> +(*FVB_MEDIA_INFO_GENERATOR)(
>>> + OUT EFI_FVB2_MEDIA_INFO *FvbMediaInfo
>>> + );
>>> +
>>> +/**
>>> + Returns FVB media information for NV variable storage.
>>> +
>>> + @return FvbMediaInfo A pointer to an instance of
>>> FVB media info produced by this function.
>>> + The buffer is allocated
>>> internally to this function and it is the caller's
>>> + responsibility to free the memory
>>> +
>>> +**/
>>> +EFI_STATUS
>>> +GenerateNvStorageFvbMediaInfo (
>>> + OUT EFI_FVB2_MEDIA_INFO *FvbMediaInfo
>>> + )
>>> +{
>>> + UINT32 NvBlockNum;
>>> + UINT32 TotalNvVariableStorageSize;
>>> + EFI_PHYSICAL_ADDRESS NvStorageBaseAddress;
>>> + EFI_FIRMWARE_VOLUME_HEADER FvbInfo = {
>>> + {0,}, //ZeroVector[16]
>>> + EFI_SYSTEM_NV_DATA_FV_GUID, //FileSystemGuid
>>> + 0, //FvLength
>>> + EFI_FVH_SIGNATURE, //Signature
>>> + 0x0004feff, //Attributes
>>> + sizeof
>>> (EFI_FIRMWARE_VOLUME_HEADER) + //HeaderLength
>>> + sizeof
>>> (EFI_FV_BLOCK_MAP_ENTRY),
>>> + 0, //Checksum
>>> + 0, //ExtHeaderOffset
>>> + {0,}, //Reserved[1]
>>> + 2, //Revision
>>> + { //BlockMap[1]
>>> + {0,0}
>>> + }
>>> + };
>>> +
>>> + if (FvbMediaInfo == NULL) {
>>> + return EFI_INVALID_PARAMETER;
>>> }
>>> +
>>> + ZeroMem (FvbMediaInfo, sizeof (*FvbMediaInfo));
>>> +
>>> + GetVariableFvInfo (&NvStorageBaseAddress,
>>> &TotalNvVariableStorageSize);
>>> + if ((NvStorageBaseAddress == 0) || (TotalNvVariableStorageSize ==
>>> 0)) {
>>> + return EFI_UNSUPPORTED;
>>> + }
>>> +
>>> + NvBlockNum = TotalNvVariableStorageSize / FVB_MEDIA_BLOCK_SIZE;
>>> +
>>> + FvbInfo.FvLength = (UINT64)(NvBlockNum * FVB_MEDIA_BLOCK_SIZE);
>>> + FvbInfo.BlockMap[0].NumBlocks = NvBlockNum;
>>> + FvbInfo.BlockMap[0].Length = FVB_MEDIA_BLOCK_SIZE;
>>> +
>>> + FvbMediaInfo->BaseAddress = NvStorageBaseAddress;
>>> + CopyMem (&FvbMediaInfo->FvbInfo, &FvbInfo, sizeof (FvbInfo));
>>> +
>>> + return EFI_SUCCESS;
>>> +}
>>> +
>>> +FVB_MEDIA_INFO_GENERATOR mFvbMediaInfoGenerators[] = {
>>> + GenerateNvStorageFvbMediaInfo
>>> };
>>> EFI_STATUS
>>> @@ -64,12 +98,16 @@ GetFvbInfo (
>>> OUT EFI_FIRMWARE_VOLUME_HEADER **FvbInfo
>>> )
>>> {
>>> + EFI_STATUS Status;
>>> + EFI_FVB2_MEDIA_INFO FvbMediaInfo;
>>> UINTN Index;
>>> EFI_FIRMWARE_VOLUME_HEADER *FvHeader;
>>> - for (Index = 0; Index < sizeof (mPlatformFvbMediaInfo) / sizeof
>>> (EFI_FVB2_MEDIA_INFO); Index++) {
>>> - if (mPlatformFvbMediaInfo[Index].BaseAddress == FvBaseAddress) {
>>> - FvHeader = &mPlatformFvbMediaInfo[Index].FvbInfo;
>>> + for (Index = 0; Index < ARRAY_SIZE (mFvbMediaInfoGenerators);
>>> Index++) {
>>> + Status = mFvbMediaInfoGenerators[Index](&FvbMediaInfo);
>>> + ASSERT_EFI_ERROR (Status);
>>> + if (!EFI_ERROR (Status) && (FvbMediaInfo.BaseAddress ==
>>> FvBaseAddress)) {
>>> + FvHeader = &FvbMediaInfo.FvbInfo;
>>> //
>>> // Update the checksum value of FV header.
>>> diff --git
>>> a/Silicon/Intel/IntelSiliconPkg/Feature/Flash/SpiFvbService/SpiFvbServiceCommon.c
>>> b/Silicon/Intel/IntelSiliconPkg/Feature/Flash/SpiFvbService/SpiFvbServiceCommon.c
>>>
>>> index dab818e98087..942abf95a64f 100644
>>> ---
>>> a/Silicon/Intel/IntelSiliconPkg/Feature/Flash/SpiFvbService/SpiFvbServiceCommon.c
>>>
>>> +++
>>> b/Silicon/Intel/IntelSiliconPkg/Feature/Flash/SpiFvbService/SpiFvbServiceCommon.c
>>>
>>> @@ -3,6 +3,7 @@
>>> which are compliant with the Intel(R) Serial Flash Interface
>>> Compatibility Specification.
>>> Copyright (c) 2017, Intel Corporation. All rights reserved.<BR>
>>> +Copyright (c) Microsoft Corporation.<BR>
>>> SPDX-License-Identifier: BSD-2-Clause-Patent
>>> **/
>>> @@ -25,12 +26,6 @@ FV_INFO mPlatformFvBaseAddress[] = {
>>> {0, 0}
>>> };
>>> -FV_INFO mPlatformDefaultBaseAddress[] = {
>>> - {0, 0}, // {FixedPcdGet32(PcdFlashNvStorageVariableBase),
>>> FixedPcdGet32(PcdFlashNvStorageVariableSize)},
>>> - {0, 0}, // {FixedPcdGet32(PcdFlashMicrocodeFvBase),
>>> FixedPcdGet32(PcdFlashMicrocodeFvSize)},
>>> - {0, 0}
>>> -};
>>> -
>>> FV_MEMMAP_DEVICE_PATH mFvMemmapDevicePathTemplate = {
>>> {
>>> {
>>> @@ -530,6 +525,85 @@ FvbSetVolumeAttributes (
>>> return EFI_SUCCESS;
>>> }
>>> +/**
>>> + Get the total size of the firmware volume on flash used for
>>> variable store operations.
>>> +
>>> + @param[out] BaseAddress Base address of the variable store
>>> firmware volume.
>>> + @param[out] Length Length in bytes of the firmware
>>> volume used for variable store operations.
>>> +
>>> +**/
>>> +VOID
>>> +GetVariableFvInfo (
>>> + OUT EFI_PHYSICAL_ADDRESS *BaseAddress,
>>> + OUT UINT32 *Length
>>> + )
>>> +{
>>> + EFI_STATUS Status;
>>> + EFI_PHYSICAL_ADDRESS NvBaseAddress;
>>> + EFI_PHYSICAL_ADDRESS NvVariableBaseAddress;
>>> + UINT64 Length64;
>>> + UINT32 NvStoreLength;
>>> + UINT32 FtwSpareLength;
>>> + UINT32 FtwWorkingLength;
>>> + UINT32 TotalLength;
>>> +
>>> + TotalLength = 0;
>>> + Status = EFI_SUCCESS;
>>> +
>>> + if ((BaseAddress == NULL) || (Length == NULL)) {
>>> + ASSERT ((BaseAddress != NULL) && (Length != NULL));
>>> + return;
>>> + }
>>> + *BaseAddress = 0;
>>> + *Length = 0;
>>> +
>>> + Status = GetVariableFlashNvStorageInfo (&NvBaseAddress, &Length64);
>>> + if (!EFI_ERROR (Status)) {
>>> + NvVariableBaseAddress = NvBaseAddress;
>>> + // Stay within the current UINT32 size assumptions in the
>>> variable stack.
>>> + Status = SafeUint64ToUint32 (Length64, &NvStoreLength);
>>> + }
>>> + if (EFI_ERROR (Status)) {
>>> + ASSERT_EFI_ERROR (Status);
>>> + return;
>>> + }
>>> +
>>> + Status = GetVariableFlashFtwSpareInfo (&NvBaseAddress, &Length64);
>>> + if (!EFI_ERROR (Status)) {
>>> + // Stay within the current UINT32 size assumptions in the
>>> variable stack.
>>> + Status = SafeUint64ToUint32 (Length64, &FtwSpareLength);
>>> + }
>>> + if (EFI_ERROR (Status)) {
>>> + ASSERT_EFI_ERROR (Status);
>>> + return;
>>> + }
>>> +
>>> + Status = GetVariableFlashFtwWorkingInfo (&NvBaseAddress, &Length64);
>>> + if (!EFI_ERROR (Status)) {
>>> + // Stay within the current UINT32 size assumptions in the
>>> variable stack.
>>> + Status = SafeUint64ToUint32 (Length64, &FtwWorkingLength);
>>> + }
>>> + if (EFI_ERROR (Status)) {
>>> + ASSERT_EFI_ERROR (Status);
>>> + return;
>>> + }
>>> +
>>> + Status = SafeUint32Add (NvStoreLength, FtwSpareLength, &TotalLength);
>>> + if (EFI_ERROR (Status)) {
>>> + ASSERT_EFI_ERROR (Status);
>>> + return;
>>> + }
>>> +
>>> + Status = SafeUint32Add (TotalLength, FtwWorkingLength, &TotalLength);
>>> + if (EFI_ERROR (Status)) {
>>> + ASSERT_EFI_ERROR (Status);
>>> + return;
>>> + }
>>> +
>>> + *BaseAddress = NvVariableBaseAddress;
>>> + *Length = TotalLength;
>>> +}
>>> +
>>> /**
>>> Check the integrity of firmware volume header
>>> @@ -545,7 +619,12 @@ IsFvHeaderValid (
>>> IN CONST EFI_FIRMWARE_VOLUME_HEADER *FvHeader
>>> )
>>> {
>>> - if (FvBase == PcdGet32(PcdFlashNvStorageVariableBase)) {
>>> + EFI_PHYSICAL_ADDRESS NvStorageFvBaseAddress;
>>> + UINT32 NvStorageSize;
>>> +
>>> + GetVariableFvInfo (&NvStorageFvBaseAddress, &NvStorageSize);
>>> +
>>> + if (FvBase == NvStorageFvBaseAddress) {
>>> if (CompareMem (&FvHeader->FileSystemGuid,
>>> &gEfiSystemNvDataFvGuid, sizeof(EFI_GUID)) != 0 ) {
>>> return FALSE;
>>> }
>>> diff --git
>>> a/Silicon/Intel/IntelSiliconPkg/Feature/Flash/SpiFvbService/SpiFvbServiceMm.c
>>> b/Silicon/Intel/IntelSiliconPkg/Feature/Flash/SpiFvbService/SpiFvbServiceMm.c
>>>
>>> index 42a0828c6fae..a1b4514a0b3a 100644
>>> ---
>>> a/Silicon/Intel/IntelSiliconPkg/Feature/Flash/SpiFvbService/SpiFvbServiceMm.c
>>>
>>> +++
>>> b/Silicon/Intel/IntelSiliconPkg/Feature/Flash/SpiFvbService/SpiFvbServiceMm.c
>>>
>>> @@ -113,15 +113,31 @@ FvbInitialize (
>>> UINT32 MaxLbaSize;
>>> UINT32 BytesWritten;
>>> UINTN BytesErased;
>>> + UINT64 NvStorageFvSize;
>>> +
>>> + Status = GetVariableFlashNvStorageInfo (&BaseAddress,
>>> &NvStorageFvSize);
>>> + if (EFI_ERROR (Status)) {
>>> + ASSERT_EFI_ERROR (Status);
>>> + DEBUG ((DEBUG_ERROR, "[%a] - An error ocurred getting variable
>>> info - %r.\n", __FUNCTION__, Status));
>>> + return;
>>> + }
>>> +
>>> + // Stay within the current UINT32 size assumptions in the variable
>>> stack.
>>> + Status = SafeUint64ToUint32 (BaseAddress,
>>> &mPlatformFvBaseAddress[0].FvBase);
>>> + if (EFI_ERROR (Status)) {
>>> + ASSERT_EFI_ERROR (Status);
>>> + DEBUG ((DEBUG_ERROR, "[%a] - 64-bit variable storage base
>>> address not supported.\n", __FUNCTION__));
>>> + return;
>>> + }
>>> + Status = SafeUint64ToUint32 (NvStorageFvSize,
>>> &mPlatformFvBaseAddress[0].FvSize);
>>> + if (EFI_ERROR (Status)) {
>>> + ASSERT_EFI_ERROR (Status);
>>> + DEBUG ((DEBUG_ERROR, "[%a] - 64-bit variable storage size not
>>> supported.\n", __FUNCTION__));
>>> + return;
>>> + }
>>> - mPlatformFvBaseAddress[0].FvBase =
>>> PcdGet32(PcdFlashNvStorageVariableBase);
>>> - mPlatformFvBaseAddress[0].FvSize =
>>> PcdGet32(PcdFlashNvStorageVariableSize);
>>> mPlatformFvBaseAddress[1].FvBase =
>>> PcdGet32(PcdFlashMicrocodeFvBase);
>>> mPlatformFvBaseAddress[1].FvSize =
>>> PcdGet32(PcdFlashMicrocodeFvSize);
>>> - mPlatformDefaultBaseAddress[0].FvBase =
>>> PcdGet32(PcdFlashNvStorageVariableBase);
>>> - mPlatformDefaultBaseAddress[0].FvSize =
>>> PcdGet32(PcdFlashNvStorageVariableSize);
>>> - mPlatformDefaultBaseAddress[1].FvBase =
>>> PcdGet32(PcdFlashMicrocodeFvBase);
>>> - mPlatformDefaultBaseAddress[1].FvSize =
>>> PcdGet32(PcdFlashMicrocodeFvSize);
>>> //
>>> // We will only continue with FVB installation if the
>>> diff --git
>>> a/Silicon/Intel/IntelSiliconPkg/Feature/Flash/SpiFvbService/SpiFvbServiceCommon.h
>>> b/Silicon/Intel/IntelSiliconPkg/Feature/Flash/SpiFvbService/SpiFvbServiceCommon.h
>>>
>>> index e9d69e985814..7b0908b03fdc 100644
>>> ---
>>> a/Silicon/Intel/IntelSiliconPkg/Feature/Flash/SpiFvbService/SpiFvbServiceCommon.h
>>>
>>> +++
>>> b/Silicon/Intel/IntelSiliconPkg/Feature/Flash/SpiFvbService/SpiFvbServiceCommon.h
>>>
>>> @@ -2,6 +2,7 @@
>>> Common source definitions used in serial flash drivers
>>> Copyright (c) 2017, Intel Corporation. All rights reserved.<BR>
>>> +Copyright (c) Microsoft Corporation.<BR>
>>> SPDX-License-Identifier: BSD-2-Clause-Patent
>>> **/
>>> @@ -12,6 +13,7 @@ SPDX-License-Identifier: BSD-2-Clause-Patent
>>> #include <Guid/EventGroup.h>
>>> #include <Guid/FirmwareFileSystem2.h>
>>> #include <Guid/SystemNvDataGuid.h>
>>> +#include <Pi/PiFirmwareVolume.h>
>>> #include <Protocol/DevicePath.h>
>>> #include <Protocol/FirmwareVolumeBlock.h>
>>> @@ -24,6 +26,8 @@ SPDX-License-Identifier: BSD-2-Clause-Patent
>>> #include <Library/PcdLib.h>
>>> #include <Library/DevicePathLib.h>
>>> #include <Library/HobLib.h>
>>> +#include <Library/VariableFlashInfoLib.h>
>>> +#include <Library/SafeIntLib.h>
>>> #include <Library/SpiFlashCommonLib.h>
>>> @@ -148,11 +152,23 @@ GetFvbInfo (
>>> OUT EFI_FIRMWARE_VOLUME_HEADER **FvbInfo
>>> );
>>> +/**
>>> + Get the total size of the firmware volume on flash used for
>>> variable store operations.
>>> +
>>> + @param[out] BaseAddress Base address of the variable store
>>> firmware volume.
>>> + @param[out] Length Length in bytes of the firmware
>>> volume used for variable store operations.
>>> +
>>> +**/
>>> +VOID
>>> +GetVariableFvInfo (
>>> + OUT EFI_PHYSICAL_ADDRESS *BaseAddress,
>>> + OUT UINT32 *Length
>>> + );
>>> +
>>> extern FVB_GLOBAL mFvbModuleGlobal;
>>> extern FV_MEMMAP_DEVICE_PATH mFvMemmapDevicePathTemplate;
>>> extern FV_PIWG_DEVICE_PATH mFvPIWGDevicePathTemplate;
>>> extern EFI_FIRMWARE_VOLUME_BLOCK_PROTOCOL mFvbProtocolTemplate;
>>> extern FV_INFO mPlatformFvBaseAddress[];
>>> -extern FV_INFO
>>> mPlatformDefaultBaseAddress[];
>>> #endif
>>> diff --git
>>> a/Silicon/Intel/IntelSiliconPkg/Feature/Flash/SpiFvbService/SpiFvbServiceSmm.inf
>>> b/Silicon/Intel/IntelSiliconPkg/Feature/Flash/SpiFvbService/SpiFvbServiceSmm.inf
>>>
>>> index bf1306f00201..0cfa3f909bdf 100644
>>> ---
>>> a/Silicon/Intel/IntelSiliconPkg/Feature/Flash/SpiFvbService/SpiFvbServiceSmm.inf
>>>
>>> +++
>>> b/Silicon/Intel/IntelSiliconPkg/Feature/Flash/SpiFvbService/SpiFvbServiceSmm.inf
>>>
>>> @@ -32,8 +32,10 @@ [LibraryClasses]
>>> BaseLib
>>> UefiBootServicesTableLib
>>> UefiDriverEntryPoint
>>> + SafeIntLib
>>> SpiFlashCommonLib
>>> MmServicesTableLib
>>> + VariableFlashInfoLib
>>> [Packages]
>>> MdePkg/MdePkg.dec
>>> @@ -41,10 +43,6 @@ [Packages]
>>> IntelSiliconPkg/IntelSiliconPkg.dec
>>> [Pcd]
>>> - gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageVariableBase ##
>>> CONSUMES
>>> - gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageVariableSize ##
>>> CONSUMES
>>> - gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageFtwWorkingSize ##
>>> CONSUMES
>>> - gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageFtwSpareSize ##
>>> CONSUMES
>>> gIntelSiliconPkgTokenSpaceGuid.PcdFlashMicrocodeFvBase ##
>>> CONSUMES
>>> gIntelSiliconPkgTokenSpaceGuid.PcdFlashMicrocodeFvSize ##
>>> CONSUMES
>>> diff --git
>>> a/Silicon/Intel/IntelSiliconPkg/Feature/Flash/SpiFvbService/SpiFvbServiceStandaloneMm.inf
>>> b/Silicon/Intel/IntelSiliconPkg/Feature/Flash/SpiFvbService/SpiFvbServiceStandaloneMm.inf
>>>
>>> index b66233968247..152cf0036fdb 100644
>>> ---
>>> a/Silicon/Intel/IntelSiliconPkg/Feature/Flash/SpiFvbService/SpiFvbServiceStandaloneMm.inf
>>>
>>> +++
>>> b/Silicon/Intel/IntelSiliconPkg/Feature/Flash/SpiFvbService/SpiFvbServiceStandaloneMm.inf
>>>
>>> @@ -31,8 +31,10 @@ [LibraryClasses]
>>> MemoryAllocationLib
>>> PcdLib
>>> MmServicesTableLib
>>> + SafeIntLib
>>> SpiFlashCommonLib
>>> StandaloneMmDriverEntryPoint
>>> + VariableFlashInfoLib
>>> [Packages]
>>> MdePkg/MdePkg.dec
>>> @@ -40,10 +42,6 @@ [Packages]
>>> IntelSiliconPkg/IntelSiliconPkg.dec
>>> [Pcd]
>>> - gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageVariableBase ##
>>> CONSUMES
>>> - gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageVariableSize ##
>>> CONSUMES
>>> - gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageFtwWorkingSize ##
>>> CONSUMES
>>> - gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageFtwSpareSize ##
>>> CONSUMES
>>> gIntelSiliconPkgTokenSpaceGuid.PcdFlashMicrocodeFvBase ##
>>> CONSUMES
>>> gIntelSiliconPkgTokenSpaceGuid.PcdFlashMicrocodeFvSize ##
>>> CONSUMES
>>> diff --git a/Silicon/Intel/IntelSiliconPkg/IntelSiliconPkg.dsc
>>> b/Silicon/Intel/IntelSiliconPkg/IntelSiliconPkg.dsc
>>> index 1e826a080f28..170eb480ada1 100644
>>> --- a/Silicon/Intel/IntelSiliconPkg/IntelSiliconPkg.dsc
>>> +++ b/Silicon/Intel/IntelSiliconPkg/IntelSiliconPkg.dsc
>>> @@ -40,9 +40,11 @@ [LibraryClasses]
>>> PeiGetVtdPmrAlignmentLib|IntelSiliconPkg/Library/PeiGetVtdPmrAlignmentLib/PeiGetVtdPmrAlignmentLib.inf
>>>
>>> TpmMeasurementLib|MdeModulePkg/Library/TpmMeasurementLibNull/TpmMeasurementLibNull.inf
>>>
>>> MicrocodeLib|UefiCpuPkg/Library/MicrocodeLib/MicrocodeLib.inf
>>> + SafeIntLib|MdePkg/Library/BaseSafeIntLib/BaseSafeIntLib.inf
>>> SpiFlashCommonLib|IntelSiliconPkg/Library/SpiFlashCommonLibNull/SpiFlashCommonLibNull.inf
>>>
>>> UefiBootServicesTableLib|MdePkg/Library/UefiBootServicesTableLib/UefiBootServicesTableLib.inf
>>>
>>> UefiDriverEntryPoint|MdePkg/Library/UefiDriverEntryPoint/UefiDriverEntryPoint.inf
>>>
>>> +
>>> VariableFlashInfoLib|MdeModulePkg/Library/BaseVariableFlashInfoLib/BaseVariableFlashInfoLib.inf
>>>
>>> [LibraryClasses.common.PEIM]
>>> PeimEntryPoint|MdePkg/Library/PeimEntryPoint/PeimEntryPoint.inf
>>> @@ -63,11 +65,16 @@ [LibraryClasses.common.DXE_DRIVER]
>>> MemoryAllocationLib|MdePkg/Library/UefiMemoryAllocationLib/UefiMemoryAllocationLib.inf
>>>
>>> [LibraryClasses.common.DXE_SMM_DRIVER]
>>> + DevicePathLib|MdePkg/Library/UefiDevicePathLib/UefiDevicePathLib.inf
>>> + HobLib|MdePkg/Library/DxeHobLib/DxeHobLib.inf
>>> MemoryAllocationLib|MdePkg/Library/SmmMemoryAllocationLib/SmmMemoryAllocationLib.inf
>>>
>>> MmServicesTableLib|MdePkg/Library/MmServicesTableLib/MmServicesTableLib.inf
>>>
>>> SmmServicesTableLib|MdePkg/Library/SmmServicesTableLib/SmmServicesTableLib.inf
>>>
>>> + UefiLib|MdePkg/Library/UefiLib/UefiLib.inf
>>> +
>>> UefiRuntimeServicesTableLib|MdePkg/Library/UefiRuntimeServicesTableLib/UefiRuntimeServicesTableLib.inf
>>>
>>> [LibraryClasses.common.MM_STANDALONE]
>>> +
>>> HobLib|StandaloneMmPkg/Library/StandaloneMmHobLib/StandaloneMmHobLib.inf
>>> MemoryAllocationLib|StandaloneMmPkg/Library/StandaloneMmMemoryAllocationLib/StandaloneMmMemoryAllocationLib.inf
>>>
>>> MmServicesTableLib|MdePkg/Library/StandaloneMmServicesTableLib/StandaloneMmServicesTableLib.inf
>>>
>>> StandaloneMmDriverEntryPoint|MdePkg/Library/StandaloneMmDriverEntryPoint/StandaloneMmDriverEntryPoint.inf
>>>
next prev parent reply other threads:[~2022-05-10 17:33 UTC|newest]
Thread overview: 4+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <16E7223EA9941366.18098@groups.io>
2022-04-22 14:02 ` [edk2-devel] [edk2-platforms][PATCH v1 1/1] IntelSiliconPkg/SpiFvbService: Add support for VariableFlashInfoLib Michael Kubacki
2022-04-29 20:08 ` Michael Kubacki
2022-05-10 17:33 ` Michael Kubacki [this message]
2022-05-13 17:42 ` Michael Kubacki
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-list from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=30c59c6c-a891-bb8e-5005-840f928e704e@linux.microsoft.com \
--to=devel@edk2.groups.io \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox