[edk2-devel] [edk2-platforms] [PATCH v4 0/4] Add Large Variable Libraries

Nate DeSimone nathaniel.l.desimone at intel.com
Wed Apr 7 19:15:38 UTC 2021


Hi Chasel,

Good catch! I'll added the new LibraryClasses to MinPlatformPkg.dec in patch series V5.

Thanks,
Nate

-----Original Message-----
From: Chiu, Chasel <chasel.chiu at intel.com> 
Sent: Tuesday, April 6, 2021 10:01 PM
To: Desimone, Nathaniel L <nathaniel.l.desimone at intel.com>; devel at edk2.groups.io
Cc: Liming Gao <gaoliming at byosoft.com.cn>; Dong, Eric <eric.dong at intel.com>; Michael Kubacki <michael.kubacki at microsoft.com>; Oram, Isaac W <isaac.w.oram at intel.com>
Subject: RE: [edk2-platforms] [PATCH v4 0/4] Add Large Variable Libraries


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.desimone at intel.com>
> Sent: Wednesday, April 7, 2021 11:04 AM
> To: devel at edk2.groups.io
> Cc: Chiu, Chasel <chasel.chiu at intel.com>; Liming Gao 
> <gaoliming at byosoft.com.cn>; Dong, Eric <eric.dong at intel.com>; Michael 
> Kubacki <michael.kubacki at microsoft.com>; Oram, Isaac W 
> <isaac.w.oram at 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.chiu at intel.com>
> Cc: Liming Gao <gaoliming at byosoft.com.cn>
> Cc: Eric Dong <eric.dong at intel.com>
> Cc: Michael Kubacki <michael.kubacki at microsoft.com>
> Cc: Isaac Oram <isaac.w.oram at intel.com>
> Signed-off-by: Nate DeSimone <nathaniel.l.desimone at 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/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 (#73794): https://edk2.groups.io/g/devel/message/73794
Mute This Topic: https://groups.io/mt/81907531/1813853
Group Owner: devel+owner at edk2.groups.io
Unsubscribe: https://edk2.groups.io/g/devel/unsub [edk2-devel-archive at redhat.com]
-=-=-=-=-=-=-=-=-=-=-=-






More information about the edk2-devel-archive mailing list