47-50 Reviewed-by: Jordan Justen <[email protected]> But, I think only 49/52: "OvmfPkg: consolidate variable driver stack in DSC and FDF files" should be committed now.
I think the others should wait for the rest of the SMM pieces to fall in place. (Maybe... I guess we can discuss this.) -Jordan On 2015-10-14 15:26:46, Laszlo Ersek wrote: > 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 <[email protected]> > --- > > Notes: > v2: > - hook VarCheckUefiLib into VariableSmm > > <http://news.gmane.org/[email protected]> > > OvmfPkg/OvmfPkgIa32.dsc | 18 ++++++++++++++++-- > OvmfPkg/OvmfPkgIa32X64.dsc | 18 ++++++++++++++++-- > OvmfPkg/OvmfPkgX64.dsc | 18 ++++++++++++++++-- > OvmfPkg/OvmfPkgIa32.fdf | 16 ++++++++++++++-- > OvmfPkg/OvmfPkgIa32X64.fdf | 16 ++++++++++++++-- > OvmfPkg/OvmfPkgX64.fdf | 16 ++++++++++++++-- > 6 files changed, 90 insertions(+), 12 deletions(-) > > diff --git a/OvmfPkg/OvmfPkgIa32.dsc b/OvmfPkg/OvmfPkgIa32.dsc > index b119c77..9040bdc 100644 > --- a/OvmfPkg/OvmfPkgIa32.dsc > +++ b/OvmfPkg/OvmfPkgIa32.dsc > @@ -312,6 +312,7 @@ [LibraryClasses.common.DXE_SMM_DRIVER] > !ifdef $(SOURCE_DEBUG_ENABLE) > DebugAgentLib|SourceLevelDebugPkg/Library/DebugAgent/SmmDebugAgentLib.inf > !endif > + BaseCryptLib|CryptoPkg/Library/BaseCryptLib/SmmCryptLib.inf > > [LibraryClasses.common.SMM_CORE] > PcdLib|MdePkg/Library/DxePcdLib/DxePcdLib.inf > @@ -731,10 +732,22 @@ [Components] > SmmLib|MdePkg/Library/SmmLibNull/SmmLibNull.inf > > SmmCpuFeaturesLib|OvmfPkg/Library/SmmCpuFeaturesLib/SmmCpuFeaturesLib.inf > } > -!endif > > # > - # Variable driver stack > + # Variable driver stack (SMM) > + # > + OvmfPkg/QemuFlashFvbServicesRuntimeDxe/FvbServicesSmm.inf > + MdeModulePkg/Universal/FaultTolerantWriteDxe/FaultTolerantWriteSmm.inf > + MdeModulePkg/Universal/Variable/RuntimeDxe/VariableSmm.inf { > + <LibraryClasses> > + NULL|MdeModulePkg/Library/VarCheckUefiLib/VarCheckUefiLib.inf > + } > + MdeModulePkg/Universal/Variable/RuntimeDxe/VariableSmmRuntimeDxe.inf > + > +!else > + > + # > + # Variable driver stack (non-SMM) > # > OvmfPkg/QemuFlashFvbServicesRuntimeDxe/FvbServicesRuntimeDxe.inf > OvmfPkg/EmuVariableFvbRuntimeDxe/Fvb.inf { > @@ -746,3 +759,4 @@ [Components] > <LibraryClasses> > NULL|MdeModulePkg/Library/VarCheckUefiLib/VarCheckUefiLib.inf > } > +!endif > diff --git a/OvmfPkg/OvmfPkgIa32X64.dsc b/OvmfPkg/OvmfPkgIa32X64.dsc > index a4f287b..4aa7ba5 100644 > --- a/OvmfPkg/OvmfPkgIa32X64.dsc > +++ b/OvmfPkg/OvmfPkgIa32X64.dsc > @@ -317,6 +317,7 @@ [LibraryClasses.common.DXE_SMM_DRIVER] > !ifdef $(SOURCE_DEBUG_ENABLE) > DebugAgentLib|SourceLevelDebugPkg/Library/DebugAgent/SmmDebugAgentLib.inf > !endif > + BaseCryptLib|CryptoPkg/Library/BaseCryptLib/SmmCryptLib.inf > > [LibraryClasses.common.SMM_CORE] > PcdLib|MdePkg/Library/DxePcdLib/DxePcdLib.inf > @@ -738,10 +739,22 @@ [Components.X64] > SmmLib|MdePkg/Library/SmmLibNull/SmmLibNull.inf > > SmmCpuFeaturesLib|OvmfPkg/Library/SmmCpuFeaturesLib/SmmCpuFeaturesLib.inf > } > -!endif > > # > - # Variable driver stack > + # Variable driver stack (SMM) > + # > + OvmfPkg/QemuFlashFvbServicesRuntimeDxe/FvbServicesSmm.inf > + MdeModulePkg/Universal/FaultTolerantWriteDxe/FaultTolerantWriteSmm.inf > + MdeModulePkg/Universal/Variable/RuntimeDxe/VariableSmm.inf { > + <LibraryClasses> > + NULL|MdeModulePkg/Library/VarCheckUefiLib/VarCheckUefiLib.inf > + } > + MdeModulePkg/Universal/Variable/RuntimeDxe/VariableSmmRuntimeDxe.inf > + > +!else > + > + # > + # Variable driver stack (non-SMM) > # > OvmfPkg/QemuFlashFvbServicesRuntimeDxe/FvbServicesRuntimeDxe.inf > OvmfPkg/EmuVariableFvbRuntimeDxe/Fvb.inf { > @@ -753,3 +766,4 @@ [Components.X64] > <LibraryClasses> > NULL|MdeModulePkg/Library/VarCheckUefiLib/VarCheckUefiLib.inf > } > +!endif > diff --git a/OvmfPkg/OvmfPkgX64.dsc b/OvmfPkg/OvmfPkgX64.dsc > index 3f5f94d..6ea135d 100644 > --- a/OvmfPkg/OvmfPkgX64.dsc > +++ b/OvmfPkg/OvmfPkgX64.dsc > @@ -317,6 +317,7 @@ [LibraryClasses.common.DXE_SMM_DRIVER] > !ifdef $(SOURCE_DEBUG_ENABLE) > DebugAgentLib|SourceLevelDebugPkg/Library/DebugAgent/SmmDebugAgentLib.inf > !endif > + BaseCryptLib|CryptoPkg/Library/BaseCryptLib/SmmCryptLib.inf > > [LibraryClasses.common.SMM_CORE] > PcdLib|MdePkg/Library/DxePcdLib/DxePcdLib.inf > @@ -736,10 +737,22 @@ [Components] > SmmLib|MdePkg/Library/SmmLibNull/SmmLibNull.inf > > SmmCpuFeaturesLib|OvmfPkg/Library/SmmCpuFeaturesLib/SmmCpuFeaturesLib.inf > } > -!endif > > # > - # Variable driver stack > + # Variable driver stack (SMM) > + # > + OvmfPkg/QemuFlashFvbServicesRuntimeDxe/FvbServicesSmm.inf > + MdeModulePkg/Universal/FaultTolerantWriteDxe/FaultTolerantWriteSmm.inf > + MdeModulePkg/Universal/Variable/RuntimeDxe/VariableSmm.inf { > + <LibraryClasses> > + NULL|MdeModulePkg/Library/VarCheckUefiLib/VarCheckUefiLib.inf > + } > + MdeModulePkg/Universal/Variable/RuntimeDxe/VariableSmmRuntimeDxe.inf > + > +!else > + > + # > + # Variable driver stack (non-SMM) > # > OvmfPkg/QemuFlashFvbServicesRuntimeDxe/FvbServicesRuntimeDxe.inf > OvmfPkg/EmuVariableFvbRuntimeDxe/Fvb.inf { > @@ -751,3 +764,4 @@ [Components] > <LibraryClasses> > NULL|MdeModulePkg/Library/VarCheckUefiLib/VarCheckUefiLib.inf > } > +!endif > diff --git a/OvmfPkg/OvmfPkgIa32.fdf b/OvmfPkg/OvmfPkgIa32.fdf > index 5b829d4..a0233bf 100644 > --- a/OvmfPkg/OvmfPkgIa32.fdf > +++ b/OvmfPkg/OvmfPkgIa32.fdf > @@ -199,7 +199,9 @@ [FV.DXEFV] > APRIORI DXE { > INF MdeModulePkg/Universal/DevicePathDxe/DevicePathDxe.inf > INF MdeModulePkg/Universal/PCD/Dxe/Pcd.inf > +!if $(SMM_REQUIRE) == FALSE > INF OvmfPkg/QemuFlashFvbServicesRuntimeDxe/FvbServicesRuntimeDxe.inf > +!endif > } > > # > @@ -360,15 +362,25 @@ [FV.DXEFV] > INF UefiCpuPkg/CpuIo2Smm/CpuIo2Smm.inf > INF MdeModulePkg/Universal/LockBox/SmmLockBox/SmmLockBox.inf > INF UefiCpuPkg/PiSmmCpuDxeSmm/PiSmmCpuDxeSmm.inf > -!endif > > # > -# Variable driver stack > +# Variable driver stack (SMM) > +# > +INF OvmfPkg/QemuFlashFvbServicesRuntimeDxe/FvbServicesSmm.inf > +INF MdeModulePkg/Universal/FaultTolerantWriteDxe/FaultTolerantWriteSmm.inf > +INF MdeModulePkg/Universal/Variable/RuntimeDxe/VariableSmm.inf > +INF MdeModulePkg/Universal/Variable/RuntimeDxe/VariableSmmRuntimeDxe.inf > + > +!else > + > +# > +# Variable driver stack (non-SMM) > # > INF OvmfPkg/QemuFlashFvbServicesRuntimeDxe/FvbServicesRuntimeDxe.inf > INF OvmfPkg/EmuVariableFvbRuntimeDxe/Fvb.inf > INF MdeModulePkg/Universal/FaultTolerantWriteDxe/FaultTolerantWriteDxe.inf > INF MdeModulePkg/Universal/Variable/RuntimeDxe/VariableRuntimeDxe.inf > +!endif > > > ################################################################################ > > diff --git a/OvmfPkg/OvmfPkgIa32X64.fdf b/OvmfPkg/OvmfPkgIa32X64.fdf > index e215372..e381f79 100644 > --- a/OvmfPkg/OvmfPkgIa32X64.fdf > +++ b/OvmfPkg/OvmfPkgIa32X64.fdf > @@ -199,7 +199,9 @@ [FV.DXEFV] > APRIORI DXE { > INF MdeModulePkg/Universal/DevicePathDxe/DevicePathDxe.inf > INF MdeModulePkg/Universal/PCD/Dxe/Pcd.inf > +!if $(SMM_REQUIRE) == FALSE > INF OvmfPkg/QemuFlashFvbServicesRuntimeDxe/FvbServicesRuntimeDxe.inf > +!endif > } > > # > @@ -360,15 +362,25 @@ [FV.DXEFV] > INF UefiCpuPkg/CpuIo2Smm/CpuIo2Smm.inf > INF MdeModulePkg/Universal/LockBox/SmmLockBox/SmmLockBox.inf > INF UefiCpuPkg/PiSmmCpuDxeSmm/PiSmmCpuDxeSmm.inf > -!endif > > # > -# Variable driver stack > +# Variable driver stack (SMM) > +# > +INF OvmfPkg/QemuFlashFvbServicesRuntimeDxe/FvbServicesSmm.inf > +INF MdeModulePkg/Universal/FaultTolerantWriteDxe/FaultTolerantWriteSmm.inf > +INF MdeModulePkg/Universal/Variable/RuntimeDxe/VariableSmm.inf > +INF MdeModulePkg/Universal/Variable/RuntimeDxe/VariableSmmRuntimeDxe.inf > + > +!else > + > +# > +# Variable driver stack (non-SMM) > # > INF OvmfPkg/QemuFlashFvbServicesRuntimeDxe/FvbServicesRuntimeDxe.inf > INF OvmfPkg/EmuVariableFvbRuntimeDxe/Fvb.inf > INF MdeModulePkg/Universal/FaultTolerantWriteDxe/FaultTolerantWriteDxe.inf > INF MdeModulePkg/Universal/Variable/RuntimeDxe/VariableRuntimeDxe.inf > +!endif > > > ################################################################################ > > diff --git a/OvmfPkg/OvmfPkgX64.fdf b/OvmfPkg/OvmfPkgX64.fdf > index 6d6d4a2..bad6c38 100644 > --- a/OvmfPkg/OvmfPkgX64.fdf > +++ b/OvmfPkg/OvmfPkgX64.fdf > @@ -199,7 +199,9 @@ [FV.DXEFV] > APRIORI DXE { > INF MdeModulePkg/Universal/DevicePathDxe/DevicePathDxe.inf > INF MdeModulePkg/Universal/PCD/Dxe/Pcd.inf > +!if $(SMM_REQUIRE) == FALSE > INF OvmfPkg/QemuFlashFvbServicesRuntimeDxe/FvbServicesRuntimeDxe.inf > +!endif > } > > # > @@ -360,15 +362,25 @@ [FV.DXEFV] > INF UefiCpuPkg/CpuIo2Smm/CpuIo2Smm.inf > INF MdeModulePkg/Universal/LockBox/SmmLockBox/SmmLockBox.inf > INF UefiCpuPkg/PiSmmCpuDxeSmm/PiSmmCpuDxeSmm.inf > -!endif > > # > -# Variable driver stack > +# Variable driver stack (SMM) > +# > +INF OvmfPkg/QemuFlashFvbServicesRuntimeDxe/FvbServicesSmm.inf > +INF MdeModulePkg/Universal/FaultTolerantWriteDxe/FaultTolerantWriteSmm.inf > +INF MdeModulePkg/Universal/Variable/RuntimeDxe/VariableSmm.inf > +INF MdeModulePkg/Universal/Variable/RuntimeDxe/VariableSmmRuntimeDxe.inf > + > +!else > + > +# > +# Variable driver stack (non-SMM) > # > INF OvmfPkg/QemuFlashFvbServicesRuntimeDxe/FvbServicesRuntimeDxe.inf > INF OvmfPkg/EmuVariableFvbRuntimeDxe/Fvb.inf > INF MdeModulePkg/Universal/FaultTolerantWriteDxe/FaultTolerantWriteDxe.inf > INF MdeModulePkg/Universal/Variable/RuntimeDxe/VariableRuntimeDxe.inf > +!endif > > > ################################################################################ > > -- > 1.8.3.1 > > > _______________________________________________ > edk2-devel mailing list > [email protected] > https://lists.01.org/mailman/listinfo/edk2-devel _______________________________________________ edk2-devel mailing list [email protected] https://lists.01.org/mailman/listinfo/edk2-devel

