This driver (from "MdeModulePkg/Universal/Acpi/BootScriptExecutorDxe/BootScriptExecutorDxe.inf") is first loaded normally during DXE. When the EFI_DXE_SMM_READY_TO_LOCK_PROTOCOL is installed by any DXE driver (purely as a form of notification), the driver reloads itself to reserved memory.
During S3 Resume / PEI, the driver image is executed from there. In order to access the boot script saved during S3 Suspend, LockBox access is needed. The boot script is transferred internal to PiDxeS3BootScriptLib: Both S3SaveStateDxe and BootScriptExecutorDxe are statically linked against PiDxeS3BootScriptLib. Whichever is loaded first (during normal boot, in the DXE phase), allocates the root storage for the script. The address is then passed between the PiDxeS3BootScriptLib instances living in the two separate drivers thru the dynamic PcdS3BootScriptTablePrivateDataPtr PCD. Dependencies: BootScriptExecutorDxe gEfiLockBoxProtocolGuid [SmmLockBox] S3BootScriptLib [PiDxeS3BootScriptLib] EFI_SMM_BASE2_PROTOCOL [PiSmmCore] EFI_SMM_ACCESS2_PROTOCOL [EmuSmmDxe] EFI_SMM_CONTROL2_PROTOCOL [EmuSmmDxe] SmbusLib [BaseSmbusLibNull] LockBoxLib [SmmLockBoxDxeLib] EFI_SMM_COMMUNICATION_PROTOCOL [PiSmmCore] EFI_SMM_ACCESS2_PROTOCOL [EmuSmmDxe] EFI_SMM_CONTROL2_PROTOCOL [EmuSmmDxe] gEfiSmmLockBoxCommunicationGuid [SmmLockBox] EFI_SMM_ACCESS2_PROTOCOL [EmuSmmDxe] gEfiSmmSwDispatch2ProtocolGuid [unneeded / EmuSmmDxe] LockBoxLib [SmmLockBoxSmmLib] LockBoxLib [SmmLockBoxDxeLib] EFI_SMM_COMMUNICATION_PROTOCOL [PiSmmCore] EFI_SMM_ACCESS2_PROTOCOL [EmuSmmDxe] EFI_SMM_CONTROL2_PROTOCOL [EmuSmmDxe] gEfiSmmLockBoxCommunicationGuid [SmmLockBox] EFI_SMM_ACCESS2_PROTOCOL [EmuSmmDxe] gEfiSmmSwDispatch2ProtocolGuid [unneeded / EmuSmmDxe] LockBoxLib [SmmLockBoxSmmLib] Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Laszlo Ersek <ler...@redhat.com> --- OvmfPkg/OvmfPkgX64.dsc | 1 + OvmfPkg/OvmfPkgX64.fdf | 1 + 2 files changed, 2 insertions(+) diff --git a/OvmfPkg/OvmfPkgX64.dsc b/OvmfPkg/OvmfPkgX64.dsc index 3faccae..afbff81 100644 --- a/OvmfPkg/OvmfPkgX64.dsc +++ b/OvmfPkg/OvmfPkgX64.dsc @@ -532,10 +532,11 @@ MdeModulePkg/Universal/Acpi/AcpiTableDxe/AcpiTableDxe.inf OvmfPkg/AcpiPlatformDxe/AcpiPlatformDxe.inf OvmfPkg/AcpiTables/AcpiTables.inf OvmfPkg/AcpiS3SaveDxe/AcpiS3SaveDxe.inf MdeModulePkg/Universal/Acpi/S3SaveStateDxe/S3SaveStateDxe.inf + MdeModulePkg/Universal/Acpi/BootScriptExecutorDxe/BootScriptExecutorDxe.inf # # Network Support # MdeModulePkg/Universal/Network/SnpDxe/SnpDxe.inf diff --git a/OvmfPkg/OvmfPkgX64.fdf b/OvmfPkg/OvmfPkgX64.fdf index 7a80330..f7ebe82 100644 --- a/OvmfPkg/OvmfPkgX64.fdf +++ b/OvmfPkg/OvmfPkgX64.fdf @@ -373,10 +373,11 @@ INF OvmfPkg/DiscloseSmstSmm/DiscloseSmstSmm.inf INF MdeModulePkg/Universal/Acpi/AcpiTableDxe/AcpiTableDxe.inf INF OvmfPkg/AcpiPlatformDxe/AcpiPlatformDxe.inf INF RuleOverride=ACPITABLE OvmfPkg/AcpiTables/AcpiTables.inf INF OvmfPkg/AcpiS3SaveDxe/AcpiS3SaveDxe.inf INF MdeModulePkg/Universal/Acpi/S3SaveStateDxe/S3SaveStateDxe.inf +INF MdeModulePkg/Universal/Acpi/BootScriptExecutorDxe/BootScriptExecutorDxe.inf INF RuleOverride = BINARY FatBinPkg/EnhancedFatDxe/Fat.inf !ifndef $(USE_OLD_SHELL) INF ShellPkg/Application/Shell/Shell.inf -- 1.8.3.1 ------------------------------------------------------------------------------ Rapidly troubleshoot problems before they affect your business. Most IT organizations don't have a clear picture of how application performance affects their revenue. With AppDynamics, you get 100% visibility into your Java,.NET, & PHP application. Start your 15-day FREE TRIAL of AppDynamics Pro! http://pubads.g.doubleclick.net/gampad/clk?id=84349351&iu=/4140/ostg.clktrk _______________________________________________ edk2-devel mailing list edk2-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/edk2-devel