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

Reply via email to