diff options
author | Liu, Zhiguang <Zhiguang.Liu@intel.com> | 2022-12-06 13:40:52 +0800 |
---|---|---|
committer | mergify[bot] <37929162+mergify[bot]@users.noreply.github.com> | 2022-12-08 10:44:20 +0000 |
commit | 22f73b6d2d3dfb70a13a184a2d0d26ed650e6ab9 (patch) | |
tree | f0bbf76eb133fbde1b07187f0d68f2bf71c64e87 /EmulatorPkg/Win | |
parent | 1c75bf3c21da79b1bc1d50cfc593b57f73f2c560 (diff) | |
download | edk2-22f73b6d2d3dfb70a13a184a2d0d26ed650e6ab9.tar.gz edk2-22f73b6d2d3dfb70a13a184a2d0d26ed650e6ab9.tar.bz2 edk2-22f73b6d2d3dfb70a13a184a2d0d26ed650e6ab9.zip |
EmulatorPkg: Add persistent memory in EmuThunkPpi
The persistent memory is for PEIM to use, and won't lose during cold
or warm reset. PcdPersistentMemorySize is only used by WinHost.c,
other modules can check the persistent memory size using the field
PersistentMemorySize.
Cc: Andrew Fish <afish@apple.com>
Reviewed-by: Ray Ni <ray.ni@intel.com>
Signed-off-by: Zhiguang Liu <zhiguang.liu@intel.com>
Diffstat (limited to 'EmulatorPkg/Win')
-rw-r--r-- | EmulatorPkg/Win/Host/WinHost.c | 11 | ||||
-rw-r--r-- | EmulatorPkg/Win/Host/WinHost.inf | 2 |
2 files changed, 11 insertions, 2 deletions
diff --git a/EmulatorPkg/Win/Host/WinHost.c b/EmulatorPkg/Win/Host/WinHost.c index 084cd4cbd7..19199c648c 100644 --- a/EmulatorPkg/Win/Host/WinHost.c +++ b/EmulatorPkg/Win/Host/WinHost.c @@ -450,6 +450,7 @@ Returns: UINTN SystemAffinityMask;
INT32 LowBit;
UINTN ResetJumpCode;
+ EMU_THUNK_PPI *SecEmuThunkPpi;
//
// Enable the privilege so that RTC driver can successfully run SetTime()
@@ -491,7 +492,15 @@ Returns: //
// PPIs pased into PEI_CORE
//
- AddThunkPpi (EFI_PEI_PPI_DESCRIPTOR_PPI, &gEmuThunkPpiGuid, &mSecEmuThunkPpi);
+ SecEmuThunkPpi = AllocateZeroPool (sizeof (EMU_THUNK_PPI) + FixedPcdGet32 (PcdPersistentMemorySize));
+ if (SecEmuThunkPpi == NULL) {
+ SecPrint ("ERROR : Can not allocate memory for SecEmuThunkPpi. Exiting.\n");
+ exit (1);
+ }
+
+ CopyMem (SecEmuThunkPpi, &mSecEmuThunkPpi, sizeof (EMU_THUNK_PPI));
+ SecEmuThunkPpi->PersistentMemorySize = FixedPcdGet32 (PcdPersistentMemorySize);
+ AddThunkPpi (EFI_PEI_PPI_DESCRIPTOR_PPI, &gEmuThunkPpiGuid, SecEmuThunkPpi);
AddThunkPpi (EFI_PEI_PPI_DESCRIPTOR_PPI, &gEfiPeiReset2PpiGuid, &mEmuReset2Ppi);
//
diff --git a/EmulatorPkg/Win/Host/WinHost.inf b/EmulatorPkg/Win/Host/WinHost.inf index b61901fae2..4dac6e033e 100644 --- a/EmulatorPkg/Win/Host/WinHost.inf +++ b/EmulatorPkg/Win/Host/WinHost.inf @@ -74,7 +74,7 @@ [Pcd]
gEfiMdeModulePkgTokenSpaceGuid.PcdInitValueInTempStack
-
+ gEmulatorPkgTokenSpaceGuid.PcdPersistentMemorySize
gEmulatorPkgTokenSpaceGuid.PcdEmuBootMode
gEmulatorPkgTokenSpaceGuid.PcdEmuFirmwareVolume
gEmulatorPkgTokenSpaceGuid.PcdEmuMemorySize
|