mirror of
https://git.proxmox.com/git/mirror_edk2
synced 2025-12-10 05:07:28 +00:00
The RestoreLockBox() and RestoreAllLockBoxInPlace() functions handle the case when EFI_PEI_SMM_COMMUNICATION_PPI.Communicate() returns EFI_NOT_STARTED: they access the SMRAM directly, for restoring LockBox data. This occurs if a PEIM needs to restore LockBox data *before* the SMBASE is relocated and the SMI handler is installed for all processors. One such PEIM is UefiCpuPkg/Universal/Acpi/S3Resume2Pei. On the S3 resume path, in function S3RestoreConfig2(), LockBox data are restored *before* the SmmRestoreCpu() function of UefiCpuPkg/PiSmmCpuDxeSmm is called via SmmS3ResumeState->SmmS3ResumeEntryPoint. (The latter SmmRestoreCpu() function is responsible for the SMBASE relocation.) If a platform knows that its PEIMs restore LockBox data *only* before SMBASE relocation -- e.g., due to S3Resume2Pei being the platform's only SmmLockBoxPeiLib client --, then the platform might not want to include "UefiCpuPkg/PiSmmCommunication/PiSmmCommunicationPei.inf" at all (hence not provide EFI_PEI_SMM_COMMUNICATION_PPI) -- because all of those restores would be serviced by direct SMRAM access anyway. Currently the absence of EFI_PEI_SMM_COMMUNICATION_PPI is not supported by SmmLockBoxPeiLib, but it's not hard to implement. Handle it the same as when EFI_PEI_SMM_COMMUNICATION_PPI.Communicate() returns EFI_NOT_STARTED: restore LockBox data directly from SMRAM. Suggested-by: Jiewen Yao <jiewen.yao@intel.com> Cc: Jiewen Yao <jiewen.yao@intel.com> Cc: Michael Kinney <michael.d.kinney@intel.com> Cc: Jordan Justen <jordan.l.justen@intel.com> Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Laszlo Ersek <lersek@redhat.com> Reviewed-by: Jiewen Yao <jiewen.yao@intel.com> git-svn-id: https://svn.code.sf.net/p/edk2/code/trunk/edk2@18823 6f19259b-4bc3-4df7-8a09-765794883524 |
||
|---|---|---|
| AppPkg | ||
| ArmPkg | ||
| ArmPlatformPkg | ||
| ArmVirtPkg | ||
| BaseTools | ||
| BeagleBoardPkg | ||
| Conf | ||
| CorebootModulePkg | ||
| CorebootPayloadPkg | ||
| CryptoPkg | ||
| DuetPkg | ||
| EdkCompatibilityPkg | ||
| EdkShellBinPkg | ||
| EdkShellPkg | ||
| EmbeddedPkg | ||
| EmulatorPkg | ||
| FatBinPkg | ||
| IntelFrameworkModulePkg | ||
| IntelFrameworkPkg | ||
| IntelFspPkg | ||
| IntelFspWrapperPkg | ||
| MdeModulePkg | ||
| MdePkg | ||
| NetworkPkg | ||
| Nt32Pkg | ||
| Omap35xxPkg | ||
| OptionRomPkg | ||
| OvmfPkg | ||
| PcAtChipsetPkg | ||
| PerformancePkg | ||
| SecurityPkg | ||
| ShellBinPkg | ||
| ShellPkg | ||
| SourceLevelDebugPkg | ||
| StdLib | ||
| StdLibPrivateInternalFiles | ||
| UefiCpuPkg | ||
| UnixPkg | ||
| Vlv2DeviceRefCodePkg | ||
| Vlv2TbltDevicePkg | ||
| .gitignore | ||
| BuildNotes2.txt | ||
| Edk2Setup.bat | ||
| edksetup.bat | ||
| edksetup.sh | ||
| Maintainers.txt | ||