Re: [edk2] [PATCH v3 50/52] OvmfPkg: pull in SMM-based variable driver stack

2015-10-26 Thread Jordan Justen
47-50 Reviewed-by: Jordan Justen 

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 
> ---
> 
> Notes:
> v2:
> - hook VarCheckUefiLib into VariableSmm
>   
> 
> 
>  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 {
> +
> +  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]
>  
>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 {
> +
> +  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]
>  
>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
>  
>  

Re: [edk2] [PATCH v3 50/52] OvmfPkg: pull in SMM-based variable driver stack

2015-10-26 Thread Laszlo Ersek
On 10/26/15 08:04, Jordan Justen wrote:
> 47-50 Reviewed-by: Jordan Justen 

Thanks! I applied the tag to the patches in question.

> 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.)

I agree that from the four you named, only patch v3 49/52 would be a
good candidate for committing right now.

However, I'd like to keep even v3 49/52 in my tree for now. The reason
is that the DSC / FDF files undergo a "suprising" amount of churn in
this series (= many gradual additions), and those patches actually cause
quite a few (context) conflicts whenever I reorder them.

Plus, "OvmfPkg: consolidate variable driver stack in DSC and FDF files"
is a direct prerequisite / preparation patch for the one after it
("OvmfPkg: pull in SMM-based variable driver stack"). I think it makes
sense to keep those two close to each other.

So, I've picked up your R-b's (thanks again for them!), but if you don't
mind, I'd like to hang on to v3 49/52 until the SMM stuff converges and
gets committed first.

Thanks!
Laszlo

> 
> -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 
>> ---
>>
>> Notes:
>> v2:
>> - hook VarCheckUefiLib into VariableSmm
>>   
>> 
>>
>>  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 {
>> +
>> +  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]
>>  
>>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
>> +  

[edk2] [PATCH v3 50/52] OvmfPkg: pull in SMM-based variable driver stack

2015-10-14 Thread Laszlo Ersek
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 
---

Notes:
v2:
- hook VarCheckUefiLib into VariableSmm
  


 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 {
+
+  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]
 
   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 {
+
+  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]
 
   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 {
+
+  NULL|MdeModulePkg/Library/VarCheckUefiLib/VarCheckUefiLib.inf
+  }
+