public inbox for devel@edk2.groups.io
 help / color / mirror / Atom feed
From: "Michael Kubacki" <mikuback@linux.microsoft.com>
To: devel@edk2.groups.io, nathaniel.l.desimone@intel.com
Cc: Chasel Chiu <chasel.chiu@intel.com>,
	Liming Gao <gaoliming@byosoft.com.cn>,
	Eric Dong <eric.dong@intel.com>,
	Michael Kubacki <michael.kubacki@microsoft.com>,
	Isaac Oram <isaac.w.oram@intel.com>
Subject: Re: [edk2-devel] [edk2-platforms] [PATCH v4 0/4] Add Large Variable Libraries
Date: Tue, 6 Apr 2021 21:03:30 -0700	[thread overview]
Message-ID: <b4edec4c-dcde-6537-8283-0e4a28c19951@linux.microsoft.com> (raw)
In-Reply-To: <20210407030426.8075-1-nathaniel.l.desimone@intel.com>

For the series:
Reviewed-by: Michael Kubacki <michael.kubacki@microsoft.com>

On 4/6/2021 8:04 PM, Nate DeSimone wrote:
> 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.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/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
> 

  parent reply	other threads:[~2021-04-07  4:03 UTC|newest]

Thread overview: 8+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-04-07  3:04 [edk2-platforms] [PATCH v4 0/4] Add Large Variable Libraries Nate DeSimone
2021-04-07  3:04 ` [edk2-platforms] [PATCH v4 1/4] MinPlatformPkg: Add VariableReadLib Nate DeSimone
2021-04-07  3:04 ` [edk2-platforms] [PATCH v4 2/4] MinPlatformPkg: Add VariableWriteLib Nate DeSimone
2021-04-07  3:04 ` [edk2-platforms] [PATCH v4 3/4] MinPlatformPkg: Add LargeVariableReadLib Nate DeSimone
2021-04-07  3:04 ` [edk2-platforms] [PATCH v4 4/4] MinPlatformPkg: Add LargeVariableWriteLib Nate DeSimone
2021-04-07  4:03 ` Michael Kubacki [this message]
2021-04-07  5:00 ` [edk2-platforms] [PATCH v4 0/4] Add Large Variable Libraries Chiu, Chasel
2021-04-07 19:15   ` Nate DeSimone

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-list from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=b4edec4c-dcde-6537-8283-0e4a28c19951@linux.microsoft.com \
    --to=devel@edk2.groups.io \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox