The series has been pushed as 8c62040~..c1d10aa

Thanks,
Nate

-----Original Message-----
From: devel@edk2.groups.io <devel@edk2.groups.io> On Behalf Of Nate DeSimone
Sent: Wednesday, April 7, 2021 12:17 PM
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-devel] [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.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.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/BaseLargeVariableReadLib.inf
 create mode 100644 
Platform/Intel/MinPlatformPkg/Library/BaseLargeVariableLib/BaseLargeVariableWriteLib.inf
 create mode 100644 
Platform/Intel/MinPlatformPkg/Library/BaseLargeVariableLib/LargeVariableCommon.h
 create mode 100644 
Platform/Intel/MinPlatformPkg/Library/BaseLargeVariableLib/LargeVariableReadLib.c
 create mode 100644 
Platform/Intel/MinPlatformPkg/Library/BaseLargeVariableLib/LargeVariableWriteLib.c
 create mode 100644 
Platform/Intel/MinPlatformPkg/Library/DxeRuntimeVariableReadLib/DxeRuntimeVariableReadLib.c
 create mode 100644 
Platform/Intel/MinPlatformPkg/Library/DxeRuntimeVariableReadLib/DxeRuntimeVariableReadLib.inf
 create mode 100644 
Platform/Intel/MinPlatformPkg/Library/DxeRuntimeVariableWriteLib/DxeRuntimeVariableWriteLib.c
 create mode 100644 
Platform/Intel/MinPlatformPkg/Library/DxeRuntimeVariableWriteLib/DxeRuntimeVariableWriteLib.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/SmmVariableReadCommon.c
 create mode 100644 
Platform/Intel/MinPlatformPkg/Library/SmmVariableReadLib/StandaloneMmVariableReadLib.inf
 create mode 100644 
Platform/Intel/MinPlatformPkg/Library/SmmVariableReadLib/StandaloneMmVariableReadLibConstructor.c
 create mode 100644 
Platform/Intel/MinPlatformPkg/Library/SmmVariableReadLib/TraditionalMmVariableReadLib.inf
 create mode 100644 
Platform/Intel/MinPlatformPkg/Library/SmmVariableReadLib/TraditionalMmVariableReadLibConstructor.c
 create mode 100644 
Platform/Intel/MinPlatformPkg/Library/SmmVariableWriteLib/SmmVariableWriteCommon.c
 create mode 100644 
Platform/Intel/MinPlatformPkg/Library/SmmVariableWriteLib/StandaloneMmVariableWriteLib.inf
 create mode 100644 
Platform/Intel/MinPlatformPkg/Library/SmmVariableWriteLib/StandaloneMmVariableWriteLibConstructor.c
 create mode 100644 
Platform/Intel/MinPlatformPkg/Library/SmmVariableWriteLib/TraditionalMmVariableWriteLib.inf
 create mode 100644 
Platform/Intel/MinPlatformPkg/Library/SmmVariableWriteLib/TraditionalMmVariableWriteLibConstructor.c

--
2.27.0.windows.1








-=-=-=-=-=-=-=-=-=-=-=-
Groups.io Links: You receive all messages sent to this group.
View/Reply Online (#73913): https://edk2.groups.io/g/devel/message/73913
Mute This Topic: https://groups.io/mt/81924583/21656
Group Owner: devel+ow...@edk2.groups.io
Unsubscribe: https://edk2.groups.io/g/devel/unsub [arch...@mail-archive.com]
-=-=-=-=-=-=-=-=-=-=-=-


Reply via email to