Change looks good to me, just one comment, would you also add new library class into MinPlatformPkg.dec file for reference?
Thanks, Chasel > -----Original Message----- > From: Desimone, Nathaniel L <nathaniel.l.desim...@intel.com> > Sent: Wednesday, April 7, 2021 11:04 AM > To: devel@edk2.groups.io > Cc: Chiu, Chasel <chasel.c...@intel.com>; Liming Gao > <gaolim...@byosoft.com.cn>; Dong, Eric <eric.d...@intel.com>; Michael > Kubacki <michael.kuba...@microsoft.com>; Oram, Isaac W > <isaac.w.o...@intel.com> > Subject: [edk2-platforms] [PATCH v4 0/4] Add Large Variable Libraries > > Changes from V3: > - Added header guards > - Documented the possibility of returning EFI_UNSUPPORTED > - Added MM_CORE_STANDALONE to the StandaloneMm library > implementations > - Documented library constructor return status > - Moved LargeVariableReadLib and LargeVariableWriteLib into > a single BaseLargeVariableLib folder > - Added LargeVariableCommon.h for shared macro definitions > - Converted some debug macros from DEBUG_INFO to DEBUG_VERBOSE > > Changes from V2: > - Added comment to LargeVariableLib INF and header files > describing the usage for drivers that cannot assume that > PcdMaxVariableSize has been set to a certain minimum value. > > Changes from V1: > - Changed prefix from "Min" to "VarLib" > - Better comments > - Added more whitespace for readability > - Removed unused INF sections > - Better debug messages > > This patch series introduces libaries that enable large data sets to be stored > using the UEFI Variable Services. At present, most UEFI Variable Services > implementations have a maximum variable size of <=64KB. The exact value > varies depending on platform. > > These libaries enable a data set to use as much space as needed, up to the > remaining space in the UEFI Variable non-volatile storage. > > To implement this, I have broken the problem down into two parts: > > 1. Phase angostic UEFI Variable access. > 2. Storage of data across multiple UEFI Variables. > > For the first part, I have created two new LibraryClasses: > VariableReadLib and VariableWriteLib. I have provided implementation instances > of VariableReadLib for PEI, DXE, and SMM. > For VariableWriteLib, I have provided implementation instances for DXE and > SMM. This enables code that accesses UEFI variables to be written in a matter > than is phase agnostic, so the same code can be used in PEI, DXE, or SMM > without modification. > > The second part involves another two new LibaryClasses: > LargeVariableReadLib and LargeVariableWriteLib. Only one BASE > implementation is needed for both of these as the phase dependent code was > seperated out in the first piece. These libraries provide logic to calculate > the > maximum size of an individual UEFI variable and split the data into as many > smaller pieces as needed to store the entire data set in the UEFI Variable > storage. > They also provide the ability to stitch the data back together when it is > read. > Deleting the data will delete all variables used to store it. > > Cc: Chasel Chiu <chasel.c...@intel.com> > Cc: Liming Gao <gaolim...@byosoft.com.cn> > Cc: Eric Dong <eric.d...@intel.com> > Cc: Michael Kubacki <michael.kuba...@microsoft.com> > Cc: Isaac Oram <isaac.w.o...@intel.com> > Signed-off-by: Nate DeSimone <nathaniel.l.desim...@intel.com> > > Nate DeSimone (4): > MinPlatformPkg: Add VariableReadLib > MinPlatformPkg: Add VariableWriteLib > MinPlatformPkg: Add LargeVariableReadLib > MinPlatformPkg: Add LargeVariableWriteLib > > .../Include/Dsc/CoreCommonLib.dsc | 6 +- > .../MinPlatformPkg/Include/Dsc/CoreDxeLib.dsc | 12 +- > .../MinPlatformPkg/Include/Dsc/CorePeiLib.dsc | 9 +- > .../Include/Library/LargeVariableReadLib.h | 61 +++ > .../Include/Library/LargeVariableWriteLib.h | 69 +++ > .../Include/Library/VariableReadLib.h | 94 ++++ > .../Include/Library/VariableWriteLib.h | 138 ++++++ > .../BaseLargeVariableReadLib.inf | 51 ++ > .../BaseLargeVariableWriteLib.inf | 51 ++ > .../LargeVariableCommon.h | 47 ++ > .../LargeVariableReadLib.c | 176 +++++++ > .../LargeVariableWriteLib.c | 450 ++++++++++++++++++ > .../DxeRuntimeVariableReadLib.c | 117 +++++ > .../DxeRuntimeVariableReadLib.inf | 41 ++ > .../DxeRuntimeVariableWriteLib.c | 265 +++++++++++ > .../DxeRuntimeVariableWriteLib.inf | 49 ++ > .../PeiVariableReadLib/PeiVariableReadLib.c | 155 ++++++ > .../PeiVariableReadLib/PeiVariableReadLib.inf | 42 ++ > .../SmmVariableReadCommon.c | 116 +++++ > .../StandaloneMmVariableReadLib.inf | 50 ++ > .../StandaloneMmVariableReadLibConstructor.c | 51 ++ > .../TraditionalMmVariableReadLib.inf | 49 ++ > .../TraditionalMmVariableReadLibConstructor.c | 51 ++ > .../SmmVariableWriteCommon.c | 171 +++++++ > .../StandaloneMmVariableWriteLib.inf | 45 ++ > .../StandaloneMmVariableWriteLibConstructor.c | 51 ++ > .../TraditionalMmVariableWriteLib.inf | 44 ++ > ...TraditionalMmVariableWriteLibConstructor.c | 51 ++ > .../Intel/MinPlatformPkg/MinPlatformPkg.dsc | 4 +- > 29 files changed, 2506 insertions(+), 10 deletions(-) create mode 100644 > Platform/Intel/MinPlatformPkg/Include/Library/LargeVariableReadLib.h > create mode 100644 > Platform/Intel/MinPlatformPkg/Include/Library/LargeVariableWriteLib.h > create mode 100644 > Platform/Intel/MinPlatformPkg/Include/Library/VariableReadLib.h > create mode 100644 > Platform/Intel/MinPlatformPkg/Include/Library/VariableWriteLib.h > create mode 100644 > Platform/Intel/MinPlatformPkg/Library/BaseLargeVariableLib/BaseLargeVariabl > eReadLib.inf > create mode 100644 > Platform/Intel/MinPlatformPkg/Library/BaseLargeVariableLib/BaseLargeVariabl > eWriteLib.inf > create mode 100644 > Platform/Intel/MinPlatformPkg/Library/BaseLargeVariableLib/LargeVariableCo > mmon.h > create mode 100644 > Platform/Intel/MinPlatformPkg/Library/BaseLargeVariableLib/LargeVariableRea > dLib.c > create mode 100644 > Platform/Intel/MinPlatformPkg/Library/BaseLargeVariableLib/LargeVariableWri > teLib.c > create mode 100644 > Platform/Intel/MinPlatformPkg/Library/DxeRuntimeVariableReadLib/DxeRuntim > eVariableReadLib.c > create mode 100644 > Platform/Intel/MinPlatformPkg/Library/DxeRuntimeVariableReadLib/DxeRuntim > eVariableReadLib.inf > create mode 100644 > Platform/Intel/MinPlatformPkg/Library/DxeRuntimeVariableWriteLib/DxeRunti > meVariableWriteLib.c > create mode 100644 > Platform/Intel/MinPlatformPkg/Library/DxeRuntimeVariableWriteLib/DxeRunti > meVariableWriteLib.inf > create mode 100644 > Platform/Intel/MinPlatformPkg/Library/PeiVariableReadLib/PeiVariableReadLib. > c > create mode 100644 > Platform/Intel/MinPlatformPkg/Library/PeiVariableReadLib/PeiVariableReadLib. > inf > create mode 100644 > Platform/Intel/MinPlatformPkg/Library/SmmVariableReadLib/SmmVariableRead > Common.c > create mode 100644 > Platform/Intel/MinPlatformPkg/Library/SmmVariableReadLib/StandaloneMmVa > riableReadLib.inf > create mode 100644 > Platform/Intel/MinPlatformPkg/Library/SmmVariableReadLib/StandaloneMmVa > riableReadLibConstructor.c > create mode 100644 > Platform/Intel/MinPlatformPkg/Library/SmmVariableReadLib/TraditionalMmVar > iableReadLib.inf > create mode 100644 > Platform/Intel/MinPlatformPkg/Library/SmmVariableReadLib/TraditionalMmVar > iableReadLibConstructor.c > create mode 100644 > Platform/Intel/MinPlatformPkg/Library/SmmVariableWriteLib/SmmVariableWrit > eCommon.c > create mode 100644 > Platform/Intel/MinPlatformPkg/Library/SmmVariableWriteLib/StandaloneMmVa > riableWriteLib.inf > create mode 100644 > Platform/Intel/MinPlatformPkg/Library/SmmVariableWriteLib/StandaloneMmVa > riableWriteLibConstructor.c > create mode 100644 > Platform/Intel/MinPlatformPkg/Library/SmmVariableWriteLib/TraditionalMmVa > riableWriteLib.inf > create mode 100644 > Platform/Intel/MinPlatformPkg/Library/SmmVariableWriteLib/TraditionalMmVa > riableWriteLibConstructor.c > > -- > 2.27.0.windows.1 -=-=-=-=-=-=-=-=-=-=-=- Groups.io Links: You receive all messages sent to this group. View/Reply Online (#73761): https://edk2.groups.io/g/devel/message/73761 Mute This Topic: https://groups.io/mt/81907531/21656 Group Owner: devel+ow...@edk2.groups.io Unsubscribe: https://edk2.groups.io/g/devel/unsub [arch...@mail-archive.com] -=-=-=-=-=-=-=-=-=-=-=-