Acidanthera UEFI Development Kit based on EDK II edk2-stable202311
Go to file
Laszlo Ersek 0f87c53d0d ArmPlatformPkg/NorFlashDxe: initialize varstore headers eagerly
The lazy initialization of the varstore FVB makes no longer sense at this
point:

- "mNorFlashInstanceTemplate.Initialize" is NULL;

- in NorFlashCreateInstance(), we only set Instance->Initialize to
  non-NULL -- namely NorFlashFvbInitialize() -- if the FVB stands for the
  variable store (see "ContainVariableStorage" / "SupportFvb");

- we call Instance->Initialize() from three places:

  - from NorFlashWriteSingleBlock(), which is too late for the variable
    read service ("variable write" depends on "variable read");

  - from InitializeFvAndVariableStoreHeaders(), but that is only reachable
    from NorFlashFvbInitialize(), i.e. recursively from
    Instance->Initialize() itself;

  - and from FvbRead(), which is never called by the variable driver, only
    by the FTW driver. However, the variable driver may read (not write)
    the memory-mapped varstore flash chip before the FTW driver is
    dispatched.

Therefore the lazy initialization is both superfluous and insufficient.
Initialize the varstore headers eagerly, before we install the FVB
protocol interface.

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>
2018-04-12 21:24:32 +02:00
AppPkg AppPkg/WebServer: Fix build failure. 2017-09-14 08:55:09 +08:00
ArmPkg ArmPkg/CpuDxe: order CpuDxe after ArmGicDxe via protocol depex 2018-04-12 21:24:29 +02:00
ArmPlatformPkg ArmPlatformPkg/NorFlashDxe: initialize varstore headers eagerly 2018-04-12 21:24:32 +02:00
ArmVirtPkg ArmVirtPkg/PlatformBootManagerLib: return to "-kernel before boot devices" 2018-03-16 19:57:32 +01:00
BaseTools BaseTools: fix --genfds-multi-thread generate makefile issue 2018-04-11 14:47:55 +08:00
BeagleBoardPkg BeagleBoardPkg: drop unused PcdCacheEnabled dependency 2018-02-09 09:40:11 +00:00
Conf EDK II: Add .gitignore 2014-10-14 16:08:15 +00:00
CorebootModulePkg CorebootModulePkg/CbSupportDxe: Remove duplicated IO Space addition 2017-11-16 10:52:00 +08:00
CorebootPayloadPkg CorebootPayloadPkg: Conditionally add DebugAgentLib for DXE drivers 2018-03-30 07:28:18 +08:00
CryptoPkg CryptoPkg: Update package version to 0.98 2018-01-23 08:56:27 +08:00
DuetPkg DuetPkg: Add SafeIntLib and BmpSupportLib to DSC files 2018-02-11 16:06:31 -08:00
EdkCompatibilityPkg edk2: Move License.txt file to root 2017-08-03 11:02:17 -07:00
EdkShellBinPkg edk2: Move License.txt file to root 2017-08-03 11:02:17 -07:00
EdkShellPkg edk2: Move License.txt file to root 2017-08-03 11:02:17 -07:00
EmbeddedPkg EmbeddedPkg: introduce NvVarStoreFormattedLib 2018-04-12 21:24:30 +02:00
EmulatorPkg EmulatorPkg: Undefine CR3 macro in Host.h 2018-02-27 18:33:51 +08:00
FatBinPkg FatBinPkg: New EnhancedFatDxe binaries for IA32, X64, EBC and IPF 2017-12-22 09:40:18 +08:00
FatPkg edk2: Move License.txt file to root 2017-08-03 11:02:17 -07:00
IntelFrameworkModulePkg IntelFrameworkModulePkg/GenericBdsLib: Remove the useless Perf codes 2018-02-12 11:36:15 +08:00
IntelFrameworkPkg IntelFrameworkPkg/FrameworkUefiLib: Sync with MdePkg/UefiLib 2018-02-11 15:10:17 -08:00
IntelFsp2Pkg IntelFsp2Pkg-Tools: GenCfgOpt.py shouldn't include specific UPD name 2017-11-08 20:44:29 +08:00
IntelFsp2WrapperPkg IntelFsp2WrapperPkg: Update BaseFspWrapperApiLib to pass XCODE5 build 2018-01-18 15:39:54 +08:00
IntelFspPkg edk2: Move License.txt file to root 2017-08-03 11:02:17 -07:00
IntelFspWrapperPkg edk2: Move License.txt file to root 2017-08-03 11:02:17 -07:00
IntelSiliconPkg IntelSiliconPkg/Vtd: Add more debug info. 2018-03-20 08:51:54 +08:00
MdeModulePkg MdeModulePkg/Gcd: Suppress incorrect compiler/analyzer warnings 2018-04-08 16:39:49 +08:00
MdePkg MdePkg/BaseLib: add PatchInstructionX86() 2018-04-04 16:43:58 +02:00
NetworkPkg NetworkPkg/TlsAuthConfigDxe: preserve TlsCaCertificate variable attributes 2018-03-28 13:07:36 +02:00
Nt32Pkg Nt32Pkg/Nt32Pkg.fdf: Increase the size of FLASH Device. 2018-02-08 08:23:26 +08:00
Omap35xxPkg Omap35xxPkg/InterruptDxe: replace CPU Arch Protocol depex with notify 2018-04-12 21:24:12 +02:00
OptionRomPkg edk2: Move License.txt file to root 2017-08-03 11:02:17 -07:00
OvmfPkg OvmfPkg: remove BLOCK_MMIO_PROTOCOL and BlockMmioToBlockIoDxe 2018-04-10 21:39:40 +02:00
PcAtChipsetPkg PcAtChipsetPkg PeiAcpiTimerLib: Add the missing DebugLib header file 2018-02-07 09:16:15 +08:00
QuarkPlatformPkg QuarkPlatformPkg: remove TrEE reference. 2018-03-16 14:19:43 +08:00
QuarkSocPkg QuarkSocPkg/QNCSmmDispatcher: Fix use after free issue #2 2017-08-16 19:42:17 -07:00
SecurityPkg SecurityPkg Tpm12CommandLib: Fix TPM12 GetCapability response error 2018-03-21 16:43:35 +08:00
ShellBinPkg ShellBinPkg: Update ReadMe.txt 2018-03-19 14:39:02 +08:00
ShellPkg ShellPkg/UefiHandleParsingLib: remove TrEE reference. 2018-03-16 14:19:42 +08:00
SignedCapsulePkg SignedCapsulePkg/SystemFirmwareReportDxe: Pass thru on same handle 2018-04-11 10:08:36 -07:00
SourceLevelDebugPkg SourceLevelDebugPkg DebugCommUsb3: Return error when debug cap is reset 2018-03-20 20:23:53 +08:00
StdLib StdLib/BsdSocketLib: Remove unused variables 2017-11-13 07:39:06 -08:00
StdLibPrivateInternalFiles edk2: Move License.txt file to root 2017-08-03 11:02:17 -07:00
UefiCpuPkg UefiCpuPkg/PiSmmCpuDxeSmm: use mnemonics for FXSAVE(64)/FXRSTOR(64) 2018-04-04 16:44:27 +02:00
UnixPkg
Vlv2DeviceRefCodePkg edk2: Move License.txt file to root 2017-08-03 11:02:17 -07:00
Vlv2TbltDevicePkg Vlv2TbltDevicePkg: Sync FLASH libraries from UDK2017 branch 2018-03-28 09:00:49 -07:00
.gitignore edk2: Add .DS_Store to .gitignore for macOS 2017-05-19 15:14:34 -07:00
.gitmodules CryptoPkg: Adding OpenSSL as one submodule of EDKII repo 2018-01-18 14:06:15 +08:00
BuildNotes2.txt BaseTools: Updated BuildNotes URLs 2016-03-25 09:46:44 +08:00
Contributions.txt edk2: Fix typo in Contributions.txt 2017-08-16 17:50:44 +08:00
License.txt edk2: Move License.txt file to root 2017-08-03 11:02:17 -07:00
Maintainers.txt Maintainers.txt: Add StandaloneMmPkg and maintainers 2018-03-21 01:13:40 +00:00
Readme.md edk2: Add Readme.md to root of edk2 repository 2017-08-03 11:02:25 -07:00
StandaloneMmPkg Maintainers.txt: Add StandaloneMmPkg and maintainers 2018-03-21 01:13:40 +00:00
edksetup.bat BaseTools: suppress usage instructions with rebuild options 2017-07-04 10:16:13 +08:00
edksetup.sh BaseTools/edksetup.sh: fix invalid test for current working directory 2017-08-10 12:54:58 +08:00

Readme.md

EDK II Project

A modern, feature-rich, cross-platform firmware development environment for the UEFI and PI specifications from www.uefi.org.

Contributions to the EDK II open source project are covered by the TianoCore Contribution Agreement 1.1

The majority of the content in the EDK II open source project uses a BSD 2-Clause License. The EDK II open source project contains the following components that are covered by additional licenses:

The EDK II Project is composed of packages. The maintainers for each package are listed in Maintainers.txt.

Resources