mirror of https://github.com/acidanthera/audk.git
OvmfPkg: S3 Resume: fake LockBox protocol for BootScriptExecutorDxe
BootScriptExecutorDxe, to be pulled in in the next patch, was written with the SMM implementation of LockBox in mind. That implementation is split in the following three parts: - client side (DXE/PEI) library, - SMM driver producing gEfiLockBoxProtocolGuid, - driver side (SMM) library. BootScriptExecutorDxe includes the client side LockBoxLib. So that the library can communicate with the SMM LockBox driver, BootScriptExecutorDxe has a Depex on gEfiLockBoxProtocolGuid, normally installed by the SMM LockBox driver. This is actually not a hard dependency, it just ensures correct load order between BootScriptExecutorDxe and MdeModulePkg/Universal/LockBox/SmmLockBox. The (client side) LockBox library instance in OVMF doesn't depend on a separate driver that produces gEfiLockBoxProtocolGuid. Nothing produces that GUID right now in OVMF. This prevents BootScriptExecutorDxe from loading. Install gEfiLockBoxProtocolGuid in our only S3-specific, custom DXE driver, in order to enable loading of BootScriptExecutorDxe. Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Laszlo Ersek <lersek@redhat.com> Reviewed-by: Jordan Justen <jordan.l.justen@intel.com> git-svn-id: https://svn.code.sf.net/p/edk2/code/trunk/edk2@15306 6f19259b-4bc3-4df7-8a09-765794883524
This commit is contained in:
parent
5a217a0649
commit
d4ba06dfdc
|
@ -30,6 +30,7 @@ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
|
||||||
#include <Protocol/AcpiS3Save.h>
|
#include <Protocol/AcpiS3Save.h>
|
||||||
#include <Protocol/S3SaveState.h>
|
#include <Protocol/S3SaveState.h>
|
||||||
#include <Protocol/DxeSmmReadyToLock.h>
|
#include <Protocol/DxeSmmReadyToLock.h>
|
||||||
|
#include <Protocol/LockBox.h>
|
||||||
#include <IndustryStandard/Acpi.h>
|
#include <IndustryStandard/Acpi.h>
|
||||||
|
|
||||||
#include "AcpiS3Save.h"
|
#include "AcpiS3Save.h"
|
||||||
|
@ -594,11 +595,11 @@ InstallAcpiS3Save (
|
||||||
mLegacyRegionSize = 0x100;
|
mLegacyRegionSize = 0x100;
|
||||||
}
|
}
|
||||||
|
|
||||||
Status = gBS->InstallProtocolInterface (
|
Status = gBS->InstallMultipleProtocolInterfaces (
|
||||||
&ImageHandle,
|
&ImageHandle,
|
||||||
&gEfiAcpiS3SaveProtocolGuid,
|
&gEfiAcpiS3SaveProtocolGuid, &mS3Save,
|
||||||
EFI_NATIVE_INTERFACE,
|
&gEfiLockBoxProtocolGuid, NULL,
|
||||||
&mS3Save
|
NULL
|
||||||
);
|
);
|
||||||
ASSERT_EFI_ERROR (Status);
|
ASSERT_EFI_ERROR (Status);
|
||||||
return Status;
|
return Status;
|
||||||
|
|
|
@ -59,6 +59,7 @@
|
||||||
|
|
||||||
[Protocols]
|
[Protocols]
|
||||||
gEfiAcpiS3SaveProtocolGuid # PROTOCOL ALWAYS_PRODUCED
|
gEfiAcpiS3SaveProtocolGuid # PROTOCOL ALWAYS_PRODUCED
|
||||||
|
gEfiLockBoxProtocolGuid # PROTOCOL ALWAYS_PRODUCED
|
||||||
gEfiLegacyBiosProtocolGuid # PROTOCOL ALWAYS_CONSUMED
|
gEfiLegacyBiosProtocolGuid # PROTOCOL ALWAYS_CONSUMED
|
||||||
gEfiLegacyRegion2ProtocolGuid # PROTOCOL SOMETIMES_CONSUMED
|
gEfiLegacyRegion2ProtocolGuid # PROTOCOL SOMETIMES_CONSUMED
|
||||||
gFrameworkEfiMpServiceProtocolGuid # PROTOCOL SOMETIMES_CONSUMED
|
gFrameworkEfiMpServiceProtocolGuid # PROTOCOL SOMETIMES_CONSUMED
|
||||||
|
|
Loading…
Reference in New Issue