On 03/27/17 10:05, Jordan Justen wrote:
> web: https://github.com/jljusten/edk2/tree/pei-vars-v1
> 
> git: https://github.com/jljusten/edk2.git pei-vars-v1
> 
> This series moves flash detection into PEI to allow the PEI variable
> access drivers to run. If flash is writable, the PCDs are set to point
> at the flash memory. If flash is not writable, the PCDs are set to
> point at a memory buffer.

Can you please state the use case for the latter option? That is, when
the PCDs are set to point at the memory buffer.

In that case, the memory buffer is guaranteed to be empty (modulo
internal formatting that PlatformPei would do just-in-time), unless the
VM has just been rebooted within the same QEMU instance.

In other words, clients of the r/o variable2 PPI will get false results,
most of the time -- if I understand correctly. After a fresh boot (which
is most of the boots), no variable will be found in the PEI phase, even
if the \NvVars file contains it, and the variable services in DXE will
later find it.

... I'm not sure if my understanding above is correct, but if it is,
then I think this feature only contributes to the confusing nature of
the memory-emulated variables.

Thanks
Laszlo

> 
> I tested KVM with ROM and writable flash, with S3 sleep/resume. I did
> not test SMM.
> 
> Jordan Justen (10):
>   OvmfPkg/build.sh: Add support for --disable-flash switch
>   OvmfPkg QemuFlash: Make QemuFlash.* Base class safe
>   OvmfPkg QemuFlash: Make QemuFlashDetected external
>   OvmfPkg QemuFlash: Add DetectFlashBaseLib.inf 'NULL' library
>   OvmfPkg PlatformPei: Detect and set PcdOvmfFlashVariablesEnable
>   OvmfPkg/EmuVariableFvbRuntimeDxe: Use PcdOvmfFlashVariablesEnable
>   OvmfPkg PlatformPei: Set flash variable PCDs
>   OvmfPkg PlatformPei: Initialize memory based variable store buffer
>   OvmfPkg: Enable PEI variable access
>   OvmfPkg QemuFlashFvbServicesRuntimeDxe: Cleanup init now done in PEI
> 
> Laszlo Ersek (2):
>   OvmfPkg: resolve PcdLib for all PEIMs individually
>   OvmfPkg: resolve PcdLib for PEIMs to PeiPcdLib by default
> 
>  OvmfPkg/EmuVariableFvbRuntimeDxe/Fvb.c             |   4 +-
>  OvmfPkg/EmuVariableFvbRuntimeDxe/Fvb.inf           |   3 +-
>  OvmfPkg/OvmfPkgIa32.dsc                            |  27 +-
>  OvmfPkg/OvmfPkgIa32.fdf                            |   5 +-
>  OvmfPkg/OvmfPkgIa32X64.dsc                         |  27 +-
>  OvmfPkg/OvmfPkgIa32X64.fdf                         |   5 +-
>  OvmfPkg/OvmfPkgX64.dsc                             |  27 +-
>  OvmfPkg/OvmfPkgX64.fdf                             |   5 +-
>  OvmfPkg/PlatformPei/Platform.c                     |  34 +--
>  OvmfPkg/PlatformPei/Platform.h                     |   7 +-
>  OvmfPkg/PlatformPei/PlatformPei.inf                |  11 +-
>  OvmfPkg/PlatformPei/Vars.c                         | 283 
> +++++++++++++++++++++
>  .../DetectFlashNullLib.c                           |  41 +++
>  .../DetectFlashNullLib.inf                         |  60 +++++
>  .../FvbServicesRuntimeDxe.inf                      |   4 -
>  .../FvbServicesSmm.inf                             |   4 -
>  .../FwBlockService.c                               |  28 +-
>  OvmfPkg/QemuFlashFvbServicesRuntimeDxe/QemuFlash.c |  59 +++--
>  OvmfPkg/QemuFlashFvbServicesRuntimeDxe/QemuFlash.h |  30 ++-
>  OvmfPkg/build.sh                                   |  10 +-
>  20 files changed, 530 insertions(+), 144 deletions(-)
>  create mode 100644 OvmfPkg/PlatformPei/Vars.c
>  create mode 100644 
> OvmfPkg/QemuFlashFvbServicesRuntimeDxe/DetectFlashNullLib.c
>  create mode 100644 
> OvmfPkg/QemuFlashFvbServicesRuntimeDxe/DetectFlashNullLib.inf
> 

_______________________________________________
edk2-devel mailing list
edk2-devel@lists.01.org
https://lists.01.org/mailman/listinfo/edk2-devel

Reply via email to