When -D SMM_REQUIRE is given, replace both
- OvmfPkg/QemuFlashFvbServicesRuntimeDxe/FvbServicesRuntimeDxe.inf and
- OvmfPkg/EmuVariableFvbRuntimeDxe/Fvb.inf
with
- OvmfPkg/QemuFlashFvbServicesRuntimeDxe/FvbServicesSmm.inf.
The outermost (= runtime DXE driver) VariableSmmRuntimeDxe enters SMM, and
the rest:
- the privileged half of the variable driver, VariableSmm,
- the fault tolerant write driver, FaultTolerantWriteSmm,
- and the FVB driver, FvbServicesSmm,
work in SMM purely.
We also resolve the BaseCryptLib class for DXE_SMM_DRIVER modules, for the
authenticated VariableSmm driver's sake.
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@19065
6f19259b-4bc3-4df7-8a09-
765794883524
!ifdef $(SOURCE_DEBUG_ENABLE)\r
DebugAgentLib|SourceLevelDebugPkg/Library/DebugAgent/SmmDebugAgentLib.inf\r
!endif\r
+ BaseCryptLib|CryptoPkg/Library/BaseCryptLib/SmmCryptLib.inf\r
\r
[LibraryClasses.common.SMM_CORE]\r
PcdLib|MdePkg/Library/DxePcdLib/DxePcdLib.inf\r
SmmCpuPlatformHookLib|UefiCpuPkg/Library/SmmCpuPlatformHookLibNull/SmmCpuPlatformHookLibNull.inf\r
SmmCpuFeaturesLib|OvmfPkg/Library/SmmCpuFeaturesLib/SmmCpuFeaturesLib.inf\r
}\r
-!endif\r
\r
#\r
- # Variable driver stack\r
+ # Variable driver stack (SMM)\r
+ #\r
+ OvmfPkg/QemuFlashFvbServicesRuntimeDxe/FvbServicesSmm.inf\r
+ MdeModulePkg/Universal/FaultTolerantWriteDxe/FaultTolerantWriteSmm.inf\r
+ MdeModulePkg/Universal/Variable/RuntimeDxe/VariableSmm.inf {\r
+ <LibraryClasses>\r
+ NULL|MdeModulePkg/Library/VarCheckUefiLib/VarCheckUefiLib.inf\r
+ }\r
+ MdeModulePkg/Universal/Variable/RuntimeDxe/VariableSmmRuntimeDxe.inf\r
+\r
+!else\r
+\r
+ #\r
+ # Variable driver stack (non-SMM)\r
#\r
OvmfPkg/QemuFlashFvbServicesRuntimeDxe/FvbServicesRuntimeDxe.inf\r
OvmfPkg/EmuVariableFvbRuntimeDxe/Fvb.inf {\r
<LibraryClasses>\r
NULL|MdeModulePkg/Library/VarCheckUefiLib/VarCheckUefiLib.inf\r
}\r
+!endif\r
APRIORI DXE {\r
INF MdeModulePkg/Universal/DevicePathDxe/DevicePathDxe.inf\r
INF MdeModulePkg/Universal/PCD/Dxe/Pcd.inf\r
+!if $(SMM_REQUIRE) == FALSE\r
INF OvmfPkg/QemuFlashFvbServicesRuntimeDxe/FvbServicesRuntimeDxe.inf\r
+!endif\r
}\r
\r
#\r
INF UefiCpuPkg/CpuIo2Smm/CpuIo2Smm.inf\r
INF MdeModulePkg/Universal/LockBox/SmmLockBox/SmmLockBox.inf\r
INF UefiCpuPkg/PiSmmCpuDxeSmm/PiSmmCpuDxeSmm.inf\r
-!endif\r
\r
#\r
-# Variable driver stack\r
+# Variable driver stack (SMM)\r
+#\r
+INF OvmfPkg/QemuFlashFvbServicesRuntimeDxe/FvbServicesSmm.inf\r
+INF MdeModulePkg/Universal/FaultTolerantWriteDxe/FaultTolerantWriteSmm.inf\r
+INF MdeModulePkg/Universal/Variable/RuntimeDxe/VariableSmm.inf\r
+INF MdeModulePkg/Universal/Variable/RuntimeDxe/VariableSmmRuntimeDxe.inf\r
+\r
+!else\r
+\r
+#\r
+# Variable driver stack (non-SMM)\r
#\r
INF OvmfPkg/QemuFlashFvbServicesRuntimeDxe/FvbServicesRuntimeDxe.inf\r
INF OvmfPkg/EmuVariableFvbRuntimeDxe/Fvb.inf\r
INF MdeModulePkg/Universal/FaultTolerantWriteDxe/FaultTolerantWriteDxe.inf\r
INF MdeModulePkg/Universal/Variable/RuntimeDxe/VariableRuntimeDxe.inf\r
+!endif\r
\r
################################################################################\r
\r
!ifdef $(SOURCE_DEBUG_ENABLE)\r
DebugAgentLib|SourceLevelDebugPkg/Library/DebugAgent/SmmDebugAgentLib.inf\r
!endif\r
+ BaseCryptLib|CryptoPkg/Library/BaseCryptLib/SmmCryptLib.inf\r
\r
[LibraryClasses.common.SMM_CORE]\r
PcdLib|MdePkg/Library/DxePcdLib/DxePcdLib.inf\r
SmmCpuPlatformHookLib|UefiCpuPkg/Library/SmmCpuPlatformHookLibNull/SmmCpuPlatformHookLibNull.inf\r
SmmCpuFeaturesLib|OvmfPkg/Library/SmmCpuFeaturesLib/SmmCpuFeaturesLib.inf\r
}\r
-!endif\r
\r
#\r
- # Variable driver stack\r
+ # Variable driver stack (SMM)\r
+ #\r
+ OvmfPkg/QemuFlashFvbServicesRuntimeDxe/FvbServicesSmm.inf\r
+ MdeModulePkg/Universal/FaultTolerantWriteDxe/FaultTolerantWriteSmm.inf\r
+ MdeModulePkg/Universal/Variable/RuntimeDxe/VariableSmm.inf {\r
+ <LibraryClasses>\r
+ NULL|MdeModulePkg/Library/VarCheckUefiLib/VarCheckUefiLib.inf\r
+ }\r
+ MdeModulePkg/Universal/Variable/RuntimeDxe/VariableSmmRuntimeDxe.inf\r
+\r
+!else\r
+\r
+ #\r
+ # Variable driver stack (non-SMM)\r
#\r
OvmfPkg/QemuFlashFvbServicesRuntimeDxe/FvbServicesRuntimeDxe.inf\r
OvmfPkg/EmuVariableFvbRuntimeDxe/Fvb.inf {\r
<LibraryClasses>\r
NULL|MdeModulePkg/Library/VarCheckUefiLib/VarCheckUefiLib.inf\r
}\r
+!endif\r
APRIORI DXE {\r
INF MdeModulePkg/Universal/DevicePathDxe/DevicePathDxe.inf\r
INF MdeModulePkg/Universal/PCD/Dxe/Pcd.inf\r
+!if $(SMM_REQUIRE) == FALSE\r
INF OvmfPkg/QemuFlashFvbServicesRuntimeDxe/FvbServicesRuntimeDxe.inf\r
+!endif\r
}\r
\r
#\r
INF UefiCpuPkg/CpuIo2Smm/CpuIo2Smm.inf\r
INF MdeModulePkg/Universal/LockBox/SmmLockBox/SmmLockBox.inf\r
INF UefiCpuPkg/PiSmmCpuDxeSmm/PiSmmCpuDxeSmm.inf\r
-!endif\r
\r
#\r
-# Variable driver stack\r
+# Variable driver stack (SMM)\r
+#\r
+INF OvmfPkg/QemuFlashFvbServicesRuntimeDxe/FvbServicesSmm.inf\r
+INF MdeModulePkg/Universal/FaultTolerantWriteDxe/FaultTolerantWriteSmm.inf\r
+INF MdeModulePkg/Universal/Variable/RuntimeDxe/VariableSmm.inf\r
+INF MdeModulePkg/Universal/Variable/RuntimeDxe/VariableSmmRuntimeDxe.inf\r
+\r
+!else\r
+\r
+#\r
+# Variable driver stack (non-SMM)\r
#\r
INF OvmfPkg/QemuFlashFvbServicesRuntimeDxe/FvbServicesRuntimeDxe.inf\r
INF OvmfPkg/EmuVariableFvbRuntimeDxe/Fvb.inf\r
INF MdeModulePkg/Universal/FaultTolerantWriteDxe/FaultTolerantWriteDxe.inf\r
INF MdeModulePkg/Universal/Variable/RuntimeDxe/VariableRuntimeDxe.inf\r
+!endif\r
\r
################################################################################\r
\r
!ifdef $(SOURCE_DEBUG_ENABLE)\r
DebugAgentLib|SourceLevelDebugPkg/Library/DebugAgent/SmmDebugAgentLib.inf\r
!endif\r
+ BaseCryptLib|CryptoPkg/Library/BaseCryptLib/SmmCryptLib.inf\r
\r
[LibraryClasses.common.SMM_CORE]\r
PcdLib|MdePkg/Library/DxePcdLib/DxePcdLib.inf\r
SmmCpuPlatformHookLib|UefiCpuPkg/Library/SmmCpuPlatformHookLibNull/SmmCpuPlatformHookLibNull.inf\r
SmmCpuFeaturesLib|OvmfPkg/Library/SmmCpuFeaturesLib/SmmCpuFeaturesLib.inf\r
}\r
-!endif\r
\r
#\r
- # Variable driver stack\r
+ # Variable driver stack (SMM)\r
+ #\r
+ OvmfPkg/QemuFlashFvbServicesRuntimeDxe/FvbServicesSmm.inf\r
+ MdeModulePkg/Universal/FaultTolerantWriteDxe/FaultTolerantWriteSmm.inf\r
+ MdeModulePkg/Universal/Variable/RuntimeDxe/VariableSmm.inf {\r
+ <LibraryClasses>\r
+ NULL|MdeModulePkg/Library/VarCheckUefiLib/VarCheckUefiLib.inf\r
+ }\r
+ MdeModulePkg/Universal/Variable/RuntimeDxe/VariableSmmRuntimeDxe.inf\r
+\r
+!else\r
+\r
+ #\r
+ # Variable driver stack (non-SMM)\r
#\r
OvmfPkg/QemuFlashFvbServicesRuntimeDxe/FvbServicesRuntimeDxe.inf\r
OvmfPkg/EmuVariableFvbRuntimeDxe/Fvb.inf {\r
<LibraryClasses>\r
NULL|MdeModulePkg/Library/VarCheckUefiLib/VarCheckUefiLib.inf\r
}\r
+!endif\r
APRIORI DXE {\r
INF MdeModulePkg/Universal/DevicePathDxe/DevicePathDxe.inf\r
INF MdeModulePkg/Universal/PCD/Dxe/Pcd.inf\r
+!if $(SMM_REQUIRE) == FALSE\r
INF OvmfPkg/QemuFlashFvbServicesRuntimeDxe/FvbServicesRuntimeDxe.inf\r
+!endif\r
}\r
\r
#\r
INF UefiCpuPkg/CpuIo2Smm/CpuIo2Smm.inf\r
INF MdeModulePkg/Universal/LockBox/SmmLockBox/SmmLockBox.inf\r
INF UefiCpuPkg/PiSmmCpuDxeSmm/PiSmmCpuDxeSmm.inf\r
-!endif\r
\r
#\r
-# Variable driver stack\r
+# Variable driver stack (SMM)\r
+#\r
+INF OvmfPkg/QemuFlashFvbServicesRuntimeDxe/FvbServicesSmm.inf\r
+INF MdeModulePkg/Universal/FaultTolerantWriteDxe/FaultTolerantWriteSmm.inf\r
+INF MdeModulePkg/Universal/Variable/RuntimeDxe/VariableSmm.inf\r
+INF MdeModulePkg/Universal/Variable/RuntimeDxe/VariableSmmRuntimeDxe.inf\r
+\r
+!else\r
+\r
+#\r
+# Variable driver stack (non-SMM)\r
#\r
INF OvmfPkg/QemuFlashFvbServicesRuntimeDxe/FvbServicesRuntimeDxe.inf\r
INF OvmfPkg/EmuVariableFvbRuntimeDxe/Fvb.inf\r
INF MdeModulePkg/Universal/FaultTolerantWriteDxe/FaultTolerantWriteDxe.inf\r
INF MdeModulePkg/Universal/Variable/RuntimeDxe/VariableRuntimeDxe.inf\r
+!endif\r
\r
################################################################################\r
\r