summaryrefslogtreecommitdiffstats
path: root/EmulatorPkg/Win
diff options
context:
space:
mode:
authorLiu, Zhiguang <Zhiguang.Liu@intel.com>2022-12-06 13:40:52 +0800
committermergify[bot] <37929162+mergify[bot]@users.noreply.github.com>2022-12-08 10:44:20 +0000
commit22f73b6d2d3dfb70a13a184a2d0d26ed650e6ab9 (patch)
treef0bbf76eb133fbde1b07187f0d68f2bf71c64e87 /EmulatorPkg/Win
parent1c75bf3c21da79b1bc1d50cfc593b57f73f2c560 (diff)
downloadedk2-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.c11
-rw-r--r--EmulatorPkg/Win/Host/WinHost.inf2
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