EmbeddedPkg: introduce NvVarStoreFormattedLib
authorLaszlo Ersek <lersek@redhat.com>
Wed, 11 Apr 2018 18:58:58 +0000 (20:58 +0200)
committerLaszlo Ersek <lersek@redhat.com>
Thu, 12 Apr 2018 19:24:30 +0000 (21:24 +0200)
commit7ab26d51808bd4ffab2510091b062a91cf6a8c81
treeed68a85260479a165de7312dcccc49310dd0134f
parentbacfd6ed8cea295e2d955d13bcd372499a4c6806
EmbeddedPkg: introduce NvVarStoreFormattedLib

Some platforms don't format a variable store template at build time;
instead they format the non-volatile varstore flash chip during boot,
dynamically. Introduce NvVarStoreFormattedLib to enable such platforms to
delay the "variable read" service drivers until the platform specific
module(s) report that the variable store has been formatted.

The platform-specific module that performs the formatting during startup
is usually an FVB or MM FVB driver. Under the proposed scheme, it becomes
responsible for installing gEdkiiNvVarStoreFormattedGuid with a NULL
interface in the protocol database. In turn, the platform DSC will hook
NvVarStoreFormattedLib into the variable service driver, to make the
latter wait for the FVB driver. Platforms that need not delay the variable
service driver like this may still use the same FVB driver;
gEdkiiNvVarStoreFormattedGuid will simply be ignored.

Cc: Ard Biesheuvel <ard.biesheuvel@linaro.org>
Cc: Leif Lindholm <leif.lindholm@linaro.org>
Cc: Steve Capper <steve.capper@linaro.org>
Cc: Supreeth Venkatesh <Supreeth.Venkatesh@arm.com>
Contributed-under: TianoCore Contribution Agreement 1.1
Signed-off-by: Laszlo Ersek <lersek@redhat.com>
Reviewed-by: Ard Biesheuvel <ard.biesheuvel@linaro.org>
Tested-by: Steve Capper <steve.capper@linaro.org>
Reviewed-by: Leif Lindholm <leif.lindholm@linaro.org>
EmbeddedPkg/EmbeddedPkg.dec
EmbeddedPkg/Include/Guid/NvVarStoreFormatted.h [new file with mode: 0644]
EmbeddedPkg/Library/NvVarStoreFormattedLib/NvVarStoreFormattedLib.c [new file with mode: 0644]
EmbeddedPkg/Library/NvVarStoreFormattedLib/NvVarStoreFormattedLib.inf [new file with mode: 0644]