Series Reviewed-by: Isaac Oram <isaac.w.oram@intel.com>
-----Original Message-----
From: Chiu, Chasel <chasel.chiu@intel.com>
Sent: Wednesday, April 7, 2021 11:28 PM
To: Desimone, Nathaniel L <nathaniel.l.desimone@intel.com>; devel@edk2.groups.io
Cc: Liming Gao <gaoliming@byosoft.com.cn>; Dong, Eric <eric.dong@intel.com>; Michael Kubacki <michael.kubacki@microsoft.com>; Oram, Isaac W <isaac.w.oram@intel.com>
Subject: RE: [edk2-platforms] [PATCH v5 0/4] Add Large Variable Libraries
Reviewed-by: Chasel Chiu <chasel.chiu@intel.com>
> -----Original Message-----
> From: Nate DeSimone <nathaniel.l.desimone@intel.com>
> Sent: Thursday, April 8, 2021 3:17 AM
> To: devel@edk2.groups.io
> Cc: Chiu, Chasel <chasel.chiu@intel.com>; Liming Gao
> <gaoliming@byosoft.com.cn>; Dong, Eric <eric.dong@intel.com>; Michael
> Kubacki <michael.kubacki@microsoft.com>; Oram, Isaac W
> <isaac.w.oram@intel.com>
> Subject: [edk2-platforms] [PATCH v5 0/4] Add Large Variable Libraries
>
> Changes from V4:
> - Added LibraryClass interface definitions to
> MinPlatformPkg.dec
>
> 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.chiu@intel.com>
> Cc: Liming Gao <gaoliming@byosoft.com.cn>
> Cc: Eric Dong <eric.dong@intel.com>
> Cc: Michael Kubacki <michael.kubacki@microsoft.com>
> Cc: Isaac Oram <isaac.w.oram@intel.com>
> Signed-off-by: Nate DeSimone <nathaniel.l.desimone@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.dec | 5 +
> .../Intel/MinPlatformPkg/MinPlatformPkg.dsc | 4 +-
> 30 files changed, 2511 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/BaseLargeVa
> riabl
> eReadLib.inf
> create mode 100644
> Platform/Intel/MinPlatformPkg/Library/BaseLargeVariableLib/BaseLargeVa
> riabl
> eWriteLib.inf
> create mode 100644
> Platform/Intel/MinPlatformPkg/Library/BaseLargeVariableLib/LargeVariab
> leCo
> mmon.h
> create mode 100644
> Platform/Intel/MinPlatformPkg/Library/BaseLargeVariableLib/LargeVariab
> leRea
> dLib.c
> create mode 100644
> Platform/Intel/MinPlatformPkg/Library/BaseLargeVariableLib/LargeVariab
> leWri
> teLib.c
> create mode 100644
> Platform/Intel/MinPlatformPkg/Library/DxeRuntimeVariableReadLib/DxeRun
> tim
> eVariableReadLib.c
> create mode 100644
> Platform/Intel/MinPlatformPkg/Library/DxeRuntimeVariableReadLib/DxeRun
> tim
> eVariableReadLib.inf
> create mode 100644
> Platform/Intel/MinPlatformPkg/Library/DxeRuntimeVariableWriteLib/DxeRu
> nti
> meVariableWriteLib.c
> create mode 100644
> Platform/Intel/MinPlatformPkg/Library/DxeRuntimeVariableWriteLib/DxeRu
> nti
> 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/SmmVariableRe
> ad
> Common.c
> create mode 100644
> Platform/Intel/MinPlatformPkg/Library/SmmVariableReadLib/StandaloneMmV
> a
> riableReadLib.inf
> create mode 100644
> Platform/Intel/MinPlatformPkg/Library/SmmVariableReadLib/StandaloneMmV
> a
> riableReadLibConstructor.c
> create mode 100644
> Platform/Intel/MinPlatformPkg/Library/SmmVariableReadLib/TraditionalMm
> Var
> iableReadLib.inf
> create mode 100644
> Platform/Intel/MinPlatformPkg/Library/SmmVariableReadLib/TraditionalMm
> Var
> iableReadLibConstructor.c
> create mode 100644
> Platform/Intel/MinPlatformPkg/Library/SmmVariableWriteLib/SmmVariableW
> rit
> eCommon.c
> create mode 100644
> Platform/Intel/MinPlatformPkg/Library/SmmVariableWriteLib/StandaloneMm
> Va
> riableWriteLib.inf
> create mode 100644
> Platform/Intel/MinPlatformPkg/Library/SmmVariableWriteLib/StandaloneMm
> Va
> riableWriteLibConstructor.c
> create mode 100644
> Platform/Intel/MinPlatformPkg/Library/SmmVariableWriteLib/TraditionalM
> mVa
> riableWriteLib.inf
> create mode 100644
> Platform/Intel/MinPlatformPkg/Library/SmmVariableWriteLib/TraditionalM
> mVa
> riableWriteLibConstructor.c
>
> --
> 2.27.0.windows.1
-=-=-=-=-=-=-=-=-=-=-=-
Groups.io Links: You receive all messages sent to this group.
View/Reply Online (#73872): https://edk2.groups.io/g/devel/message/73872
Mute This Topic: https://groups.io/mt/81924583/1787277
Group Owner: devel+owner@edk2.groups.io
Unsubscribe: https://edk2.groups.io/g/devel/unsub [importer@patchew.org]
-=-=-=-=-=-=-=-=-=-=-=-