On Tue, 12 Apr 2022 at 18:30, <mikub...@linux.microsoft.com> wrote: > > From: Michael Kubacki <michael.kuba...@microsoft.com> > > REF:https://bugzilla.tianocore.org/show_bug.cgi?id=3479 > > The UEFI variable drivers such as VariableRuntimeDxe, VariableSmm, > VariableStandaloneMm, etc. (and their dependent protocol/library > stack), typically acquire UEFI variable store flash information > with PCDs declared in MdeModulePkg. > > For example: > [Pcd] > gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageVariableBase > gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageVariableBase64 > gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageVariableSize > > These PCDs work as-is in the StandaloneMm driver if they are not > dynamic such as Dynamic or DynamicEx because PCD services are not > readily available in the Standalone MM environment. Platforms that > use Standalone MM today, must define these PCDs as FixedAtBuild in > their platform build. However, the PCDs do allow platforms to treat > the PCDs as Dynamic/DynamicEx and being able to support that is > currently a gap for Standalone MM. > > This patch series introduces a HOB that can be produced by the > platform to provide the same information. The HOB list is > available to Standalone MM. > > The PCD declarations are left as-is in MdeModulePkg for backward > compatibility. This means unless a platform wants to use the HOB, > their code will continue to work with no change (they do not need > to produce the HOB). Only if the HOB is found, is its value used > instead of the PCDs. > > Due to the large number of consumers of this information, access > to the base address and size values is abstracted in a new library > class (as requested in the v1 series) called VariableFlashInfoLib. > > The API of VariableFlashInfoLib does not bind the underlying data > structure to the information returned to library users to allow > flexibility in the library implementation in the future. > > V4 changes: > 1. Add a UINT32 "Reserved" field to VARIABLE_FLASH_INFO. > 2. Add a descriptive comment to VariableFlashInfo.h to explain > HOB usage. > > V3 changes: > 1. To better clarify usage, renamed the members > "NvStorageBaseAddress" and "NvStorageLength" in > "VARIABLE_FLASH_INFO" to "NvVariableBaseAddress" and > "NvVariableLength". > 2. Added description comments to the fields in "VARIABLE_FLASH_INFO". > > V2 changes: > 1. Abstracted flash info data access with VariableFlashInfoLib. > 2. Updated package builds in the repo that build the variable and > FTW drivers to include VariableFlashInfoLib. > 3. Removed a redundant variable assignment in VariableSmm.c. > 4. Updated comments in FtwMisc.c and FaultTolerantWritePei.c to > indicate driver assumption is UINTN (not UINT32) > 5. Added a version field to the VARIABLE_FLASH_INFO structure. > > Cc: Abner Chang <abner.ch...@hpe.com> > Cc: Andrew Fish <af...@apple.com> > Cc: Anthony Perard <anthony.per...@citrix.com> > Cc: Ard Biesheuvel <ardb+tianoc...@kernel.org> > Cc: Benjamin You <benjamin....@intel.com> > Cc: Brijesh Singh <brijesh.si...@amd.com> > Cc: Erdem Aktas <erdemak...@google.com> > Cc: Gerd Hoffmann <kra...@redhat.com> > Cc: Guo Dong <guo.d...@intel.com> > Cc: Hao A Wu <hao.a...@intel.com> > Cc: James Bottomley <j...@linux.ibm.com> > Cc: Jian J Wang <jian.j.w...@intel.com> > Cc: Jiewen Yao <jiewen....@intel.com> > Cc: Jordan Justen <jordan.l.jus...@intel.com> > Cc: Julien Grall <jul...@xen.org> > Cc: Leif Lindholm <quic_llind...@quicinc.com> > Cc: Liming Gao <gaolim...@byosoft.com.cn> > Cc: Maurice Ma <maurice...@intel.com> > Cc: Min Xu <min.m...@intel.com> > Cc: Nickle Wang <nickle.w...@hpe.com> > Cc: Peter Grehan <gre...@freebsd.org> > Cc: Ray Ni <ray...@intel.com> > Cc: Rebecca Cran <rebe...@bsdio.com> > Cc: Sami Mujawar <sami.muja...@arm.com> > Cc: Sean Rhodes <sean@starlabs.systems> > Cc: Sebastien Boeuf <sebastien.bo...@intel.com> > Cc: Tom Lendacky <thomas.lenda...@amd.com> > Signed-off-by: Michael Kubacki <michael.kuba...@microsoft.com> > > Michael Kubacki (8): > MdeModulePkg: Add Variable Flash Info HOB > MdeModulePkg/VariableFlashInfoLib: Add initial library > MdeModulePkg/Variable: Consume Variable Flash Info > MdeModulePkg/FaultTolerantWrite: Consume Variable Flash Info > ArmVirtPkg/ArmVirt.dsc.inc: Add VariableFlashInfoLib > EmulatorPkg: Add VariableFlashInfoLib > OvmfPkg: Add VariableFlashInfoLib > UefiPayloadPkg: Add VariableFlashInfoLib >
For the series, Acked-by: Ard Biesheuvel <a...@kernel.org> > MdeModulePkg/Library/BaseVariableFlashInfoLib/BaseVariableFlashInfoLib.c > | 178 ++++++++++++++++++++ > MdeModulePkg/Universal/FaultTolerantWriteDxe/FtwMisc.c > | 41 +++-- > MdeModulePkg/Universal/FaultTolerantWriteDxe/UpdateWorkingBlock.c > | 7 +- > MdeModulePkg/Universal/FaultTolerantWritePei/FaultTolerantWritePei.c > | 28 +-- > MdeModulePkg/Universal/Variable/Pei/Variable.c > | 14 +- > MdeModulePkg/Universal/Variable/RuntimeDxe/VariableDxe.c > | 16 +- > MdeModulePkg/Universal/Variable/RuntimeDxe/VariableNonVolatile.c > | 14 +- > MdeModulePkg/Universal/Variable/RuntimeDxe/VariableSmm.c > | 17 +- > ArmVirtPkg/ArmVirt.dsc.inc > | 1 + > EmulatorPkg/EmulatorPkg.dsc > | 1 + > MdeModulePkg/Include/Guid/VariableFlashInfo.h > | 111 ++++++++++++ > MdeModulePkg/Include/Library/VariableFlashInfoLib.h > | 68 ++++++++ > MdeModulePkg/Library/BaseVariableFlashInfoLib/BaseVariableFlashInfoLib.inf > | 48 ++++++ > MdeModulePkg/Library/BaseVariableFlashInfoLib/BaseVariableFlashInfoLib.uni > | 12 ++ > MdeModulePkg/MdeModulePkg.dec > | 8 + > MdeModulePkg/MdeModulePkg.dsc > | 2 + > MdeModulePkg/Universal/FaultTolerantWriteDxe/FaultTolerantWrite.h > | 7 +- > MdeModulePkg/Universal/FaultTolerantWriteDxe/FaultTolerantWriteDxe.inf > | 10 +- > MdeModulePkg/Universal/FaultTolerantWriteDxe/FaultTolerantWriteSmm.inf > | 10 +- > > MdeModulePkg/Universal/FaultTolerantWriteDxe/FaultTolerantWriteStandaloneMm.inf > | 10 +- > MdeModulePkg/Universal/FaultTolerantWritePei/FaultTolerantWritePei.inf > | 10 +- > MdeModulePkg/Universal/Variable/Pei/Variable.h > | 2 + > MdeModulePkg/Universal/Variable/Pei/VariablePei.inf > | 5 +- > MdeModulePkg/Universal/Variable/RuntimeDxe/Variable.h > | 7 +- > MdeModulePkg/Universal/Variable/RuntimeDxe/VariableRuntimeDxe.inf > | 5 +- > MdeModulePkg/Universal/Variable/RuntimeDxe/VariableSmm.inf > | 5 +- > MdeModulePkg/Universal/Variable/RuntimeDxe/VariableStandaloneMm.inf > | 5 +- > OvmfPkg/AmdSev/AmdSevX64.dsc > | 1 + > OvmfPkg/Bhyve/BhyveX64.dsc > | 1 + > OvmfPkg/CloudHv/CloudHvX64.dsc > | 1 + > OvmfPkg/IntelTdx/IntelTdxX64.dsc > | 1 + > OvmfPkg/Microvm/MicrovmX64.dsc > | 1 + > OvmfPkg/OvmfPkgIa32.dsc > | 1 + > OvmfPkg/OvmfPkgIa32X64.dsc > | 1 + > OvmfPkg/OvmfPkgX64.dsc > | 1 + > OvmfPkg/OvmfXen.dsc > | 1 + > UefiPayloadPkg/UefiPayloadPkg.dsc > | 1 + > 37 files changed, 558 insertions(+), 94 deletions(-) > create mode 100644 > MdeModulePkg/Library/BaseVariableFlashInfoLib/BaseVariableFlashInfoLib.c > create mode 100644 MdeModulePkg/Include/Guid/VariableFlashInfo.h > create mode 100644 MdeModulePkg/Include/Library/VariableFlashInfoLib.h > create mode 100644 > MdeModulePkg/Library/BaseVariableFlashInfoLib/BaseVariableFlashInfoLib.inf > create mode 100644 > MdeModulePkg/Library/BaseVariableFlashInfoLib/BaseVariableFlashInfoLib.uni > > -- > 2.28.0.windows.1 > -=-=-=-=-=-=-=-=-=-=-=- Groups.io Links: You receive all messages sent to this group. View/Reply Online (#89120): https://edk2.groups.io/g/devel/message/89120 Mute This Topic: https://groups.io/mt/90421968/21656 Group Owner: devel+ow...@edk2.groups.io Unsubscribe: https://edk2.groups.io/g/devel/unsub [arch...@mail-archive.com] -=-=-=-=-=-=-=-=-=-=-=-