mirror of https://github.com/acidanthera/audk.git
OvmfPkg: LockBox: use SMM stack with -D SMM_REQUIRE
During DXE, drivers save data in the LockBox. A save operation is layered as follows: - The unprivileged driver wishing to store data in the LockBox links against the "MdeModulePkg/Library/SmmLockBoxLib/SmmLockBoxDxeLib.inf" library instance. The library allows the unprivileged driver to format requests for the privileged SMM LockBox driver (see below), and to parse responses. We apply this resolution for DXE_DRIVER modules. - The privileged SMM LockBox driver is built from "MdeModulePkg/Universal/LockBox/SmmLockBox/SmmLockBox.inf". This driver has module type DXE_SMM_DRIVER and can access SMRAM. The driver delegates command parsing and response formatting to "MdeModulePkg/Library/SmmLockBoxLib/SmmLockBoxSmmLib.inf". Therefore we include this DXE_SMM_DRIVER in the build, and apply said resolution specifically to it. (Including the driver requires us to resolve a few of other library classes for DXE_SMM_DRIVER modules.) - In PEI, the S3 Resume PEIM (UefiCpuPkg/Universal/Acpi/S3Resume2Pei) retrieves data from the LockBox. It is capable of searching SMRAM itself. We resolve LockBoxLib to "MdeModulePkg/Library/SmmLockBoxLib/SmmLockBoxPeiLib.inf" specifically for this one PEIM. 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@19048 6f19259b-4bc3-4df7-8a09-765794883524
This commit is contained in:
parent
1a7edbbca1
commit
67d8659474
|
@ -105,7 +105,9 @@
|
||||||
QemuFwCfgLib|OvmfPkg/Library/QemuFwCfgLib/QemuFwCfgLib.inf
|
QemuFwCfgLib|OvmfPkg/Library/QemuFwCfgLib/QemuFwCfgLib.inf
|
||||||
VirtioLib|OvmfPkg/Library/VirtioLib/VirtioLib.inf
|
VirtioLib|OvmfPkg/Library/VirtioLib/VirtioLib.inf
|
||||||
LoadLinuxLib|OvmfPkg/Library/LoadLinuxLib/LoadLinuxLib.inf
|
LoadLinuxLib|OvmfPkg/Library/LoadLinuxLib/LoadLinuxLib.inf
|
||||||
|
!if $(SMM_REQUIRE) == FALSE
|
||||||
LockBoxLib|OvmfPkg/Library/LockBoxLib/LockBoxBaseLib.inf
|
LockBoxLib|OvmfPkg/Library/LockBoxLib/LockBoxBaseLib.inf
|
||||||
|
!endif
|
||||||
CustomizedDisplayLib|MdeModulePkg/Library/CustomizedDisplayLib/CustomizedDisplayLib.inf
|
CustomizedDisplayLib|MdeModulePkg/Library/CustomizedDisplayLib/CustomizedDisplayLib.inf
|
||||||
|
|
||||||
!ifdef $(SOURCE_DEBUG_ENABLE)
|
!ifdef $(SOURCE_DEBUG_ENABLE)
|
||||||
|
@ -271,7 +273,11 @@
|
||||||
DpcLib|MdeModulePkg/Library/DxeDpcLib/DxeDpcLib.inf
|
DpcLib|MdeModulePkg/Library/DxeDpcLib/DxeDpcLib.inf
|
||||||
PlatformBdsLib|OvmfPkg/Library/PlatformBdsLib/PlatformBdsLib.inf
|
PlatformBdsLib|OvmfPkg/Library/PlatformBdsLib/PlatformBdsLib.inf
|
||||||
CpuExceptionHandlerLib|UefiCpuPkg/Library/CpuExceptionHandlerLib/DxeCpuExceptionHandlerLib.inf
|
CpuExceptionHandlerLib|UefiCpuPkg/Library/CpuExceptionHandlerLib/DxeCpuExceptionHandlerLib.inf
|
||||||
|
!if $(SMM_REQUIRE) == TRUE
|
||||||
|
LockBoxLib|MdeModulePkg/Library/SmmLockBoxLib/SmmLockBoxDxeLib.inf
|
||||||
|
!else
|
||||||
LockBoxLib|OvmfPkg/Library/LockBoxLib/LockBoxDxeLib.inf
|
LockBoxLib|OvmfPkg/Library/LockBoxLib/LockBoxDxeLib.inf
|
||||||
|
!endif
|
||||||
!ifdef $(SOURCE_DEBUG_ENABLE)
|
!ifdef $(SOURCE_DEBUG_ENABLE)
|
||||||
DebugAgentLib|SourceLevelDebugPkg/Library/DebugAgent/DxeDebugAgentLib.inf
|
DebugAgentLib|SourceLevelDebugPkg/Library/DebugAgent/DxeDebugAgentLib.inf
|
||||||
!endif
|
!endif
|
||||||
|
@ -291,6 +297,9 @@
|
||||||
[LibraryClasses.common.DXE_SMM_DRIVER]
|
[LibraryClasses.common.DXE_SMM_DRIVER]
|
||||||
PcdLib|MdePkg/Library/DxePcdLib/DxePcdLib.inf
|
PcdLib|MdePkg/Library/DxePcdLib/DxePcdLib.inf
|
||||||
TimerLib|OvmfPkg/Library/AcpiTimerLib/DxeAcpiTimerLib.inf
|
TimerLib|OvmfPkg/Library/AcpiTimerLib/DxeAcpiTimerLib.inf
|
||||||
|
MemoryAllocationLib|MdePkg/Library/SmmMemoryAllocationLib/SmmMemoryAllocationLib.inf
|
||||||
|
HobLib|MdePkg/Library/DxeHobLib/DxeHobLib.inf
|
||||||
|
SmmMemLib|MdePkg/Library/SmmMemLib/SmmMemLib.inf
|
||||||
SmmServicesTableLib|MdePkg/Library/SmmServicesTableLib/SmmServicesTableLib.inf
|
SmmServicesTableLib|MdePkg/Library/SmmServicesTableLib/SmmServicesTableLib.inf
|
||||||
!ifdef $(DEBUG_ON_SERIAL_PORT)
|
!ifdef $(DEBUG_ON_SERIAL_PORT)
|
||||||
DebugLib|MdePkg/Library/BaseDebugLibSerialPort/BaseDebugLibSerialPort.inf
|
DebugLib|MdePkg/Library/BaseDebugLibSerialPort/BaseDebugLibSerialPort.inf
|
||||||
|
@ -437,6 +446,9 @@
|
||||||
UefiCpuPkg/Universal/Acpi/S3Resume2Pei/S3Resume2Pei.inf {
|
UefiCpuPkg/Universal/Acpi/S3Resume2Pei/S3Resume2Pei.inf {
|
||||||
<LibraryClasses>
|
<LibraryClasses>
|
||||||
PcdLib|MdePkg/Library/PeiPcdLib/PeiPcdLib.inf
|
PcdLib|MdePkg/Library/PeiPcdLib/PeiPcdLib.inf
|
||||||
|
!if $(SMM_REQUIRE) == TRUE
|
||||||
|
LockBoxLib|MdeModulePkg/Library/SmmLockBoxLib/SmmLockBoxPeiLib.inf
|
||||||
|
!endif
|
||||||
}
|
}
|
||||||
!if $(SMM_REQUIRE) == TRUE
|
!if $(SMM_REQUIRE) == TRUE
|
||||||
OvmfPkg/SmmAccess/SmmAccessPei.inf {
|
OvmfPkg/SmmAccess/SmmAccessPei.inf {
|
||||||
|
@ -678,4 +690,8 @@
|
||||||
# Privileged drivers (DXE_SMM_DRIVER modules)
|
# Privileged drivers (DXE_SMM_DRIVER modules)
|
||||||
#
|
#
|
||||||
UefiCpuPkg/CpuIo2Smm/CpuIo2Smm.inf
|
UefiCpuPkg/CpuIo2Smm/CpuIo2Smm.inf
|
||||||
|
MdeModulePkg/Universal/LockBox/SmmLockBox/SmmLockBox.inf {
|
||||||
|
<LibraryClasses>
|
||||||
|
LockBoxLib|MdeModulePkg/Library/SmmLockBoxLib/SmmLockBoxSmmLib.inf
|
||||||
|
}
|
||||||
!endif
|
!endif
|
||||||
|
|
|
@ -361,6 +361,7 @@ INF OvmfPkg/SmmControl2Dxe/SmmControl2Dxe.inf
|
||||||
INF MdeModulePkg/Core/PiSmmCore/PiSmmIpl.inf
|
INF MdeModulePkg/Core/PiSmmCore/PiSmmIpl.inf
|
||||||
INF MdeModulePkg/Core/PiSmmCore/PiSmmCore.inf
|
INF MdeModulePkg/Core/PiSmmCore/PiSmmCore.inf
|
||||||
INF UefiCpuPkg/CpuIo2Smm/CpuIo2Smm.inf
|
INF UefiCpuPkg/CpuIo2Smm/CpuIo2Smm.inf
|
||||||
|
INF MdeModulePkg/Universal/LockBox/SmmLockBox/SmmLockBox.inf
|
||||||
!endif
|
!endif
|
||||||
|
|
||||||
################################################################################
|
################################################################################
|
||||||
|
|
|
@ -110,7 +110,9 @@
|
||||||
QemuFwCfgLib|OvmfPkg/Library/QemuFwCfgLib/QemuFwCfgLib.inf
|
QemuFwCfgLib|OvmfPkg/Library/QemuFwCfgLib/QemuFwCfgLib.inf
|
||||||
VirtioLib|OvmfPkg/Library/VirtioLib/VirtioLib.inf
|
VirtioLib|OvmfPkg/Library/VirtioLib/VirtioLib.inf
|
||||||
LoadLinuxLib|OvmfPkg/Library/LoadLinuxLib/LoadLinuxLib.inf
|
LoadLinuxLib|OvmfPkg/Library/LoadLinuxLib/LoadLinuxLib.inf
|
||||||
|
!if $(SMM_REQUIRE) == FALSE
|
||||||
LockBoxLib|OvmfPkg/Library/LockBoxLib/LockBoxBaseLib.inf
|
LockBoxLib|OvmfPkg/Library/LockBoxLib/LockBoxBaseLib.inf
|
||||||
|
!endif
|
||||||
CustomizedDisplayLib|MdeModulePkg/Library/CustomizedDisplayLib/CustomizedDisplayLib.inf
|
CustomizedDisplayLib|MdeModulePkg/Library/CustomizedDisplayLib/CustomizedDisplayLib.inf
|
||||||
|
|
||||||
!ifdef $(SOURCE_DEBUG_ENABLE)
|
!ifdef $(SOURCE_DEBUG_ENABLE)
|
||||||
|
@ -276,7 +278,11 @@
|
||||||
DpcLib|MdeModulePkg/Library/DxeDpcLib/DxeDpcLib.inf
|
DpcLib|MdeModulePkg/Library/DxeDpcLib/DxeDpcLib.inf
|
||||||
PlatformBdsLib|OvmfPkg/Library/PlatformBdsLib/PlatformBdsLib.inf
|
PlatformBdsLib|OvmfPkg/Library/PlatformBdsLib/PlatformBdsLib.inf
|
||||||
CpuExceptionHandlerLib|UefiCpuPkg/Library/CpuExceptionHandlerLib/DxeCpuExceptionHandlerLib.inf
|
CpuExceptionHandlerLib|UefiCpuPkg/Library/CpuExceptionHandlerLib/DxeCpuExceptionHandlerLib.inf
|
||||||
|
!if $(SMM_REQUIRE) == TRUE
|
||||||
|
LockBoxLib|MdeModulePkg/Library/SmmLockBoxLib/SmmLockBoxDxeLib.inf
|
||||||
|
!else
|
||||||
LockBoxLib|OvmfPkg/Library/LockBoxLib/LockBoxDxeLib.inf
|
LockBoxLib|OvmfPkg/Library/LockBoxLib/LockBoxDxeLib.inf
|
||||||
|
!endif
|
||||||
!ifdef $(SOURCE_DEBUG_ENABLE)
|
!ifdef $(SOURCE_DEBUG_ENABLE)
|
||||||
DebugAgentLib|SourceLevelDebugPkg/Library/DebugAgent/DxeDebugAgentLib.inf
|
DebugAgentLib|SourceLevelDebugPkg/Library/DebugAgent/DxeDebugAgentLib.inf
|
||||||
!endif
|
!endif
|
||||||
|
@ -296,6 +302,9 @@
|
||||||
[LibraryClasses.common.DXE_SMM_DRIVER]
|
[LibraryClasses.common.DXE_SMM_DRIVER]
|
||||||
PcdLib|MdePkg/Library/DxePcdLib/DxePcdLib.inf
|
PcdLib|MdePkg/Library/DxePcdLib/DxePcdLib.inf
|
||||||
TimerLib|OvmfPkg/Library/AcpiTimerLib/DxeAcpiTimerLib.inf
|
TimerLib|OvmfPkg/Library/AcpiTimerLib/DxeAcpiTimerLib.inf
|
||||||
|
MemoryAllocationLib|MdePkg/Library/SmmMemoryAllocationLib/SmmMemoryAllocationLib.inf
|
||||||
|
HobLib|MdePkg/Library/DxeHobLib/DxeHobLib.inf
|
||||||
|
SmmMemLib|MdePkg/Library/SmmMemLib/SmmMemLib.inf
|
||||||
SmmServicesTableLib|MdePkg/Library/SmmServicesTableLib/SmmServicesTableLib.inf
|
SmmServicesTableLib|MdePkg/Library/SmmServicesTableLib/SmmServicesTableLib.inf
|
||||||
!ifdef $(DEBUG_ON_SERIAL_PORT)
|
!ifdef $(DEBUG_ON_SERIAL_PORT)
|
||||||
DebugLib|MdePkg/Library/BaseDebugLibSerialPort/BaseDebugLibSerialPort.inf
|
DebugLib|MdePkg/Library/BaseDebugLibSerialPort/BaseDebugLibSerialPort.inf
|
||||||
|
@ -443,6 +452,9 @@
|
||||||
UefiCpuPkg/Universal/Acpi/S3Resume2Pei/S3Resume2Pei.inf {
|
UefiCpuPkg/Universal/Acpi/S3Resume2Pei/S3Resume2Pei.inf {
|
||||||
<LibraryClasses>
|
<LibraryClasses>
|
||||||
PcdLib|MdePkg/Library/PeiPcdLib/PeiPcdLib.inf
|
PcdLib|MdePkg/Library/PeiPcdLib/PeiPcdLib.inf
|
||||||
|
!if $(SMM_REQUIRE) == TRUE
|
||||||
|
LockBoxLib|MdeModulePkg/Library/SmmLockBoxLib/SmmLockBoxPeiLib.inf
|
||||||
|
!endif
|
||||||
}
|
}
|
||||||
!if $(SMM_REQUIRE) == TRUE
|
!if $(SMM_REQUIRE) == TRUE
|
||||||
OvmfPkg/SmmAccess/SmmAccessPei.inf {
|
OvmfPkg/SmmAccess/SmmAccessPei.inf {
|
||||||
|
@ -685,4 +697,8 @@
|
||||||
# Privileged drivers (DXE_SMM_DRIVER modules)
|
# Privileged drivers (DXE_SMM_DRIVER modules)
|
||||||
#
|
#
|
||||||
UefiCpuPkg/CpuIo2Smm/CpuIo2Smm.inf
|
UefiCpuPkg/CpuIo2Smm/CpuIo2Smm.inf
|
||||||
|
MdeModulePkg/Universal/LockBox/SmmLockBox/SmmLockBox.inf {
|
||||||
|
<LibraryClasses>
|
||||||
|
LockBoxLib|MdeModulePkg/Library/SmmLockBoxLib/SmmLockBoxSmmLib.inf
|
||||||
|
}
|
||||||
!endif
|
!endif
|
||||||
|
|
|
@ -361,6 +361,7 @@ INF OvmfPkg/SmmControl2Dxe/SmmControl2Dxe.inf
|
||||||
INF MdeModulePkg/Core/PiSmmCore/PiSmmIpl.inf
|
INF MdeModulePkg/Core/PiSmmCore/PiSmmIpl.inf
|
||||||
INF MdeModulePkg/Core/PiSmmCore/PiSmmCore.inf
|
INF MdeModulePkg/Core/PiSmmCore/PiSmmCore.inf
|
||||||
INF UefiCpuPkg/CpuIo2Smm/CpuIo2Smm.inf
|
INF UefiCpuPkg/CpuIo2Smm/CpuIo2Smm.inf
|
||||||
|
INF MdeModulePkg/Universal/LockBox/SmmLockBox/SmmLockBox.inf
|
||||||
!endif
|
!endif
|
||||||
|
|
||||||
################################################################################
|
################################################################################
|
||||||
|
|
|
@ -110,7 +110,9 @@
|
||||||
QemuFwCfgLib|OvmfPkg/Library/QemuFwCfgLib/QemuFwCfgLib.inf
|
QemuFwCfgLib|OvmfPkg/Library/QemuFwCfgLib/QemuFwCfgLib.inf
|
||||||
VirtioLib|OvmfPkg/Library/VirtioLib/VirtioLib.inf
|
VirtioLib|OvmfPkg/Library/VirtioLib/VirtioLib.inf
|
||||||
LoadLinuxLib|OvmfPkg/Library/LoadLinuxLib/LoadLinuxLib.inf
|
LoadLinuxLib|OvmfPkg/Library/LoadLinuxLib/LoadLinuxLib.inf
|
||||||
|
!if $(SMM_REQUIRE) == FALSE
|
||||||
LockBoxLib|OvmfPkg/Library/LockBoxLib/LockBoxBaseLib.inf
|
LockBoxLib|OvmfPkg/Library/LockBoxLib/LockBoxBaseLib.inf
|
||||||
|
!endif
|
||||||
CustomizedDisplayLib|MdeModulePkg/Library/CustomizedDisplayLib/CustomizedDisplayLib.inf
|
CustomizedDisplayLib|MdeModulePkg/Library/CustomizedDisplayLib/CustomizedDisplayLib.inf
|
||||||
|
|
||||||
!ifdef $(SOURCE_DEBUG_ENABLE)
|
!ifdef $(SOURCE_DEBUG_ENABLE)
|
||||||
|
@ -276,7 +278,11 @@
|
||||||
DpcLib|MdeModulePkg/Library/DxeDpcLib/DxeDpcLib.inf
|
DpcLib|MdeModulePkg/Library/DxeDpcLib/DxeDpcLib.inf
|
||||||
PlatformBdsLib|OvmfPkg/Library/PlatformBdsLib/PlatformBdsLib.inf
|
PlatformBdsLib|OvmfPkg/Library/PlatformBdsLib/PlatformBdsLib.inf
|
||||||
CpuExceptionHandlerLib|UefiCpuPkg/Library/CpuExceptionHandlerLib/DxeCpuExceptionHandlerLib.inf
|
CpuExceptionHandlerLib|UefiCpuPkg/Library/CpuExceptionHandlerLib/DxeCpuExceptionHandlerLib.inf
|
||||||
|
!if $(SMM_REQUIRE) == TRUE
|
||||||
|
LockBoxLib|MdeModulePkg/Library/SmmLockBoxLib/SmmLockBoxDxeLib.inf
|
||||||
|
!else
|
||||||
LockBoxLib|OvmfPkg/Library/LockBoxLib/LockBoxDxeLib.inf
|
LockBoxLib|OvmfPkg/Library/LockBoxLib/LockBoxDxeLib.inf
|
||||||
|
!endif
|
||||||
!ifdef $(SOURCE_DEBUG_ENABLE)
|
!ifdef $(SOURCE_DEBUG_ENABLE)
|
||||||
DebugAgentLib|SourceLevelDebugPkg/Library/DebugAgent/DxeDebugAgentLib.inf
|
DebugAgentLib|SourceLevelDebugPkg/Library/DebugAgent/DxeDebugAgentLib.inf
|
||||||
!endif
|
!endif
|
||||||
|
@ -296,6 +302,9 @@
|
||||||
[LibraryClasses.common.DXE_SMM_DRIVER]
|
[LibraryClasses.common.DXE_SMM_DRIVER]
|
||||||
PcdLib|MdePkg/Library/DxePcdLib/DxePcdLib.inf
|
PcdLib|MdePkg/Library/DxePcdLib/DxePcdLib.inf
|
||||||
TimerLib|OvmfPkg/Library/AcpiTimerLib/DxeAcpiTimerLib.inf
|
TimerLib|OvmfPkg/Library/AcpiTimerLib/DxeAcpiTimerLib.inf
|
||||||
|
MemoryAllocationLib|MdePkg/Library/SmmMemoryAllocationLib/SmmMemoryAllocationLib.inf
|
||||||
|
HobLib|MdePkg/Library/DxeHobLib/DxeHobLib.inf
|
||||||
|
SmmMemLib|MdePkg/Library/SmmMemLib/SmmMemLib.inf
|
||||||
SmmServicesTableLib|MdePkg/Library/SmmServicesTableLib/SmmServicesTableLib.inf
|
SmmServicesTableLib|MdePkg/Library/SmmServicesTableLib/SmmServicesTableLib.inf
|
||||||
!ifdef $(DEBUG_ON_SERIAL_PORT)
|
!ifdef $(DEBUG_ON_SERIAL_PORT)
|
||||||
DebugLib|MdePkg/Library/BaseDebugLibSerialPort/BaseDebugLibSerialPort.inf
|
DebugLib|MdePkg/Library/BaseDebugLibSerialPort/BaseDebugLibSerialPort.inf
|
||||||
|
@ -442,6 +451,9 @@
|
||||||
UefiCpuPkg/Universal/Acpi/S3Resume2Pei/S3Resume2Pei.inf {
|
UefiCpuPkg/Universal/Acpi/S3Resume2Pei/S3Resume2Pei.inf {
|
||||||
<LibraryClasses>
|
<LibraryClasses>
|
||||||
PcdLib|MdePkg/Library/PeiPcdLib/PeiPcdLib.inf
|
PcdLib|MdePkg/Library/PeiPcdLib/PeiPcdLib.inf
|
||||||
|
!if $(SMM_REQUIRE) == TRUE
|
||||||
|
LockBoxLib|MdeModulePkg/Library/SmmLockBoxLib/SmmLockBoxPeiLib.inf
|
||||||
|
!endif
|
||||||
}
|
}
|
||||||
!if $(SMM_REQUIRE) == TRUE
|
!if $(SMM_REQUIRE) == TRUE
|
||||||
OvmfPkg/SmmAccess/SmmAccessPei.inf {
|
OvmfPkg/SmmAccess/SmmAccessPei.inf {
|
||||||
|
@ -683,4 +695,8 @@
|
||||||
# Privileged drivers (DXE_SMM_DRIVER modules)
|
# Privileged drivers (DXE_SMM_DRIVER modules)
|
||||||
#
|
#
|
||||||
UefiCpuPkg/CpuIo2Smm/CpuIo2Smm.inf
|
UefiCpuPkg/CpuIo2Smm/CpuIo2Smm.inf
|
||||||
|
MdeModulePkg/Universal/LockBox/SmmLockBox/SmmLockBox.inf {
|
||||||
|
<LibraryClasses>
|
||||||
|
LockBoxLib|MdeModulePkg/Library/SmmLockBoxLib/SmmLockBoxSmmLib.inf
|
||||||
|
}
|
||||||
!endif
|
!endif
|
||||||
|
|
|
@ -361,6 +361,7 @@ INF OvmfPkg/SmmControl2Dxe/SmmControl2Dxe.inf
|
||||||
INF MdeModulePkg/Core/PiSmmCore/PiSmmIpl.inf
|
INF MdeModulePkg/Core/PiSmmCore/PiSmmIpl.inf
|
||||||
INF MdeModulePkg/Core/PiSmmCore/PiSmmCore.inf
|
INF MdeModulePkg/Core/PiSmmCore/PiSmmCore.inf
|
||||||
INF UefiCpuPkg/CpuIo2Smm/CpuIo2Smm.inf
|
INF UefiCpuPkg/CpuIo2Smm/CpuIo2Smm.inf
|
||||||
|
INF MdeModulePkg/Universal/LockBox/SmmLockBox/SmmLockBox.inf
|
||||||
!endif
|
!endif
|
||||||
|
|
||||||
################################################################################
|
################################################################################
|
||||||
|
|
Loading…
Reference in New Issue