MdeModulePkg/Library/VarCheckPolicyLib/VarCheckPolicyLib.c | 346 ++++++++ MdeModulePkg/Library/VariablePolicyHelperLib/VariablePolicyHelperLib.c | 396 ++++++++++ MdeModulePkg/Library/VariablePolicyLib/VariablePolicyExtraInitNull.c | 46 ++ MdeModulePkg/Library/VariablePolicyLib/VariablePolicyExtraInitRuntimeDxe.c | 85 ++ MdeModulePkg/Library/VariablePolicyLib/VariablePolicyLib.c | 830 ++++++++++++++++++++ MdeModulePkg/Universal/Variable/RuntimeDxe/TcgMorLockDxe.c | 52 +- MdeModulePkg/Universal/Variable/RuntimeDxe/TcgMorLockSmm.c | 60 +- MdeModulePkg/Universal/Variable/RuntimeDxe/VarCheck.c | 49 +- MdeModulePkg/Universal/Variable/RuntimeDxe/VariableDxe.c | 60 ++ MdeModulePkg/Universal/Variable/RuntimeDxe/VariableLockRequestToLock.c | 71 ++ MdeModulePkg/Universal/Variable/RuntimeDxe/VariablePolicySmmDxe.c | 573 ++++++++++++++ MdeModulePkg/Universal/Variable/RuntimeDxe/VariableSmm.c | 7 + MdeModulePkg/Universal/Variable/RuntimeDxe/VariableSmmRuntimeDxe.c | 14 + SecurityPkg/Library/AuthVariableLib/AuthService.c | 30 +- ArmVirtPkg/ArmVirt.dsc.inc | 4 + EmulatorPkg/EmulatorPkg.dsc | 3 + MdeModulePkg/Include/Guid/VarCheckPolicyMmi.h | 54 ++ MdeModulePkg/Include/Library/VariablePolicyHelperLib.h | 164 ++++ MdeModulePkg/Include/Library/VariablePolicyLib.h | 207 +++++ MdeModulePkg/Include/Protocol/VariablePolicy.h | 157 ++++ MdeModulePkg/Library/VarCheckPolicyLib/VarCheckPolicyLib.inf | 42 + MdeModulePkg/Library/VarCheckPolicyLib/VarCheckPolicyLib.uni | 12 + MdeModulePkg/Library/VariablePolicyHelperLib/VariablePolicyHelperLib.inf | 35 + MdeModulePkg/Library/VariablePolicyHelperLib/VariablePolicyHelperLib.uni | 12 + MdeModulePkg/Library/VariablePolicyLib/ReadMe.md | 406 ++++++++++ MdeModulePkg/Library/VariablePolicyLib/VariablePolicyLib.inf | 48 ++ MdeModulePkg/Library/VariablePolicyLib/VariablePolicyLib.uni | 12 + MdeModulePkg/Library/VariablePolicyLib/VariablePolicyLibRuntimeDxe.inf | 51 ++ MdeModulePkg/MdeModulePkg.ci.yaml | 4 +- MdeModulePkg/MdeModulePkg.dec | 26 +- MdeModulePkg/MdeModulePkg.dsc | 9 + MdeModulePkg/MdeModulePkg.uni | 7 + MdeModulePkg/Universal/Variable/RuntimeDxe/VariableRuntimeDxe.inf | 5 + MdeModulePkg/Universal/Variable/RuntimeDxe/VariableSmm.inf | 4 + MdeModulePkg/Universal/Variable/RuntimeDxe/VariableSmmRuntimeDxe.inf | 11 + MdeModulePkg/Universal/Variable/RuntimeDxe/VariableStandaloneMm.inf | 4 + OvmfPkg/OvmfPkgIa32.dsc | 5 + OvmfPkg/OvmfPkgIa32X64.dsc | 5 + OvmfPkg/OvmfPkgX64.dsc | 5 + OvmfPkg/OvmfXen.dsc | 4 + SecurityPkg/Library/AuthVariableLib/AuthVariableLib.inf | 2 + UefiPayloadPkg/UefiPayloadPkgIa32.dsc | 4 + UefiPayloadPkg/UefiPayloadPkgIa32X64.dsc | 4 + 43 files changed, 3845 insertions(+), 80 deletions(-) create mode 100644 MdeModulePkg/Library/VarCheckPolicyLib/VarCheckPolicyLib.c create mode 100644 MdeModulePkg/Library/VariablePolicyHelperLib/VariablePolicyHelperLib.c create mode 100644 MdeModulePkg/Library/VariablePolicyLib/VariablePolicyExtraInitNull.c create mode 100644 MdeModulePkg/Library/VariablePolicyLib/VariablePolicyExtraInitRuntimeDxe.c create mode 100644 MdeModulePkg/Library/VariablePolicyLib/VariablePolicyLib.c create mode 100644 MdeModulePkg/Universal/Variable/RuntimeDxe/VariableLockRequestToLock.c create mode 100644 MdeModulePkg/Universal/Variable/RuntimeDxe/VariablePolicySmmDxe.c create mode 100644 MdeModulePkg/Include/Guid/VarCheckPolicyMmi.h create mode 100644 MdeModulePkg/Include/Library/VariablePolicyHelperLib.h create mode 100644 MdeModulePkg/Include/Library/VariablePolicyLib.h create mode 100644 MdeModulePkg/Include/Protocol/VariablePolicy.h create mode 100644 MdeModulePkg/Library/VarCheckPolicyLib/VarCheckPolicyLib.inf create mode 100644 MdeModulePkg/Library/VarCheckPolicyLib/VarCheckPolicyLib.uni create mode 100644 MdeModulePkg/Library/VariablePolicyHelperLib/VariablePolicyHelperLib.inf create mode 100644 MdeModulePkg/Library/VariablePolicyHelperLib/VariablePolicyHelperLib.uni create mode 100644 MdeModulePkg/Library/VariablePolicyLib/ReadMe.md create mode 100644 MdeModulePkg/Library/VariablePolicyLib/VariablePolicyLib.inf create mode 100644 MdeModulePkg/Library/VariablePolicyLib/VariablePolicyLib.uni create mode 100644 MdeModulePkg/Library/VariablePolicyLib/VariablePolicyLibRuntimeDxe.inf
The 14 patches in this series add the VariablePolicy feature to the core, deprecate Edk2VarLock (while adding a compatibility layer to reduce code churn), and integrate the VariablePolicy libraries and protocols into Variable Services. Since the integration requires multiple changes, including adding libraries, a protocol, an SMI communication handler, and VariableServices integration, the patches are broken up by individual library additions and then a final integration. Security-sensitive changes like bypassing Authenticated Variable enforcement are also broken out into individual patches so that attention can be called directly to them. Platform porting instructions are described in this wiki entry: https://github.com/tianocore/tianocore.github.io/wiki/VariablePolicy-Protocol---Enhanced-Method-for-Managing-Variables#platform-porting Discussion of the feature can be found in multiple places throughout the last year on the RFC channel, staging branches, and in devel. Most recently, this subject was discussed in this thread: https://edk2.groups.io/g/devel/message/53712 (the code branches shared in that discussion are now out of date, but the whitepapers and discussion are relevant). Cc: Jiewen Yao <jiewen.yao@intel.com> Cc: Dandan Bi <dandan.bi@intel.com> Cc: Chao Zhang <chao.b.zhang@intel.com> Cc: Jian J Wang <jian.j.wang@intel.com> Cc: Hao A Wu <hao.a.wu@intel.com> Cc: Liming Gao <liming.gao@intel.com> Cc: Jordan Justen <jordan.l.justen@intel.com> Cc: Laszlo Ersek <lersek@redhat.com> Cc: Ard Biesheuvel <ard.biesheuvel@arm.com> Cc: Andrew Fish <afish@apple.com> Cc: Ray Ni <ray.ni@intel.com> Cc: Bret Barkelew <brbarkel@microsoft.com> Signed-off-by: Bret Barkelew <brbarkel@microsoft.com> v9 changes: * Rebase * Address the event ordering issues around MorLock at EndOfDxe * Drop problematic tests * Address ECC issues v8 changes: * Rebase * Small tweaks from final PRs * Drank a lot * Enrolled several members and a steward in CatFacts v7 changes: * Address comments from Dandan about security of the MM handler * Add readme * Fix bug around hex characters in BOOT####, etc * Add additional testing for hex characters * Add additional testing for authenticated variables v6 changes: * Fix an issue with uninitialized Status in InitVariablePolicyLib() and DeinitVariablePolicyLib() * Fix GCC building in shell-based functional test * Rebase on latest origin/master v5 changes: * Fix the CONST mismatch in VariablePolicy.h and VariablePolicySmmDxe.c * Fix EFIAPI mismatches in the functional unittest * Rebase on latest origin/master v4 changes: * Remove Optional PcdAllowVariablePolicyEnforcementDisable PCD from platforms * Rebase on master * Migrate to new MmCommunicate2 protocol * Fix an oversight in the default return value for InitMmCommonCommBuffer * Fix in VariablePolicyLib to allow ExtraInitRuntimeDxe to consume variables V3 changes: * Address all non-unittest issues with ECC * Make additional style changes * Include section name in hunk headers in "ini-style" files * Remove requirement for the EdkiiPiSmmCommunicationsRegionTable driver (now allocates its own buffer) * Change names from VARIABLE_POLICY_PROTOCOL and gVariablePolicyProtocolGuid to EDKII_VARIABLE_POLICY_PROTOCOL and gEdkiiVariablePolicyProtocolGuid * Fix GCC warning about initializing externs * Add UNI strings for new PCD * Add patches for ArmVirtPkg, OvmfXen, and UefiPayloadPkg * Reorder patches according to Liming's feedback about adding to platforms before changing variable driver V2 changes: * Fixed implementation for RuntimeDxe * Add PCD to block DisableVariablePolicy * Fix the DumpVariablePolicy pagination in SMM Bret Barkelew (13): MdeModulePkg: Define the VariablePolicy protocol interface MdeModulePkg: Define the VariablePolicyLib MdeModulePkg: Define the VariablePolicyHelperLib MdeModulePkg: Define the VarCheckPolicyLib and SMM interface OvmfPkg: Add VariablePolicy engine to OvmfPkg platform EmulatorPkg: Add VariablePolicy engine to EmulatorPkg platform ArmVirtPkg: Add VariablePolicy engine to ArmVirtPkg platform UefiPayloadPkg: Add VariablePolicy engine to UefiPayloadPkg platform MdeModulePkg: Connect VariablePolicy business logic to VariableServices MdeModulePkg: Allow VariablePolicy state to delete protected variables SecurityPkg: Allow VariablePolicy state to delete authenticated variables MdeModulePkg: Change TCG MOR variables to use VariablePolicy MdeModulePkg: Drop VarLock from RuntimeDxe variable driver MdeModulePkg/Library/VarCheckPolicyLib/VarCheckPolicyLib.c | 346 ++++++++ MdeModulePkg/Library/VariablePolicyHelperLib/VariablePolicyHelperLib.c | 396 ++++++++++ MdeModulePkg/Library/VariablePolicyLib/VariablePolicyExtraInitNull.c | 46 ++ MdeModulePkg/Library/VariablePolicyLib/VariablePolicyExtraInitRuntimeDxe.c | 85 ++ MdeModulePkg/Library/VariablePolicyLib/VariablePolicyLib.c | 830 ++++++++++++++++++++ MdeModulePkg/Universal/Variable/RuntimeDxe/TcgMorLockDxe.c | 52 +- MdeModulePkg/Universal/Variable/RuntimeDxe/TcgMorLockSmm.c | 60 +- MdeModulePkg/Universal/Variable/RuntimeDxe/VarCheck.c | 49 +- MdeModulePkg/Universal/Variable/RuntimeDxe/VariableDxe.c | 60 ++ MdeModulePkg/Universal/Variable/RuntimeDxe/VariableLockRequestToLock.c | 71 ++ MdeModulePkg/Universal/Variable/RuntimeDxe/VariablePolicySmmDxe.c | 573 ++++++++++++++ MdeModulePkg/Universal/Variable/RuntimeDxe/VariableSmm.c | 7 + MdeModulePkg/Universal/Variable/RuntimeDxe/VariableSmmRuntimeDxe.c | 14 + SecurityPkg/Library/AuthVariableLib/AuthService.c | 30 +- ArmVirtPkg/ArmVirt.dsc.inc | 4 + EmulatorPkg/EmulatorPkg.dsc | 3 + MdeModulePkg/Include/Guid/VarCheckPolicyMmi.h | 54 ++ MdeModulePkg/Include/Library/VariablePolicyHelperLib.h | 164 ++++ MdeModulePkg/Include/Library/VariablePolicyLib.h | 207 +++++ MdeModulePkg/Include/Protocol/VariablePolicy.h | 157 ++++ MdeModulePkg/Library/VarCheckPolicyLib/VarCheckPolicyLib.inf | 42 + MdeModulePkg/Library/VarCheckPolicyLib/VarCheckPolicyLib.uni | 12 + MdeModulePkg/Library/VariablePolicyHelperLib/VariablePolicyHelperLib.inf | 35 + MdeModulePkg/Library/VariablePolicyHelperLib/VariablePolicyHelperLib.uni | 12 + MdeModulePkg/Library/VariablePolicyLib/ReadMe.md | 406 ++++++++++ MdeModulePkg/Library/VariablePolicyLib/VariablePolicyLib.inf | 48 ++ MdeModulePkg/Library/VariablePolicyLib/VariablePolicyLib.uni | 12 + MdeModulePkg/Library/VariablePolicyLib/VariablePolicyLibRuntimeDxe.inf | 51 ++ MdeModulePkg/MdeModulePkg.ci.yaml | 4 +- MdeModulePkg/MdeModulePkg.dec | 26 +- MdeModulePkg/MdeModulePkg.dsc | 9 + MdeModulePkg/MdeModulePkg.uni | 7 + MdeModulePkg/Universal/Variable/RuntimeDxe/VariableRuntimeDxe.inf | 5 + MdeModulePkg/Universal/Variable/RuntimeDxe/VariableSmm.inf | 4 + MdeModulePkg/Universal/Variable/RuntimeDxe/VariableSmmRuntimeDxe.inf | 11 + MdeModulePkg/Universal/Variable/RuntimeDxe/VariableStandaloneMm.inf | 4 + OvmfPkg/OvmfPkgIa32.dsc | 5 + OvmfPkg/OvmfPkgIa32X64.dsc | 5 + OvmfPkg/OvmfPkgX64.dsc | 5 + OvmfPkg/OvmfXen.dsc | 4 + SecurityPkg/Library/AuthVariableLib/AuthVariableLib.inf | 2 + UefiPayloadPkg/UefiPayloadPkgIa32.dsc | 4 + UefiPayloadPkg/UefiPayloadPkgIa32X64.dsc | 4 + 43 files changed, 3845 insertions(+), 80 deletions(-) create mode 100644 MdeModulePkg/Library/VarCheckPolicyLib/VarCheckPolicyLib.c create mode 100644 MdeModulePkg/Library/VariablePolicyHelperLib/VariablePolicyHelperLib.c create mode 100644 MdeModulePkg/Library/VariablePolicyLib/VariablePolicyExtraInitNull.c create mode 100644 MdeModulePkg/Library/VariablePolicyLib/VariablePolicyExtraInitRuntimeDxe.c create mode 100644 MdeModulePkg/Library/VariablePolicyLib/VariablePolicyLib.c create mode 100644 MdeModulePkg/Universal/Variable/RuntimeDxe/VariableLockRequestToLock.c create mode 100644 MdeModulePkg/Universal/Variable/RuntimeDxe/VariablePolicySmmDxe.c create mode 100644 MdeModulePkg/Include/Guid/VarCheckPolicyMmi.h create mode 100644 MdeModulePkg/Include/Library/VariablePolicyHelperLib.h create mode 100644 MdeModulePkg/Include/Library/VariablePolicyLib.h create mode 100644 MdeModulePkg/Include/Protocol/VariablePolicy.h create mode 100644 MdeModulePkg/Library/VarCheckPolicyLib/VarCheckPolicyLib.inf create mode 100644 MdeModulePkg/Library/VarCheckPolicyLib/VarCheckPolicyLib.uni create mode 100644 MdeModulePkg/Library/VariablePolicyHelperLib/VariablePolicyHelperLib.inf create mode 100644 MdeModulePkg/Library/VariablePolicyHelperLib/VariablePolicyHelperLib.uni create mode 100644 MdeModulePkg/Library/VariablePolicyLib/ReadMe.md create mode 100644 MdeModulePkg/Library/VariablePolicyLib/VariablePolicyLib.inf create mode 100644 MdeModulePkg/Library/VariablePolicyLib/VariablePolicyLib.uni create mode 100644 MdeModulePkg/Library/VariablePolicyLib/VariablePolicyLibRuntimeDxe.inf -- 2.28.0.windows.1 -=-=-=-=-=-=-=-=-=-=-=- Groups.io Links: You receive all messages sent to this group. View/Reply Online (#67146): https://edk2.groups.io/g/devel/message/67146 Mute This Topic: https://groups.io/mt/78130767/1787277 Group Owner: devel+owner@edk2.groups.io Unsubscribe: https://edk2.groups.io/g/devel/unsub [importer@patchew.org] -=-=-=-=-=-=-=-=-=-=-=-
On 11/9/20 7:45 AM, Bret Barkelew wrote: > The 14 patches in this series add the VariablePolicy feature to the core, > deprecate Edk2VarLock (while adding a compatibility layer to reduce code > churn), and integrate the VariablePolicy libraries and protocols into > Variable Services. > > Since the integration requires multiple changes, including adding libraries, > a protocol, an SMI communication handler, and VariableServices integration, > the patches are broken up by individual library additions and then a final > integration. Security-sensitive changes like bypassing Authenticated > Variable enforcement are also broken out into individual patches so that > attention can be called directly to them. > > Platform porting instructions are described in this wiki entry: > https://github.com/tianocore/tianocore.github.io/wiki/VariablePolicy-Protocol---Enhanced-Method-for-Managing-Variables#platform-porting > > Discussion of the feature can be found in multiple places throughout > the last year on the RFC channel, staging branches, and in devel. > > Most recently, this subject was discussed in this thread: > https://edk2.groups.io/g/devel/message/53712 > (the code branches shared in that discussion are now out of date, but the > whitepapers and discussion are relevant). > > Cc: Jiewen Yao <jiewen.yao@intel.com> > Cc: Dandan Bi <dandan.bi@intel.com> > Cc: Chao Zhang <chao.b.zhang@intel.com> > Cc: Jian J Wang <jian.j.wang@intel.com> > Cc: Hao A Wu <hao.a.wu@intel.com> > Cc: Liming Gao <liming.gao@intel.com> > Cc: Jordan Justen <jordan.l.justen@intel.com> > Cc: Laszlo Ersek <lersek@redhat.com> > Cc: Ard Biesheuvel <ard.biesheuvel@arm.com> > Cc: Andrew Fish <afish@apple.com> > Cc: Ray Ni <ray.ni@intel.com> > Cc: Bret Barkelew <brbarkel@microsoft.com> > Signed-off-by: Bret Barkelew <brbarkel@microsoft.com> > This series has now made it into edk2, and has subsequently broken every single platform in edk2-platforms. Is anyone intending to propose any fixes for this? > v9 changes: > * Rebase > * Address the event ordering issues around MorLock at EndOfDxe > * Drop problematic tests > * Address ECC issues > > v8 changes: > * Rebase > * Small tweaks from final PRs > * Drank a lot > * Enrolled several members and a steward in CatFacts > > v7 changes: > * Address comments from Dandan about security of the MM handler > * Add readme > * Fix bug around hex characters in BOOT####, etc > * Add additional testing for hex characters > * Add additional testing for authenticated variables > > v6 changes: > * Fix an issue with uninitialized Status in InitVariablePolicyLib() and DeinitVariablePolicyLib() > * Fix GCC building in shell-based functional test > * Rebase on latest origin/master > > v5 changes: > * Fix the CONST mismatch in VariablePolicy.h and VariablePolicySmmDxe.c > * Fix EFIAPI mismatches in the functional unittest > * Rebase on latest origin/master > > v4 changes: > * Remove Optional PcdAllowVariablePolicyEnforcementDisable PCD from platforms > * Rebase on master > * Migrate to new MmCommunicate2 protocol > * Fix an oversight in the default return value for InitMmCommonCommBuffer > * Fix in VariablePolicyLib to allow ExtraInitRuntimeDxe to consume variables > > V3 changes: > * Address all non-unittest issues with ECC > * Make additional style changes > * Include section name in hunk headers in "ini-style" files > * Remove requirement for the EdkiiPiSmmCommunicationsRegionTable driver > (now allocates its own buffer) > * Change names from VARIABLE_POLICY_PROTOCOL and gVariablePolicyProtocolGuid > to EDKII_VARIABLE_POLICY_PROTOCOL and gEdkiiVariablePolicyProtocolGuid > * Fix GCC warning about initializing externs > * Add UNI strings for new PCD > * Add patches for ArmVirtPkg, OvmfXen, and UefiPayloadPkg > * Reorder patches according to Liming's feedback about adding to platforms > before changing variable driver > > V2 changes: > * Fixed implementation for RuntimeDxe > * Add PCD to block DisableVariablePolicy > * Fix the DumpVariablePolicy pagination in SMM > > Bret Barkelew (13): > MdeModulePkg: Define the VariablePolicy protocol interface > MdeModulePkg: Define the VariablePolicyLib > MdeModulePkg: Define the VariablePolicyHelperLib > MdeModulePkg: Define the VarCheckPolicyLib and SMM interface > OvmfPkg: Add VariablePolicy engine to OvmfPkg platform > EmulatorPkg: Add VariablePolicy engine to EmulatorPkg platform > ArmVirtPkg: Add VariablePolicy engine to ArmVirtPkg platform > UefiPayloadPkg: Add VariablePolicy engine to UefiPayloadPkg platform > MdeModulePkg: Connect VariablePolicy business logic to > VariableServices > MdeModulePkg: Allow VariablePolicy state to delete protected variables > SecurityPkg: Allow VariablePolicy state to delete authenticated > variables > MdeModulePkg: Change TCG MOR variables to use VariablePolicy > MdeModulePkg: Drop VarLock from RuntimeDxe variable driver > > MdeModulePkg/Library/VarCheckPolicyLib/VarCheckPolicyLib.c | 346 ++++++++ > MdeModulePkg/Library/VariablePolicyHelperLib/VariablePolicyHelperLib.c | 396 ++++++++++ > MdeModulePkg/Library/VariablePolicyLib/VariablePolicyExtraInitNull.c | 46 ++ > MdeModulePkg/Library/VariablePolicyLib/VariablePolicyExtraInitRuntimeDxe.c | 85 ++ > MdeModulePkg/Library/VariablePolicyLib/VariablePolicyLib.c | 830 ++++++++++++++++++++ > MdeModulePkg/Universal/Variable/RuntimeDxe/TcgMorLockDxe.c | 52 +- > MdeModulePkg/Universal/Variable/RuntimeDxe/TcgMorLockSmm.c | 60 +- > MdeModulePkg/Universal/Variable/RuntimeDxe/VarCheck.c | 49 +- > MdeModulePkg/Universal/Variable/RuntimeDxe/VariableDxe.c | 60 ++ > MdeModulePkg/Universal/Variable/RuntimeDxe/VariableLockRequestToLock.c | 71 ++ > MdeModulePkg/Universal/Variable/RuntimeDxe/VariablePolicySmmDxe.c | 573 ++++++++++++++ > MdeModulePkg/Universal/Variable/RuntimeDxe/VariableSmm.c | 7 + > MdeModulePkg/Universal/Variable/RuntimeDxe/VariableSmmRuntimeDxe.c | 14 + > SecurityPkg/Library/AuthVariableLib/AuthService.c | 30 +- > ArmVirtPkg/ArmVirt.dsc.inc | 4 + > EmulatorPkg/EmulatorPkg.dsc | 3 + > MdeModulePkg/Include/Guid/VarCheckPolicyMmi.h | 54 ++ > MdeModulePkg/Include/Library/VariablePolicyHelperLib.h | 164 ++++ > MdeModulePkg/Include/Library/VariablePolicyLib.h | 207 +++++ > MdeModulePkg/Include/Protocol/VariablePolicy.h | 157 ++++ > MdeModulePkg/Library/VarCheckPolicyLib/VarCheckPolicyLib.inf | 42 + > MdeModulePkg/Library/VarCheckPolicyLib/VarCheckPolicyLib.uni | 12 + > MdeModulePkg/Library/VariablePolicyHelperLib/VariablePolicyHelperLib.inf | 35 + > MdeModulePkg/Library/VariablePolicyHelperLib/VariablePolicyHelperLib.uni | 12 + > MdeModulePkg/Library/VariablePolicyLib/ReadMe.md | 406 ++++++++++ > MdeModulePkg/Library/VariablePolicyLib/VariablePolicyLib.inf | 48 ++ > MdeModulePkg/Library/VariablePolicyLib/VariablePolicyLib.uni | 12 + > MdeModulePkg/Library/VariablePolicyLib/VariablePolicyLibRuntimeDxe.inf | 51 ++ > MdeModulePkg/MdeModulePkg.ci.yaml | 4 +- > MdeModulePkg/MdeModulePkg.dec | 26 +- > MdeModulePkg/MdeModulePkg.dsc | 9 + > MdeModulePkg/MdeModulePkg.uni | 7 + > MdeModulePkg/Universal/Variable/RuntimeDxe/VariableRuntimeDxe.inf | 5 + > MdeModulePkg/Universal/Variable/RuntimeDxe/VariableSmm.inf | 4 + > MdeModulePkg/Universal/Variable/RuntimeDxe/VariableSmmRuntimeDxe.inf | 11 + > MdeModulePkg/Universal/Variable/RuntimeDxe/VariableStandaloneMm.inf | 4 + > OvmfPkg/OvmfPkgIa32.dsc | 5 + > OvmfPkg/OvmfPkgIa32X64.dsc | 5 + > OvmfPkg/OvmfPkgX64.dsc | 5 + > OvmfPkg/OvmfXen.dsc | 4 + > SecurityPkg/Library/AuthVariableLib/AuthVariableLib.inf | 2 + > UefiPayloadPkg/UefiPayloadPkgIa32.dsc | 4 + > UefiPayloadPkg/UefiPayloadPkgIa32X64.dsc | 4 + > 43 files changed, 3845 insertions(+), 80 deletions(-) > create mode 100644 MdeModulePkg/Library/VarCheckPolicyLib/VarCheckPolicyLib.c > create mode 100644 MdeModulePkg/Library/VariablePolicyHelperLib/VariablePolicyHelperLib.c > create mode 100644 MdeModulePkg/Library/VariablePolicyLib/VariablePolicyExtraInitNull.c > create mode 100644 MdeModulePkg/Library/VariablePolicyLib/VariablePolicyExtraInitRuntimeDxe.c > create mode 100644 MdeModulePkg/Library/VariablePolicyLib/VariablePolicyLib.c > create mode 100644 MdeModulePkg/Universal/Variable/RuntimeDxe/VariableLockRequestToLock.c > create mode 100644 MdeModulePkg/Universal/Variable/RuntimeDxe/VariablePolicySmmDxe.c > create mode 100644 MdeModulePkg/Include/Guid/VarCheckPolicyMmi.h > create mode 100644 MdeModulePkg/Include/Library/VariablePolicyHelperLib.h > create mode 100644 MdeModulePkg/Include/Library/VariablePolicyLib.h > create mode 100644 MdeModulePkg/Include/Protocol/VariablePolicy.h > create mode 100644 MdeModulePkg/Library/VarCheckPolicyLib/VarCheckPolicyLib.inf > create mode 100644 MdeModulePkg/Library/VarCheckPolicyLib/VarCheckPolicyLib.uni > create mode 100644 MdeModulePkg/Library/VariablePolicyHelperLib/VariablePolicyHelperLib.inf > create mode 100644 MdeModulePkg/Library/VariablePolicyHelperLib/VariablePolicyHelperLib.uni > create mode 100644 MdeModulePkg/Library/VariablePolicyLib/ReadMe.md > create mode 100644 MdeModulePkg/Library/VariablePolicyLib/VariablePolicyLib.inf > create mode 100644 MdeModulePkg/Library/VariablePolicyLib/VariablePolicyLib.uni > create mode 100644 MdeModulePkg/Library/VariablePolicyLib/VariablePolicyLibRuntimeDxe.inf > -=-=-=-=-=-=-=-=-=-=-=- Groups.io Links: You receive all messages sent to this group. View/Reply Online (#67715): https://edk2.groups.io/g/devel/message/67715 Mute This Topic: https://groups.io/mt/78130767/1787277 Group Owner: devel+owner@edk2.groups.io Unsubscribe: https://edk2.groups.io/g/devel/unsub [importer@patchew.org] -=-=-=-=-=-=-=-=-=-=-=-
Those bugs and recommendations were sent out months ago. Several platforms have staged the changes already. You need to add the library class to your DSC. -- [ Insert obscure pop-culture reference here. ] > On Nov 19, 2020, at 4:46 AM, Ard Biesheuvel <ard.biesheuvel@arm.com> wrote: > > On 11/9/20 7:45 AM, Bret Barkelew wrote: >> The 14 patches in this series add the VariablePolicy feature to the core, >> deprecate Edk2VarLock (while adding a compatibility layer to reduce code >> churn), and integrate the VariablePolicy libraries and protocols into >> Variable Services. >> Since the integration requires multiple changes, including adding libraries, >> a protocol, an SMI communication handler, and VariableServices integration, >> the patches are broken up by individual library additions and then a final >> integration. Security-sensitive changes like bypassing Authenticated >> Variable enforcement are also broken out into individual patches so that >> attention can be called directly to them. >> Platform porting instructions are described in this wiki entry: >> https://github.com/tianocore/tianocore.github.io/wiki/VariablePolicy-Protocol---Enhanced-Method-for-Managing-Variables#platform-porting >> Discussion of the feature can be found in multiple places throughout >> the last year on the RFC channel, staging branches, and in devel. >> Most recently, this subject was discussed in this thread: >> https://edk2.groups.io/g/devel/message/53712 >> (the code branches shared in that discussion are now out of date, but the >> whitepapers and discussion are relevant). >> Cc: Jiewen Yao <jiewen.yao@intel.com> >> Cc: Dandan Bi <dandan.bi@intel.com> >> Cc: Chao Zhang <chao.b.zhang@intel.com> >> Cc: Jian J Wang <jian.j.wang@intel.com> >> Cc: Hao A Wu <hao.a.wu@intel.com> >> Cc: Liming Gao <liming.gao@intel.com> >> Cc: Jordan Justen <jordan.l.justen@intel.com> >> Cc: Laszlo Ersek <lersek@redhat.com> >> Cc: Ard Biesheuvel <ard.biesheuvel@arm.com> >> Cc: Andrew Fish <afish@apple.com> >> Cc: Ray Ni <ray.ni@intel.com> >> Cc: Bret Barkelew <brbarkel@microsoft.com> >> Signed-off-by: Bret Barkelew <brbarkel@microsoft.com> > > This series has now made it into edk2, and has subsequently broken every single platform in edk2-platforms. Is anyone intending to propose any fixes for this? > > >> v9 changes: >> * Rebase >> * Address the event ordering issues around MorLock at EndOfDxe >> * Drop problematic tests >> * Address ECC issues >> v8 changes: >> * Rebase >> * Small tweaks from final PRs >> * Drank a lot >> * Enrolled several members and a steward in CatFacts >> v7 changes: >> * Address comments from Dandan about security of the MM handler >> * Add readme >> * Fix bug around hex characters in BOOT####, etc >> * Add additional testing for hex characters >> * Add additional testing for authenticated variables >> v6 changes: >> * Fix an issue with uninitialized Status in InitVariablePolicyLib() and DeinitVariablePolicyLib() >> * Fix GCC building in shell-based functional test >> * Rebase on latest origin/master >> v5 changes: >> * Fix the CONST mismatch in VariablePolicy.h and VariablePolicySmmDxe.c >> * Fix EFIAPI mismatches in the functional unittest >> * Rebase on latest origin/master >> v4 changes: >> * Remove Optional PcdAllowVariablePolicyEnforcementDisable PCD from platforms >> * Rebase on master >> * Migrate to new MmCommunicate2 protocol >> * Fix an oversight in the default return value for InitMmCommonCommBuffer >> * Fix in VariablePolicyLib to allow ExtraInitRuntimeDxe to consume variables >> V3 changes: >> * Address all non-unittest issues with ECC >> * Make additional style changes >> * Include section name in hunk headers in "ini-style" files >> * Remove requirement for the EdkiiPiSmmCommunicationsRegionTable driver >> (now allocates its own buffer) >> * Change names from VARIABLE_POLICY_PROTOCOL and gVariablePolicyProtocolGuid >> to EDKII_VARIABLE_POLICY_PROTOCOL and gEdkiiVariablePolicyProtocolGuid >> * Fix GCC warning about initializing externs >> * Add UNI strings for new PCD >> * Add patches for ArmVirtPkg, OvmfXen, and UefiPayloadPkg >> * Reorder patches according to Liming's feedback about adding to platforms >> before changing variable driver >> V2 changes: >> * Fixed implementation for RuntimeDxe >> * Add PCD to block DisableVariablePolicy >> * Fix the DumpVariablePolicy pagination in SMM >> Bret Barkelew (13): >> MdeModulePkg: Define the VariablePolicy protocol interface >> MdeModulePkg: Define the VariablePolicyLib >> MdeModulePkg: Define the VariablePolicyHelperLib >> MdeModulePkg: Define the VarCheckPolicyLib and SMM interface >> OvmfPkg: Add VariablePolicy engine to OvmfPkg platform >> EmulatorPkg: Add VariablePolicy engine to EmulatorPkg platform >> ArmVirtPkg: Add VariablePolicy engine to ArmVirtPkg platform >> UefiPayloadPkg: Add VariablePolicy engine to UefiPayloadPkg platform >> MdeModulePkg: Connect VariablePolicy business logic to >> VariableServices >> MdeModulePkg: Allow VariablePolicy state to delete protected variables >> SecurityPkg: Allow VariablePolicy state to delete authenticated >> variables >> MdeModulePkg: Change TCG MOR variables to use VariablePolicy >> MdeModulePkg: Drop VarLock from RuntimeDxe variable driver >> MdeModulePkg/Library/VarCheckPolicyLib/VarCheckPolicyLib.c | 346 ++++++++ >> MdeModulePkg/Library/VariablePolicyHelperLib/VariablePolicyHelperLib.c | 396 ++++++++++ >> MdeModulePkg/Library/VariablePolicyLib/VariablePolicyExtraInitNull.c | 46 ++ >> MdeModulePkg/Library/VariablePolicyLib/VariablePolicyExtraInitRuntimeDxe.c | 85 ++ >> MdeModulePkg/Library/VariablePolicyLib/VariablePolicyLib.c | 830 ++++++++++++++++++++ >> MdeModulePkg/Universal/Variable/RuntimeDxe/TcgMorLockDxe.c | 52 +- >> MdeModulePkg/Universal/Variable/RuntimeDxe/TcgMorLockSmm.c | 60 +- >> MdeModulePkg/Universal/Variable/RuntimeDxe/VarCheck.c | 49 +- >> MdeModulePkg/Universal/Variable/RuntimeDxe/VariableDxe.c | 60 ++ >> MdeModulePkg/Universal/Variable/RuntimeDxe/VariableLockRequestToLock.c | 71 ++ >> MdeModulePkg/Universal/Variable/RuntimeDxe/VariablePolicySmmDxe.c | 573 ++++++++++++++ >> MdeModulePkg/Universal/Variable/RuntimeDxe/VariableSmm.c | 7 + >> MdeModulePkg/Universal/Variable/RuntimeDxe/VariableSmmRuntimeDxe.c | 14 + >> SecurityPkg/Library/AuthVariableLib/AuthService.c | 30 +- >> ArmVirtPkg/ArmVirt.dsc.inc | 4 + >> EmulatorPkg/EmulatorPkg.dsc | 3 + >> MdeModulePkg/Include/Guid/VarCheckPolicyMmi.h | 54 ++ >> MdeModulePkg/Include/Library/VariablePolicyHelperLib.h | 164 ++++ >> MdeModulePkg/Include/Library/VariablePolicyLib.h | 207 +++++ >> MdeModulePkg/Include/Protocol/VariablePolicy.h | 157 ++++ >> MdeModulePkg/Library/VarCheckPolicyLib/VarCheckPolicyLib.inf | 42 + >> MdeModulePkg/Library/VarCheckPolicyLib/VarCheckPolicyLib.uni | 12 + >> MdeModulePkg/Library/VariablePolicyHelperLib/VariablePolicyHelperLib.inf | 35 + >> MdeModulePkg/Library/VariablePolicyHelperLib/VariablePolicyHelperLib.uni | 12 + >> MdeModulePkg/Library/VariablePolicyLib/ReadMe.md | 406 ++++++++++ >> MdeModulePkg/Library/VariablePolicyLib/VariablePolicyLib.inf | 48 ++ >> MdeModulePkg/Library/VariablePolicyLib/VariablePolicyLib.uni | 12 + >> MdeModulePkg/Library/VariablePolicyLib/VariablePolicyLibRuntimeDxe.inf | 51 ++ >> MdeModulePkg/MdeModulePkg.ci.yaml | 4 +- >> MdeModulePkg/MdeModulePkg.dec | 26 +- >> MdeModulePkg/MdeModulePkg.dsc | 9 + >> MdeModulePkg/MdeModulePkg.uni | 7 + >> MdeModulePkg/Universal/Variable/RuntimeDxe/VariableRuntimeDxe.inf | 5 + >> MdeModulePkg/Universal/Variable/RuntimeDxe/VariableSmm.inf | 4 + >> MdeModulePkg/Universal/Variable/RuntimeDxe/VariableSmmRuntimeDxe.inf | 11 + >> MdeModulePkg/Universal/Variable/RuntimeDxe/VariableStandaloneMm.inf | 4 + >> OvmfPkg/OvmfPkgIa32.dsc | 5 + >> OvmfPkg/OvmfPkgIa32X64.dsc | 5 + >> OvmfPkg/OvmfPkgX64.dsc | 5 + >> OvmfPkg/OvmfXen.dsc | 4 + >> SecurityPkg/Library/AuthVariableLib/AuthVariableLib.inf | 2 + >> UefiPayloadPkg/UefiPayloadPkgIa32.dsc | 4 + >> UefiPayloadPkg/UefiPayloadPkgIa32X64.dsc | 4 + >> 43 files changed, 3845 insertions(+), 80 deletions(-) >> create mode 100644 MdeModulePkg/Library/VarCheckPolicyLib/VarCheckPolicyLib.c >> create mode 100644 MdeModulePkg/Library/VariablePolicyHelperLib/VariablePolicyHelperLib.c >> create mode 100644 MdeModulePkg/Library/VariablePolicyLib/VariablePolicyExtraInitNull.c >> create mode 100644 MdeModulePkg/Library/VariablePolicyLib/VariablePolicyExtraInitRuntimeDxe.c >> create mode 100644 MdeModulePkg/Library/VariablePolicyLib/VariablePolicyLib.c >> create mode 100644 MdeModulePkg/Universal/Variable/RuntimeDxe/VariableLockRequestToLock.c >> create mode 100644 MdeModulePkg/Universal/Variable/RuntimeDxe/VariablePolicySmmDxe.c >> create mode 100644 MdeModulePkg/Include/Guid/VarCheckPolicyMmi.h >> create mode 100644 MdeModulePkg/Include/Library/VariablePolicyHelperLib.h >> create mode 100644 MdeModulePkg/Include/Library/VariablePolicyLib.h >> create mode 100644 MdeModulePkg/Include/Protocol/VariablePolicy.h >> create mode 100644 MdeModulePkg/Library/VarCheckPolicyLib/VarCheckPolicyLib.inf >> create mode 100644 MdeModulePkg/Library/VarCheckPolicyLib/VarCheckPolicyLib.uni >> create mode 100644 MdeModulePkg/Library/VariablePolicyHelperLib/VariablePolicyHelperLib.inf >> create mode 100644 MdeModulePkg/Library/VariablePolicyHelperLib/VariablePolicyHelperLib.uni >> create mode 100644 MdeModulePkg/Library/VariablePolicyLib/ReadMe.md >> create mode 100644 MdeModulePkg/Library/VariablePolicyLib/VariablePolicyLib.inf >> create mode 100644 MdeModulePkg/Library/VariablePolicyLib/VariablePolicyLib.uni >> create mode 100644 MdeModulePkg/Library/VariablePolicyLib/VariablePolicyLibRuntimeDxe.inf > -=-=-=-=-=-=-=-=-=-=-=- Groups.io Links: You receive all messages sent to this group. View/Reply Online (#67732): https://edk2.groups.io/g/devel/message/67732 Mute This Topic: https://groups.io/mt/78130767/1787277 Group Owner: devel+owner@edk2.groups.io Unsubscribe: https://edk2.groups.io/g/devel/unsub [importer@patchew.org] -=-=-=-=-=-=-=-=-=-=-=-
Hi Bret, To be honest, I don't recall seeing anything. Again, maybe I should have been more proactive, but that's probably the net reality for most people. It would be unreasonable to expect you to test every platform, but it is very reasonable to assume that if you know you're adding build breakage to every platform (that is trivial to fix), that you would be taking care of it... Principle of least surprise. And yes, in some weird corner case perhaps that would be insufficient (again, I don't think anyone would expect you to compile test every platform), but it would take care of 99% of obvious fall-out. For reference, there are occasional clean-ups that happen to the edk2 tree, and I've never seen anyone claim "not my problem" to deal with the obvious fall-out resulting from renames and such. A ________________________________ From: devel@edk2.groups.io <devel@edk2.groups.io> on behalf of Bret Barkelew via groups.io <debtech=gmail.com@groups.io> Sent: Thursday, November 19, 2020 10:15 AM To: Ard Biesheuvel <ard.biesheuvel@arm.com> Cc: Bret Barkelew <bret@corthon.com>; devel@edk2.groups.io <devel@edk2.groups.io>; Jiewen Yao <jiewen.yao@intel.com>; Dandan Bi <dandan.bi@intel.com>; Chao Zhang <chao.b.zhang@intel.com>; Jian J Wang <jian.j.wang@intel.com>; Hao A Wu <hao.a.wu@intel.com>; Liming Gao <liming.gao@intel.com>; Jordan Justen <jordan.l.justen@intel.com>; Laszlo Ersek <lersek@redhat.com>; Andrew Fish <afish@apple.com>; Ray Ni <ray.ni@intel.com>; Bret Barkelew <brbarkel@microsoft.com> Subject: Re: [edk2-devel] [PATCH v9 00/13] Add the VariablePolicy feature Those bugs and recommendations were sent out months ago. Several platforms have staged the changes already. You need to add the library class to your DSC. -- [ Insert obscure pop-culture reference here. ] > On Nov 19, 2020, at 4:46 AM, Ard Biesheuvel <ard.biesheuvel@arm.com> wrote: > > On 11/9/20 7:45 AM, Bret Barkelew wrote: >> The 14 patches in this series add the VariablePolicy feature to the core, >> deprecate Edk2VarLock (while adding a compatibility layer to reduce code >> churn), and integrate the VariablePolicy libraries and protocols into >> Variable Services. >> Since the integration requires multiple changes, including adding libraries, >> a protocol, an SMI communication handler, and VariableServices integration, >> the patches are broken up by individual library additions and then a final >> integration. Security-sensitive changes like bypassing Authenticated >> Variable enforcement are also broken out into individual patches so that >> attention can be called directly to them. >> Platform porting instructions are described in this wiki entry: >> https://nam04.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com%2Ftianocore%2Ftianocore.github.io%2Fwiki%2FVariablePolicy-Protocol---Enhanced-Method-for-Managing-Variables%23platform-porting&data=04%7C01%7Cawarkentin%40vmware.com%7C594f15b45aaf476bff7e08d88cb57390%7Cb39138ca3cee4b4aa4d6cd83d9dd62f0%7C0%7C0%7C637414058247128819%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C1000&sdata=LLKZ7qeffR0WCvLbYuHtQIuwJGhXY0mVqB2w9B0q180%3D&reserved=0 >> Discussion of the feature can be found in multiple places throughout >> the last year on the RFC channel, staging branches, and in devel. >> Most recently, this subject was discussed in this thread: >> https://nam04.safelinks.protection.outlook.com/?url=https%3A%2F%2Fedk2.groups.io%2Fg%2Fdevel%2Fmessage%2F53712&data=04%7C01%7Cawarkentin%40vmware.com%7C594f15b45aaf476bff7e08d88cb57390%7Cb39138ca3cee4b4aa4d6cd83d9dd62f0%7C0%7C0%7C637414058247133820%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C1000&sdata=GYY52rlsPxw07vfdu%2BVbWhzRjtHWXlIGveCTT17mlfc%3D&reserved=0 >> (the code branches shared in that discussion are now out of date, but the >> whitepapers and discussion are relevant). >> Cc: Jiewen Yao <jiewen.yao@intel.com> >> Cc: Dandan Bi <dandan.bi@intel.com> >> Cc: Chao Zhang <chao.b.zhang@intel.com> >> Cc: Jian J Wang <jian.j.wang@intel.com> >> Cc: Hao A Wu <hao.a.wu@intel.com> >> Cc: Liming Gao <liming.gao@intel.com> >> Cc: Jordan Justen <jordan.l.justen@intel.com> >> Cc: Laszlo Ersek <lersek@redhat.com> >> Cc: Ard Biesheuvel <ard.biesheuvel@arm.com> >> Cc: Andrew Fish <afish@apple.com> >> Cc: Ray Ni <ray.ni@intel.com> >> Cc: Bret Barkelew <brbarkel@microsoft.com> >> Signed-off-by: Bret Barkelew <brbarkel@microsoft.com> > > This series has now made it into edk2, and has subsequently broken every single platform in edk2-platforms. Is anyone intending to propose any fixes for this? > > >> v9 changes: >> * Rebase >> * Address the event ordering issues around MorLock at EndOfDxe >> * Drop problematic tests >> * Address ECC issues >> v8 changes: >> * Rebase >> * Small tweaks from final PRs >> * Drank a lot >> * Enrolled several members and a steward in CatFacts >> v7 changes: >> * Address comments from Dandan about security of the MM handler >> * Add readme >> * Fix bug around hex characters in BOOT####, etc >> * Add additional testing for hex characters >> * Add additional testing for authenticated variables >> v6 changes: >> * Fix an issue with uninitialized Status in InitVariablePolicyLib() and DeinitVariablePolicyLib() >> * Fix GCC building in shell-based functional test >> * Rebase on latest origin/master >> v5 changes: >> * Fix the CONST mismatch in VariablePolicy.h and VariablePolicySmmDxe.c >> * Fix EFIAPI mismatches in the functional unittest >> * Rebase on latest origin/master >> v4 changes: >> * Remove Optional PcdAllowVariablePolicyEnforcementDisable PCD from platforms >> * Rebase on master >> * Migrate to new MmCommunicate2 protocol >> * Fix an oversight in the default return value for InitMmCommonCommBuffer >> * Fix in VariablePolicyLib to allow ExtraInitRuntimeDxe to consume variables >> V3 changes: >> * Address all non-unittest issues with ECC >> * Make additional style changes >> * Include section name in hunk headers in "ini-style" files >> * Remove requirement for the EdkiiPiSmmCommunicationsRegionTable driver >> (now allocates its own buffer) >> * Change names from VARIABLE_POLICY_PROTOCOL and gVariablePolicyProtocolGuid >> to EDKII_VARIABLE_POLICY_PROTOCOL and gEdkiiVariablePolicyProtocolGuid >> * Fix GCC warning about initializing externs >> * Add UNI strings for new PCD >> * Add patches for ArmVirtPkg, OvmfXen, and UefiPayloadPkg >> * Reorder patches according to Liming's feedback about adding to platforms >> before changing variable driver >> V2 changes: >> * Fixed implementation for RuntimeDxe >> * Add PCD to block DisableVariablePolicy >> * Fix the DumpVariablePolicy pagination in SMM >> Bret Barkelew (13): >> MdeModulePkg: Define the VariablePolicy protocol interface >> MdeModulePkg: Define the VariablePolicyLib >> MdeModulePkg: Define the VariablePolicyHelperLib >> MdeModulePkg: Define the VarCheckPolicyLib and SMM interface >> OvmfPkg: Add VariablePolicy engine to OvmfPkg platform >> EmulatorPkg: Add VariablePolicy engine to EmulatorPkg platform >> ArmVirtPkg: Add VariablePolicy engine to ArmVirtPkg platform >> UefiPayloadPkg: Add VariablePolicy engine to UefiPayloadPkg platform >> MdeModulePkg: Connect VariablePolicy business logic to >> VariableServices >> MdeModulePkg: Allow VariablePolicy state to delete protected variables >> SecurityPkg: Allow VariablePolicy state to delete authenticated >> variables >> MdeModulePkg: Change TCG MOR variables to use VariablePolicy >> MdeModulePkg: Drop VarLock from RuntimeDxe variable driver >> MdeModulePkg/Library/VarCheckPolicyLib/VarCheckPolicyLib.c | 346 ++++++++ >> MdeModulePkg/Library/VariablePolicyHelperLib/VariablePolicyHelperLib.c | 396 ++++++++++ >> MdeModulePkg/Library/VariablePolicyLib/VariablePolicyExtraInitNull.c | 46 ++ >> MdeModulePkg/Library/VariablePolicyLib/VariablePolicyExtraInitRuntimeDxe.c | 85 ++ >> MdeModulePkg/Library/VariablePolicyLib/VariablePolicyLib.c | 830 ++++++++++++++++++++ >> MdeModulePkg/Universal/Variable/RuntimeDxe/TcgMorLockDxe.c | 52 +- >> MdeModulePkg/Universal/Variable/RuntimeDxe/TcgMorLockSmm.c | 60 +- >> MdeModulePkg/Universal/Variable/RuntimeDxe/VarCheck.c | 49 +- >> MdeModulePkg/Universal/Variable/RuntimeDxe/VariableDxe.c | 60 ++ >> MdeModulePkg/Universal/Variable/RuntimeDxe/VariableLockRequestToLock.c | 71 ++ >> MdeModulePkg/Universal/Variable/RuntimeDxe/VariablePolicySmmDxe.c | 573 ++++++++++++++ >> MdeModulePkg/Universal/Variable/RuntimeDxe/VariableSmm.c | 7 + >> MdeModulePkg/Universal/Variable/RuntimeDxe/VariableSmmRuntimeDxe.c | 14 + >> SecurityPkg/Library/AuthVariableLib/AuthService.c | 30 +- >> ArmVirtPkg/ArmVirt.dsc.inc | 4 + >> EmulatorPkg/EmulatorPkg.dsc | 3 + >> MdeModulePkg/Include/Guid/VarCheckPolicyMmi.h | 54 ++ >> MdeModulePkg/Include/Library/VariablePolicyHelperLib.h | 164 ++++ >> MdeModulePkg/Include/Library/VariablePolicyLib.h | 207 +++++ >> MdeModulePkg/Include/Protocol/VariablePolicy.h | 157 ++++ >> MdeModulePkg/Library/VarCheckPolicyLib/VarCheckPolicyLib.inf | 42 + >> MdeModulePkg/Library/VarCheckPolicyLib/VarCheckPolicyLib.uni | 12 + >> MdeModulePkg/Library/VariablePolicyHelperLib/VariablePolicyHelperLib.inf | 35 + >> MdeModulePkg/Library/VariablePolicyHelperLib/VariablePolicyHelperLib.uni | 12 + >> MdeModulePkg/Library/VariablePolicyLib/ReadMe.md | 406 ++++++++++ >> MdeModulePkg/Library/VariablePolicyLib/VariablePolicyLib.inf | 48 ++ >> MdeModulePkg/Library/VariablePolicyLib/VariablePolicyLib.uni | 12 + >> MdeModulePkg/Library/VariablePolicyLib/VariablePolicyLibRuntimeDxe.inf | 51 ++ >> MdeModulePkg/MdeModulePkg.ci.yaml | 4 +- >> MdeModulePkg/MdeModulePkg.dec | 26 +- >> MdeModulePkg/MdeModulePkg.dsc | 9 + >> MdeModulePkg/MdeModulePkg.uni | 7 + >> MdeModulePkg/Universal/Variable/RuntimeDxe/VariableRuntimeDxe.inf | 5 + >> MdeModulePkg/Universal/Variable/RuntimeDxe/VariableSmm.inf | 4 + >> MdeModulePkg/Universal/Variable/RuntimeDxe/VariableSmmRuntimeDxe.inf | 11 + >> MdeModulePkg/Universal/Variable/RuntimeDxe/VariableStandaloneMm.inf | 4 + >> OvmfPkg/OvmfPkgIa32.dsc | 5 + >> OvmfPkg/OvmfPkgIa32X64.dsc | 5 + >> OvmfPkg/OvmfPkgX64.dsc | 5 + >> OvmfPkg/OvmfXen.dsc | 4 + >> SecurityPkg/Library/AuthVariableLib/AuthVariableLib.inf | 2 + >> UefiPayloadPkg/UefiPayloadPkgIa32.dsc | 4 + >> UefiPayloadPkg/UefiPayloadPkgIa32X64.dsc | 4 + >> 43 files changed, 3845 insertions(+), 80 deletions(-) >> create mode 100644 MdeModulePkg/Library/VarCheckPolicyLib/VarCheckPolicyLib.c >> create mode 100644 MdeModulePkg/Library/VariablePolicyHelperLib/VariablePolicyHelperLib.c >> create mode 100644 MdeModulePkg/Library/VariablePolicyLib/VariablePolicyExtraInitNull.c >> create mode 100644 MdeModulePkg/Library/VariablePolicyLib/VariablePolicyExtraInitRuntimeDxe.c >> create mode 100644 MdeModulePkg/Library/VariablePolicyLib/VariablePolicyLib.c >> create mode 100644 MdeModulePkg/Universal/Variable/RuntimeDxe/VariableLockRequestToLock.c >> create mode 100644 MdeModulePkg/Universal/Variable/RuntimeDxe/VariablePolicySmmDxe.c >> create mode 100644 MdeModulePkg/Include/Guid/VarCheckPolicyMmi.h >> create mode 100644 MdeModulePkg/Include/Library/VariablePolicyHelperLib.h >> create mode 100644 MdeModulePkg/Include/Library/VariablePolicyLib.h >> create mode 100644 MdeModulePkg/Include/Protocol/VariablePolicy.h >> create mode 100644 MdeModulePkg/Library/VarCheckPolicyLib/VarCheckPolicyLib.inf >> create mode 100644 MdeModulePkg/Library/VarCheckPolicyLib/VarCheckPolicyLib.uni >> create mode 100644 MdeModulePkg/Library/VariablePolicyHelperLib/VariablePolicyHelperLib.inf >> create mode 100644 MdeModulePkg/Library/VariablePolicyHelperLib/VariablePolicyHelperLib.uni >> create mode 100644 MdeModulePkg/Library/VariablePolicyLib/ReadMe.md >> create mode 100644 MdeModulePkg/Library/VariablePolicyLib/VariablePolicyLib.inf >> create mode 100644 MdeModulePkg/Library/VariablePolicyLib/VariablePolicyLib.uni >> create mode 100644 MdeModulePkg/Library/VariablePolicyLib/VariablePolicyLibRuntimeDxe.inf > -=-=-=-=-=-=-=-=-=-=-=- Groups.io Links: You receive all messages sent to this group. View/Reply Online (#67734): https://edk2.groups.io/g/devel/message/67734 Mute This Topic: https://groups.io/mt/78130767/1787277 Group Owner: devel+owner@edk2.groups.io Unsubscribe: https://edk2.groups.io/g/devel/unsub [importer@patchew.org] -=-=-=-=-=-=-=-=-=-=-=-
While I'm not currently a maintainer in either repo, I believe the current process is not ideal. I highlighted some of my observations here: https://edk2.groups.io/g/devel/message/65902. Again, I don't have a strong vested interest in this but I do think some level of a more well defined process needs to be reached between repo maintiners to ease feature development in the future. Thanks, Michael On 11/19/2020 12:02 PM, Andrei Warkentin wrote: > Hi Bret, > > To be honest, I don't recall seeing anything. Again, maybe I should have > been more proactive, but that's probably the net reality for most > people. It would be unreasonable to expect you to test every platform, > but it is very reasonable to assume that if you know you're adding build > breakage to every platform (that is trivial to fix), that you would be > taking care of it... Principle of least surprise. And yes, in some weird > corner case perhaps that would be insufficient (again, I don't think > anyone would expect you to compile test every platform), but it would > take care of 99% of obvious fall-out. > > For reference, there are occasional clean-ups that happen to the edk2 > tree, and I've never seen anyone claim "not my problem" to deal with the > obvious fall-out resulting from renames and such. > > A > ------------------------------------------------------------------------ > *From:* devel@edk2.groups.io <devel@edk2.groups.io> on behalf of Bret > Barkelew via groups.io <debtech=gmail.com@groups.io> > *Sent:* Thursday, November 19, 2020 10:15 AM > *To:* Ard Biesheuvel <ard.biesheuvel@arm.com> > *Cc:* Bret Barkelew <bret@corthon.com>; devel@edk2.groups.io > <devel@edk2.groups.io>; Jiewen Yao <jiewen.yao@intel.com>; Dandan Bi > <dandan.bi@intel.com>; Chao Zhang <chao.b.zhang@intel.com>; Jian J Wang > <jian.j.wang@intel.com>; Hao A Wu <hao.a.wu@intel.com>; Liming Gao > <liming.gao@intel.com>; Jordan Justen <jordan.l.justen@intel.com>; > Laszlo Ersek <lersek@redhat.com>; Andrew Fish <afish@apple.com>; Ray Ni > <ray.ni@intel.com>; Bret Barkelew <brbarkel@microsoft.com> > *Subject:* Re: [edk2-devel] [PATCH v9 00/13] Add the VariablePolicy feature > Those bugs and recommendations were sent out months ago. Several > platforms have staged the changes already. > > You need to add the library class to your DSC. > > -- > [ Insert obscure pop-culture reference here. ] > >> On Nov 19, 2020, at 4:46 AM, Ard Biesheuvel <ard.biesheuvel@arm.com> wrote: >> >> On 11/9/20 7:45 AM, Bret Barkelew wrote: >>> The 14 patches in this series add the VariablePolicy feature to the core, >>> deprecate Edk2VarLock (while adding a compatibility layer to reduce code >>> churn), and integrate the VariablePolicy libraries and protocols into >>> Variable Services. >>> Since the integration requires multiple changes, including adding libraries, >>> a protocol, an SMI communication handler, and VariableServices integration, >>> the patches are broken up by individual library additions and then a final >>> integration. Security-sensitive changes like bypassing Authenticated >>> Variable enforcement are also broken out into individual patches so that >>> attention can be called directly to them. >>> Platform porting instructions are described in this wiki entry: >>> https://nam04.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com%2Ftianocore%2Ftianocore.github.io%2Fwiki%2FVariablePolicy-Protocol---Enhanced-Method-for-Managing-Variables%23platform-porting&data=04%7C01%7Cawarkentin%40vmware.com%7C594f15b45aaf476bff7e08d88cb57390%7Cb39138ca3cee4b4aa4d6cd83d9dd62f0%7C0%7C0%7C637414058247128819%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C1000&sdata=LLKZ7qeffR0WCvLbYuHtQIuwJGhXY0mVqB2w9B0q180%3D&reserved=0 > <https://nam04.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com%2Ftianocore%2Ftianocore.github.io%2Fwiki%2FVariablePolicy-Protocol---Enhanced-Method-for-Managing-Variables%23platform-porting&data=04%7C01%7Cawarkentin%40vmware.com%7C594f15b45aaf476bff7e08d88cb57390%7Cb39138ca3cee4b4aa4d6cd83d9dd62f0%7C0%7C0%7C637414058247128819%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C1000&sdata=LLKZ7qeffR0WCvLbYuHtQIuwJGhXY0mVqB2w9B0q180%3D&reserved=0> >>> Discussion of the feature can be found in multiple places throughout >>> the last year on the RFC channel, staging branches, and in devel. >>> Most recently, this subject was discussed in this thread: >>> https://nam04.safelinks.protection.outlook.com/?url=https%3A%2F%2Fedk2.groups.io%2Fg%2Fdevel%2Fmessage%2F53712&data=04%7C01%7Cawarkentin%40vmware.com%7C594f15b45aaf476bff7e08d88cb57390%7Cb39138ca3cee4b4aa4d6cd83d9dd62f0%7C0%7C0%7C637414058247133820%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C1000&sdata=GYY52rlsPxw07vfdu%2BVbWhzRjtHWXlIGveCTT17mlfc%3D&reserved=0 > <https://nam04.safelinks.protection.outlook.com/?url=https%3A%2F%2Fedk2.groups.io%2Fg%2Fdevel%2Fmessage%2F53712&data=04%7C01%7Cawarkentin%40vmware.com%7C594f15b45aaf476bff7e08d88cb57390%7Cb39138ca3cee4b4aa4d6cd83d9dd62f0%7C0%7C0%7C637414058247133820%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C1000&sdata=GYY52rlsPxw07vfdu%2BVbWhzRjtHWXlIGveCTT17mlfc%3D&reserved=0> >>> (the code branches shared in that discussion are now out of date, but the >>> whitepapers and discussion are relevant). >>> Cc: Jiewen Yao <jiewen.yao@intel.com> >>> Cc: Dandan Bi <dandan.bi@intel.com> >>> Cc: Chao Zhang <chao.b.zhang@intel.com> >>> Cc: Jian J Wang <jian.j.wang@intel.com> >>> Cc: Hao A Wu <hao.a.wu@intel.com> >>> Cc: Liming Gao <liming.gao@intel.com> >>> Cc: Jordan Justen <jordan.l.justen@intel.com> >>> Cc: Laszlo Ersek <lersek@redhat.com> >>> Cc: Ard Biesheuvel <ard.biesheuvel@arm.com> >>> Cc: Andrew Fish <afish@apple.com> >>> Cc: Ray Ni <ray.ni@intel.com> >>> Cc: Bret Barkelew <brbarkel@microsoft.com> >>> Signed-off-by: Bret Barkelew <brbarkel@microsoft.com> >> >> This series has now made it into edk2, and has subsequently broken every single platform in edk2-platforms. Is anyone intending to propose any fixes for this? >> >> >>> v9 changes: >>> * Rebase >>> * Address the event ordering issues around MorLock at EndOfDxe >>> * Drop problematic tests >>> * Address ECC issues >>> v8 changes: >>> * Rebase >>> * Small tweaks from final PRs >>> * Drank a lot >>> * Enrolled several members and a steward in CatFacts >>> v7 changes: >>> * Address comments from Dandan about security of the MM handler >>> * Add readme >>> * Fix bug around hex characters in BOOT####, etc >>> * Add additional testing for hex characters >>> * Add additional testing for authenticated variables >>> v6 changes: >>> * Fix an issue with uninitialized Status in InitVariablePolicyLib() and DeinitVariablePolicyLib() >>> * Fix GCC building in shell-based functional test >>> * Rebase on latest origin/master >>> v5 changes: >>> * Fix the CONST mismatch in VariablePolicy.h and VariablePolicySmmDxe.c >>> * Fix EFIAPI mismatches in the functional unittest >>> * Rebase on latest origin/master >>> v4 changes: >>> * Remove Optional PcdAllowVariablePolicyEnforcementDisable PCD from platforms >>> * Rebase on master >>> * Migrate to new MmCommunicate2 protocol >>> * Fix an oversight in the default return value for InitMmCommonCommBuffer >>> * Fix in VariablePolicyLib to allow ExtraInitRuntimeDxe to consume variables >>> V3 changes: >>> * Address all non-unittest issues with ECC >>> * Make additional style changes >>> * Include section name in hunk headers in "ini-style" files >>> * Remove requirement for the EdkiiPiSmmCommunicationsRegionTable driver >>> (now allocates its own buffer) >>> * Change names from VARIABLE_POLICY_PROTOCOL and gVariablePolicyProtocolGuid >>> to EDKII_VARIABLE_POLICY_PROTOCOL and gEdkiiVariablePolicyProtocolGuid >>> * Fix GCC warning about initializing externs >>> * Add UNI strings for new PCD >>> * Add patches for ArmVirtPkg, OvmfXen, and UefiPayloadPkg >>> * Reorder patches according to Liming's feedback about adding to platforms >>> before changing variable driver >>> V2 changes: >>> * Fixed implementation for RuntimeDxe >>> * Add PCD to block DisableVariablePolicy >>> * Fix the DumpVariablePolicy pagination in SMM >>> Bret Barkelew (13): >>> MdeModulePkg: Define the VariablePolicy protocol interface >>> MdeModulePkg: Define the VariablePolicyLib >>> MdeModulePkg: Define the VariablePolicyHelperLib >>> MdeModulePkg: Define the VarCheckPolicyLib and SMM interface >>> OvmfPkg: Add VariablePolicy engine to OvmfPkg platform >>> EmulatorPkg: Add VariablePolicy engine to EmulatorPkg platform >>> ArmVirtPkg: Add VariablePolicy engine to ArmVirtPkg platform >>> UefiPayloadPkg: Add VariablePolicy engine to UefiPayloadPkg platform >>> MdeModulePkg: Connect VariablePolicy business logic to >>> VariableServices >>> MdeModulePkg: Allow VariablePolicy state to delete protected variables >>> SecurityPkg: Allow VariablePolicy state to delete authenticated >>> variables >>> MdeModulePkg: Change TCG MOR variables to use VariablePolicy >>> MdeModulePkg: Drop VarLock from RuntimeDxe variable driver >>> MdeModulePkg/Library/VarCheckPolicyLib/VarCheckPolicyLib.c | 346 ++++++++ >>> MdeModulePkg/Library/VariablePolicyHelperLib/VariablePolicyHelperLib.c | 396 ++++++++++ >>> MdeModulePkg/Library/VariablePolicyLib/VariablePolicyExtraInitNull.c | 46 ++ >>> MdeModulePkg/Library/VariablePolicyLib/VariablePolicyExtraInitRuntimeDxe.c | 85 ++ >>> MdeModulePkg/Library/VariablePolicyLib/VariablePolicyLib.c | 830 ++++++++++++++++++++ >>> MdeModulePkg/Universal/Variable/RuntimeDxe/TcgMorLockDxe.c | 52 +- >>> MdeModulePkg/Universal/Variable/RuntimeDxe/TcgMorLockSmm.c | 60 +- >>> MdeModulePkg/Universal/Variable/RuntimeDxe/VarCheck.c | 49 +- >>> MdeModulePkg/Universal/Variable/RuntimeDxe/VariableDxe.c | 60 ++ >>> MdeModulePkg/Universal/Variable/RuntimeDxe/VariableLockRequestToLock.c | 71 ++ >>> MdeModulePkg/Universal/Variable/RuntimeDxe/VariablePolicySmmDxe.c | 573 ++++++++++++++ >>> MdeModulePkg/Universal/Variable/RuntimeDxe/VariableSmm.c | 7 + >>> MdeModulePkg/Universal/Variable/RuntimeDxe/VariableSmmRuntimeDxe.c | 14 + >>> SecurityPkg/Library/AuthVariableLib/AuthService.c | 30 +- >>> ArmVirtPkg/ArmVirt.dsc.inc | 4 + >>> EmulatorPkg/EmulatorPkg.dsc | 3 + >>> MdeModulePkg/Include/Guid/VarCheckPolicyMmi.h | 54 ++ >>> MdeModulePkg/Include/Library/VariablePolicyHelperLib.h | 164 ++++ >>> MdeModulePkg/Include/Library/VariablePolicyLib.h | 207 +++++ >>> MdeModulePkg/Include/Protocol/VariablePolicy.h | 157 ++++ >>> MdeModulePkg/Library/VarCheckPolicyLib/VarCheckPolicyLib.inf | 42 + >>> MdeModulePkg/Library/VarCheckPolicyLib/VarCheckPolicyLib.uni | 12 + >>> MdeModulePkg/Library/VariablePolicyHelperLib/VariablePolicyHelperLib.inf | 35 + >>> MdeModulePkg/Library/VariablePolicyHelperLib/VariablePolicyHelperLib.uni | 12 + >>> MdeModulePkg/Library/VariablePolicyLib/ReadMe.md | 406 ++++++++++ >>> MdeModulePkg/Library/VariablePolicyLib/VariablePolicyLib.inf | 48 ++ >>> MdeModulePkg/Library/VariablePolicyLib/VariablePolicyLib.uni | 12 + >>> MdeModulePkg/Library/VariablePolicyLib/VariablePolicyLibRuntimeDxe.inf | 51 ++ >>> MdeModulePkg/MdeModulePkg.ci.yaml | 4 +- >>> MdeModulePkg/MdeModulePkg.dec | 26 +- >>> MdeModulePkg/MdeModulePkg.dsc | 9 + >>> MdeModulePkg/MdeModulePkg.uni | 7 + >>> MdeModulePkg/Universal/Variable/RuntimeDxe/VariableRuntimeDxe.inf | 5 + >>> MdeModulePkg/Universal/Variable/RuntimeDxe/VariableSmm.inf | 4 + >>> MdeModulePkg/Universal/Variable/RuntimeDxe/VariableSmmRuntimeDxe.inf | 11 + >>> MdeModulePkg/Universal/Variable/RuntimeDxe/VariableStandaloneMm.inf | 4 + >>> OvmfPkg/OvmfPkgIa32.dsc | 5 + >>> OvmfPkg/OvmfPkgIa32X64.dsc | 5 + >>> OvmfPkg/OvmfPkgX64.dsc | 5 + >>> OvmfPkg/OvmfXen.dsc | 4 + >>> SecurityPkg/Library/AuthVariableLib/AuthVariableLib.inf | 2 + >>> UefiPayloadPkg/UefiPayloadPkgIa32.dsc | 4 + >>> UefiPayloadPkg/UefiPayloadPkgIa32X64.dsc | 4 + >>> 43 files changed, 3845 insertions(+), 80 deletions(-) >>> create mode 100644 MdeModulePkg/Library/VarCheckPolicyLib/VarCheckPolicyLib.c >>> create mode 100644 MdeModulePkg/Library/VariablePolicyHelperLib/VariablePolicyHelperLib.c >>> create mode 100644 MdeModulePkg/Library/VariablePolicyLib/VariablePolicyExtraInitNull.c >>> create mode 100644 MdeModulePkg/Library/VariablePolicyLib/VariablePolicyExtraInitRuntimeDxe.c >>> create mode 100644 MdeModulePkg/Library/VariablePolicyLib/VariablePolicyLib.c >>> create mode 100644 MdeModulePkg/Universal/Variable/RuntimeDxe/VariableLockRequestToLock.c >>> create mode 100644 MdeModulePkg/Universal/Variable/RuntimeDxe/VariablePolicySmmDxe.c >>> create mode 100644 MdeModulePkg/Include/Guid/VarCheckPolicyMmi.h >>> create mode 100644 MdeModulePkg/Include/Library/VariablePolicyHelperLib.h >>> create mode 100644 MdeModulePkg/Include/Library/VariablePolicyLib.h >>> create mode 100644 MdeModulePkg/Include/Protocol/VariablePolicy.h >>> create mode 100644 MdeModulePkg/Library/VarCheckPolicyLib/VarCheckPolicyLib.inf >>> create mode 100644 MdeModulePkg/Library/VarCheckPolicyLib/VarCheckPolicyLib.uni >>> create mode 100644 MdeModulePkg/Library/VariablePolicyHelperLib/VariablePolicyHelperLib.inf >>> create mode 100644 MdeModulePkg/Library/VariablePolicyHelperLib/VariablePolicyHelperLib.uni >>> create mode 100644 MdeModulePkg/Library/VariablePolicyLib/ReadMe.md >>> create mode 100644 MdeModulePkg/Library/VariablePolicyLib/VariablePolicyLib.inf >>> create mode 100644 MdeModulePkg/Library/VariablePolicyLib/VariablePolicyLib.uni >>> create mode 100644 MdeModulePkg/Library/VariablePolicyLib/VariablePolicyLibRuntimeDxe.inf >> > > > > > > -=-=-=-=-=-=-=-=-=-=-=- Groups.io Links: You receive all messages sent to this group. View/Reply Online (#67735): https://edk2.groups.io/g/devel/message/67735 Mute This Topic: https://groups.io/mt/78130767/1787277 Group Owner: devel+owner@edk2.groups.io Unsubscribe: https://edk2.groups.io/g/devel/unsub [importer@patchew.org] -=-=-=-=-=-=-=-=-=-=-=-
Is there a way for me to still say “not my problem” but sound like less of a jerk while doing it? Maybe, maybe not. I guess I’ve always tried to be a lovable ass and emphasize the “lovable” while minimizing the “ass”. I did some digging and discovered that it’s true that the RPi projects did not receive the same info as some of the others because apparently that project cannot be targeted by Bugzilla bugs. Take, for example, this one for CoffeeLake: 2738 – CoffeelakeSiliconPkg: Add the VariablePolicy engine to your EDK2 platform (tianocore.org)<https://bugzilla.tianocore.org/show_bug.cgi?id=2738> I apologize for that. Don’t know who to talk to about getting your project added. I think that – philosophically – what I was trying to do is make sure that I document the required platform changes well enough that any platform could easily make them on their own time. After all, if the docs aren’t clear enough for edk2-platforms, what hope do any of our industry consumers have? - Bret From: Andrei Warkentin<mailto:awarkentin@vmware.com> Sent: Thursday, November 19, 2020 12:02 PM To: Ard Biesheuvel<mailto:ard.biesheuvel@arm.com>; devel@edk2.groups.io<mailto:devel@edk2.groups.io>; debtech@gmail.com<mailto:debtech@gmail.com> Cc: Bret Barkelew<mailto:bret@corthon.com>; Yao, Jiewen<mailto:jiewen.yao@intel.com>; Dandan Bi<mailto:dandan.bi@intel.com>; Chao Zhang<mailto:chao.b.zhang@intel.com>; Jian J Wang<mailto:jian.j.wang@intel.com>; Hao A Wu<mailto:hao.a.wu@intel.com>; liming.gao<mailto:liming.gao@intel.com>; Jordan Justen<mailto:jordan.l.justen@intel.com>; Laszlo Ersek<mailto:lersek@redhat.com>; Andrew Fish<mailto:afish@apple.com>; Ni, Ray<mailto:ray.ni@intel.com>; Bret Barkelew<mailto:Bret.Barkelew@microsoft.com> Subject: [EXTERNAL] Re: [edk2-devel] [PATCH v9 00/13] Add the VariablePolicy feature Hi Bret, To be honest, I don't recall seeing anything. Again, maybe I should have been more proactive, but that's probably the net reality for most people. It would be unreasonable to expect you to test every platform, but it is very reasonable to assume that if you know you're adding build breakage to every platform (that is trivial to fix), that you would be taking care of it... Principle of least surprise. And yes, in some weird corner case perhaps that would be insufficient (again, I don't think anyone would expect you to compile test every platform), but it would take care of 99% of obvious fall-out. For reference, there are occasional clean-ups that happen to the edk2 tree, and I've never seen anyone claim "not my problem" to deal with the obvious fall-out resulting from renames and such. A From: devel@edk2.groups.io <devel@edk2.groups.io> on behalf of Bret Barkelew via groups.io <debtech=gmail.com@groups.io> Sent: Thursday, November 19, 2020 10:15 AM To: Ard Biesheuvel <ard.biesheuvel@arm.com> Cc: Bret Barkelew <bret@corthon.com>; devel@edk2.groups.io <devel@edk2.groups.io>; Jiewen Yao <jiewen.yao@intel.com>; Dandan Bi <dandan.bi@intel.com>; Chao Zhang <chao.b.zhang@intel.com>; Jian J Wang <jian.j.wang@intel.com>; Hao A Wu <hao.a.wu@intel.com>; Liming Gao <liming.gao@intel.com>; Jordan Justen <jordan.l.justen@intel.com>; Laszlo Ersek <lersek@redhat.com>; Andrew Fish <afish@apple.com>; Ray Ni <ray.ni@intel.com>; Bret Barkelew <brbarkel@microsoft.com> Subject: Re: [edk2-devel] [PATCH v9 00/13] Add the VariablePolicy feature Those bugs and recommendations were sent out months ago. Several platforms have staged the changes already. You need to add the library class to your DSC. -- [ Insert obscure pop-culture reference here. ] > On Nov 19, 2020, at 4:46 AM, Ard Biesheuvel <ard.biesheuvel@arm.com> wrote: > > On 11/9/20 7:45 AM, Bret Barkelew wrote: >> The 14 patches in this series add the VariablePolicy feature to the core, >> deprecate Edk2VarLock (while adding a compatibility layer to reduce code >> churn), and integrate the VariablePolicy libraries and protocols into >> Variable Services. >> Since the integration requires multiple changes, including adding libraries, >> a protocol, an SMI communication handler, and VariableServices integration, >> the patches are broken up by individual library additions and then a final >> integration. Security-sensitive changes like bypassing Authenticated >> Variable enforcement are also broken out into individual patches so that >> attention can be called directly to them. >> Platform porting instructions are described in this wiki entry: >> https://nam04.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com%2Ftianocore%2Ftianocore.github.io%2Fwiki%2FVariablePolicy-Protocol---Enhanced-Method-for-Managing-Variables%23platform-porting&data=04%7C01%7Cawarkentin%40vmware.com%7C594f15b45aaf476bff7e08d88cb57390%7Cb39138ca3cee4b4aa4d6cd83d9dd62f0%7C0%7C0%7C637414058247128819%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C1000&sdata=LLKZ7qeffR0WCvLbYuHtQIuwJGhXY0mVqB2w9B0q180%3D&reserved=0<https://nam06.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com%2Ftianocore%2Ftianocore.github.io%2Fwiki%2FVariablePolicy-Protocol---Enhanced-Method-for-Managing-Variables%23platform-porting&data=04%7C01%7CBret.Barkelew%40microsoft.com%7Ca7adba0050614e2b511608d88cc609f0%7C72f988bf86f141af91ab2d7cd011db47%7C1%7C0%7C637414129505929483%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C1000&sdata=a5rbCHus%2BDVQSYmWYaOsV5aIF8WfAjH4jaEt0WZXBwM%3D&reserved=0> >> Discussion of the feature can be found in multiple places throughout >> the last year on the RFC channel, staging branches, and in devel. >> Most recently, this subject was discussed in this thread: >> https://nam04.safelinks.protection.outlook.com/?url=https%3A%2F%2Fedk2.groups.io%2Fg%2Fdevel%2Fmessage%2F53712&data=04%7C01%7Cawarkentin%40vmware.com%7C594f15b45aaf476bff7e08d88cb57390%7Cb39138ca3cee4b4aa4d6cd83d9dd62f0%7C0%7C0%7C637414058247133820%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C1000&sdata=GYY52rlsPxw07vfdu%2BVbWhzRjtHWXlIGveCTT17mlfc%3D&reserved=0<https://nam06.safelinks.protection.outlook.com/?url=https%3A%2F%2Fedk2.groups.io%2Fg%2Fdevel%2Fmessage%2F53712&data=04%7C01%7CBret.Barkelew%40microsoft.com%7Ca7adba0050614e2b511608d88cc609f0%7C72f988bf86f141af91ab2d7cd011db47%7C1%7C0%7C637414129505939477%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C1000&sdata=J3dLJeVPCKyqNXG3F2%2F8mQceMJTCD%2BsJnzZKXZmTn8Q%3D&reserved=0> >> (the code branches shared in that discussion are now out of date, but the >> whitepapers and discussion are relevant). >> Cc: Jiewen Yao <jiewen.yao@intel.com> >> Cc: Dandan Bi <dandan.bi@intel.com> >> Cc: Chao Zhang <chao.b.zhang@intel.com> >> Cc: Jian J Wang <jian.j.wang@intel.com> >> Cc: Hao A Wu <hao.a.wu@intel.com> >> Cc: Liming Gao <liming.gao@intel.com> >> Cc: Jordan Justen <jordan.l.justen@intel.com> >> Cc: Laszlo Ersek <lersek@redhat.com> >> Cc: Ard Biesheuvel <ard.biesheuvel@arm.com> >> Cc: Andrew Fish <afish@apple.com> >> Cc: Ray Ni <ray.ni@intel.com> >> Cc: Bret Barkelew <brbarkel@microsoft.com> >> Signed-off-by: Bret Barkelew <brbarkel@microsoft.com> > > This series has now made it into edk2, and has subsequently broken every single platform in edk2-platforms. Is anyone intending to propose any fixes for this? > > >> v9 changes: >> * Rebase >> * Address the event ordering issues around MorLock at EndOfDxe >> * Drop problematic tests >> * Address ECC issues >> v8 changes: >> * Rebase >> * Small tweaks from final PRs >> * Drank a lot >> * Enrolled several members and a steward in CatFacts >> v7 changes: >> * Address comments from Dandan about security of the MM handler >> * Add readme >> * Fix bug around hex characters in BOOT####, etc >> * Add additional testing for hex characters >> * Add additional testing for authenticated variables >> v6 changes: >> * Fix an issue with uninitialized Status in InitVariablePolicyLib() and DeinitVariablePolicyLib() >> * Fix GCC building in shell-based functional test >> * Rebase on latest origin/master >> v5 changes: >> * Fix the CONST mismatch in VariablePolicy.h and VariablePolicySmmDxe.c >> * Fix EFIAPI mismatches in the functional unittest >> * Rebase on latest origin/master >> v4 changes: >> * Remove Optional PcdAllowVariablePolicyEnforcementDisable PCD from platforms >> * Rebase on master >> * Migrate to new MmCommunicate2 protocol >> * Fix an oversight in the default return value for InitMmCommonCommBuffer >> * Fix in VariablePolicyLib to allow ExtraInitRuntimeDxe to consume variables >> V3 changes: >> * Address all non-unittest issues with ECC >> * Make additional style changes >> * Include section name in hunk headers in "ini-style" files >> * Remove requirement for the EdkiiPiSmmCommunicationsRegionTable driver >> (now allocates its own buffer) >> * Change names from VARIABLE_POLICY_PROTOCOL and gVariablePolicyProtocolGuid >> to EDKII_VARIABLE_POLICY_PROTOCOL and gEdkiiVariablePolicyProtocolGuid >> * Fix GCC warning about initializing externs >> * Add UNI strings for new PCD >> * Add patches for ArmVirtPkg, OvmfXen, and UefiPayloadPkg >> * Reorder patches according to Liming's feedback about adding to platforms >> before changing variable driver >> V2 changes: >> * Fixed implementation for RuntimeDxe >> * Add PCD to block DisableVariablePolicy >> * Fix the DumpVariablePolicy pagination in SMM >> Bret Barkelew (13): >> MdeModulePkg: Define the VariablePolicy protocol interface >> MdeModulePkg: Define the VariablePolicyLib >> MdeModulePkg: Define the VariablePolicyHelperLib >> MdeModulePkg: Define the VarCheckPolicyLib and SMM interface >> OvmfPkg: Add VariablePolicy engine to OvmfPkg platform >> EmulatorPkg: Add VariablePolicy engine to EmulatorPkg platform >> ArmVirtPkg: Add VariablePolicy engine to ArmVirtPkg platform >> UefiPayloadPkg: Add VariablePolicy engine to UefiPayloadPkg platform >> MdeModulePkg: Connect VariablePolicy business logic to >> VariableServices >> MdeModulePkg: Allow VariablePolicy state to delete protected variables >> SecurityPkg: Allow VariablePolicy state to delete authenticated >> variables >> MdeModulePkg: Change TCG MOR variables to use VariablePolicy >> MdeModulePkg: Drop VarLock from RuntimeDxe variable driver >> MdeModulePkg/Library/VarCheckPolicyLib/VarCheckPolicyLib.c | 346 ++++++++ >> MdeModulePkg/Library/VariablePolicyHelperLib/VariablePolicyHelperLib.c | 396 ++++++++++ >> MdeModulePkg/Library/VariablePolicyLib/VariablePolicyExtraInitNull.c | 46 ++ >> MdeModulePkg/Library/VariablePolicyLib/VariablePolicyExtraInitRuntimeDxe.c | 85 ++ >> MdeModulePkg/Library/VariablePolicyLib/VariablePolicyLib.c | 830 ++++++++++++++++++++ >> MdeModulePkg/Universal/Variable/RuntimeDxe/TcgMorLockDxe.c | 52 +- >> MdeModulePkg/Universal/Variable/RuntimeDxe/TcgMorLockSmm.c | 60 +- >> MdeModulePkg/Universal/Variable/RuntimeDxe/VarCheck.c | 49 +- >> MdeModulePkg/Universal/Variable/RuntimeDxe/VariableDxe.c | 60 ++ >> MdeModulePkg/Universal/Variable/RuntimeDxe/VariableLockRequestToLock.c | 71 ++ >> MdeModulePkg/Universal/Variable/RuntimeDxe/VariablePolicySmmDxe.c | 573 ++++++++++++++ >> MdeModulePkg/Universal/Variable/RuntimeDxe/VariableSmm.c | 7 + >> MdeModulePkg/Universal/Variable/RuntimeDxe/VariableSmmRuntimeDxe.c | 14 + >> SecurityPkg/Library/AuthVariableLib/AuthService.c | 30 +- >> ArmVirtPkg/ArmVirt.dsc.inc | 4 + >> EmulatorPkg/EmulatorPkg.dsc | 3 + >> MdeModulePkg/Include/Guid/VarCheckPolicyMmi.h | 54 ++ >> MdeModulePkg/Include/Library/VariablePolicyHelperLib.h | 164 ++++ >> MdeModulePkg/Include/Library/VariablePolicyLib.h | 207 +++++ >> MdeModulePkg/Include/Protocol/VariablePolicy.h | 157 ++++ >> MdeModulePkg/Library/VarCheckPolicyLib/VarCheckPolicyLib.inf | 42 + >> MdeModulePkg/Library/VarCheckPolicyLib/VarCheckPolicyLib.uni | 12 + >> MdeModulePkg/Library/VariablePolicyHelperLib/VariablePolicyHelperLib.inf | 35 + >> MdeModulePkg/Library/VariablePolicyHelperLib/VariablePolicyHelperLib.uni | 12 + >> MdeModulePkg/Library/VariablePolicyLib/ReadMe.md | 406 ++++++++++ >> MdeModulePkg/Library/VariablePolicyLib/VariablePolicyLib.inf | 48 ++ >> MdeModulePkg/Library/VariablePolicyLib/VariablePolicyLib.uni | 12 + >> MdeModulePkg/Library/VariablePolicyLib/VariablePolicyLibRuntimeDxe.inf | 51 ++ >> MdeModulePkg/MdeModulePkg.ci.yaml | 4 +- >> MdeModulePkg/MdeModulePkg.dec | 26 +- >> MdeModulePkg/MdeModulePkg.dsc | 9 + >> MdeModulePkg/MdeModulePkg.uni | 7 + >> MdeModulePkg/Universal/Variable/RuntimeDxe/VariableRuntimeDxe.inf | 5 + >> MdeModulePkg/Universal/Variable/RuntimeDxe/VariableSmm.inf | 4 + >> MdeModulePkg/Universal/Variable/RuntimeDxe/VariableSmmRuntimeDxe.inf | 11 + >> MdeModulePkg/Universal/Variable/RuntimeDxe/VariableStandaloneMm.inf | 4 + >> OvmfPkg/OvmfPkgIa32.dsc | 5 + >> OvmfPkg/OvmfPkgIa32X64.dsc | 5 + >> OvmfPkg/OvmfPkgX64.dsc | 5 + >> OvmfPkg/OvmfXen.dsc | 4 + >> SecurityPkg/Library/AuthVariableLib/AuthVariableLib.inf | 2 + >> UefiPayloadPkg/UefiPayloadPkgIa32.dsc | 4 + >> UefiPayloadPkg/UefiPayloadPkgIa32X64.dsc | 4 + >> 43 files changed, 3845 insertions(+), 80 deletions(-) >> create mode 100644 MdeModulePkg/Library/VarCheckPolicyLib/VarCheckPolicyLib.c >> create mode 100644 MdeModulePkg/Library/VariablePolicyHelperLib/VariablePolicyHelperLib.c >> create mode 100644 MdeModulePkg/Library/VariablePolicyLib/VariablePolicyExtraInitNull.c >> create mode 100644 MdeModulePkg/Library/VariablePolicyLib/VariablePolicyExtraInitRuntimeDxe.c >> create mode 100644 MdeModulePkg/Library/VariablePolicyLib/VariablePolicyLib.c >> create mode 100644 MdeModulePkg/Universal/Variable/RuntimeDxe/VariableLockRequestToLock.c >> create mode 100644 MdeModulePkg/Universal/Variable/RuntimeDxe/VariablePolicySmmDxe.c >> create mode 100644 MdeModulePkg/Include/Guid/VarCheckPolicyMmi.h >> create mode 100644 MdeModulePkg/Include/Library/VariablePolicyHelperLib.h >> create mode 100644 MdeModulePkg/Include/Library/VariablePolicyLib.h >> create mode 100644 MdeModulePkg/Include/Protocol/VariablePolicy.h >> create mode 100644 MdeModulePkg/Library/VarCheckPolicyLib/VarCheckPolicyLib.inf >> create mode 100644 MdeModulePkg/Library/VarCheckPolicyLib/VarCheckPolicyLib.uni >> create mode 100644 MdeModulePkg/Library/VariablePolicyHelperLib/VariablePolicyHelperLib.inf >> create mode 100644 MdeModulePkg/Library/VariablePolicyHelperLib/VariablePolicyHelperLib.uni >> create mode 100644 MdeModulePkg/Library/VariablePolicyLib/ReadMe.md >> create mode 100644 MdeModulePkg/Library/VariablePolicyLib/VariablePolicyLib.inf >> create mode 100644 MdeModulePkg/Library/VariablePolicyLib/VariablePolicyLib.uni >> create mode 100644 MdeModulePkg/Library/VariablePolicyLib/VariablePolicyLibRuntimeDxe.inf > -=-=-=-=-=-=-=-=-=-=-=- Groups.io Links: You receive all messages sent to this group. View/Reply Online (#67736): https://edk2.groups.io/g/devel/message/67736 Mute This Topic: https://groups.io/mt/78130767/1787277 Group Owner: devel+owner@edk2.groups.io Unsubscribe: https://edk2.groups.io/g/devel/unsub [importer@patchew.org] -=-=-=-=-=-=-=-=-=-=-=-
On 11/19/20 21:41, Bret Barkelew wrote: > Is there a way for me to still say “not my problem” but sound like less of a jerk while doing it? Maybe, maybe not. I guess I’ve always tried to be a lovable ass and emphasize the “lovable” while minimizing the “ass”. > > I did some digging and discovered that it’s true that the RPi projects did not receive the same info as some of the others because apparently that project cannot be targeted by Bugzilla bugs. Take, for example, this one for CoffeeLake: > 2738 – CoffeelakeSiliconPkg: Add the VariablePolicy engine to your EDK2 platform (tianocore.org)<https://bugzilla.tianocore.org/show_bug.cgi?id=2738> > > I apologize for that. Don’t know who to talk to about getting your project added. I confirm Bret filed a huge bunch of BZs for advertizing the fallout. Again, that was in May. If I look at the bugmail traffic back then, it seems like -- aka "I remember it like" -- Bret ran a script that iterated over all the platforms that had a matching component in Bugzilla, and for each such component, the script filed a bug titled "Add the VariablePolicy engine to your EDK2 platform". The "Package" field on each ticket was set by the script correctly, as far as I remember. Because I found the bug titles a little lacking in expressivity, I then dug in and manually prefixed each title with the affected package's name. I also seem to have run "GetMaintainer.py" manually, for (almost) every DSC file underlying these BZs, and CC'ing the designated maintainers manually on the corresponding BZs. Again, checking my bugmail folder, the above reports cover the following contiguous BZ ranges: - #2731 through #2751 (21 tickets) - #2754 through #2761 (8 tickets) I think due diligence was observed. The problem was most likely that some platforms didn't have corresponding "Component" values under the "EDK2 Platforms" project in Bugzilla. (In fact Bret's script was so diligent that it created tickets for some unaffected components too, which we then ruled out manually, with the help of Liming and maybe others. Examples: 2736, 2737, 2738, 2740, .... Additionally, there was at least one mis-execution of the script, whcih created duplicates. Examples: 2731, 2732, 2733, 2734, 2735, ....) For creating a new Component in Bugzilla, please contact Mike Kinney. And, please watch out for bugmail. Thanks Laszlo > I think that – philosophically – what I was trying to do is make sure that I document the required platform changes well enough that any platform could easily make them on their own time. After all, if the docs aren’t clear enough for edk2-platforms, what hope do any of our industry consumers have? > > - Bret > > From: Andrei Warkentin<mailto:awarkentin@vmware.com> > Sent: Thursday, November 19, 2020 12:02 PM > To: Ard Biesheuvel<mailto:ard.biesheuvel@arm.com>; devel@edk2.groups.io<mailto:devel@edk2.groups.io>; debtech@gmail.com<mailto:debtech@gmail.com> > Cc: Bret Barkelew<mailto:bret@corthon.com>; Yao, Jiewen<mailto:jiewen.yao@intel.com>; Dandan Bi<mailto:dandan.bi@intel.com>; Chao Zhang<mailto:chao.b.zhang@intel.com>; Jian J Wang<mailto:jian.j.wang@intel.com>; Hao A Wu<mailto:hao.a.wu@intel.com>; liming.gao<mailto:liming.gao@intel.com>; Jordan Justen<mailto:jordan.l.justen@intel.com>; Laszlo Ersek<mailto:lersek@redhat.com>; Andrew Fish<mailto:afish@apple.com>; Ni, Ray<mailto:ray.ni@intel.com>; Bret Barkelew<mailto:Bret.Barkelew@microsoft.com> > Subject: [EXTERNAL] Re: [edk2-devel] [PATCH v9 00/13] Add the VariablePolicy feature > > Hi Bret, > > To be honest, I don't recall seeing anything. Again, maybe I should have been more proactive, but that's probably the net reality for most people. It would be unreasonable to expect you to test every platform, but it is very reasonable to assume that if you know you're adding build breakage to every platform (that is trivial to fix), that you would be taking care of it... Principle of least surprise. And yes, in some weird corner case perhaps that would be insufficient (again, I don't think anyone would expect you to compile test every platform), but it would take care of 99% of obvious fall-out. > > For reference, there are occasional clean-ups that happen to the edk2 tree, and I've never seen anyone claim "not my problem" to deal with the obvious fall-out resulting from renames and such. > > A > > From: devel@edk2.groups.io <devel@edk2.groups.io> on behalf of Bret Barkelew via groups.io <debtech=gmail.com@groups.io> > Sent: Thursday, November 19, 2020 10:15 AM > To: Ard Biesheuvel <ard.biesheuvel@arm.com> > Cc: Bret Barkelew <bret@corthon.com>; devel@edk2.groups.io <devel@edk2.groups.io>; Jiewen Yao <jiewen.yao@intel.com>; Dandan Bi <dandan.bi@intel.com>; Chao Zhang <chao.b.zhang@intel.com>; Jian J Wang <jian.j.wang@intel.com>; Hao A Wu <hao.a.wu@intel.com>; Liming Gao <liming.gao@intel.com>; Jordan Justen <jordan.l.justen@intel.com>; Laszlo Ersek <lersek@redhat.com>; Andrew Fish <afish@apple.com>; Ray Ni <ray.ni@intel.com>; Bret Barkelew <brbarkel@microsoft.com> > Subject: Re: [edk2-devel] [PATCH v9 00/13] Add the VariablePolicy feature > > Those bugs and recommendations were sent out months ago. Several platforms have staged the changes already. > > You need to add the library class to your DSC. > > -- > [ Insert obscure pop-culture reference here. ] > >> On Nov 19, 2020, at 4:46 AM, Ard Biesheuvel <ard.biesheuvel@arm.com> wrote: >> >> On 11/9/20 7:45 AM, Bret Barkelew wrote: >>> The 14 patches in this series add the VariablePolicy feature to the core, >>> deprecate Edk2VarLock (while adding a compatibility layer to reduce code >>> churn), and integrate the VariablePolicy libraries and protocols into >>> Variable Services. >>> Since the integration requires multiple changes, including adding libraries, >>> a protocol, an SMI communication handler, and VariableServices integration, >>> the patches are broken up by individual library additions and then a final >>> integration. Security-sensitive changes like bypassing Authenticated >>> Variable enforcement are also broken out into individual patches so that >>> attention can be called directly to them. >>> Platform porting instructions are described in this wiki entry: >>> https://nam04.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com%2Ftianocore%2Ftianocore.github.io%2Fwiki%2FVariablePolicy-Protocol---Enhanced-Method-for-Managing-Variables%23platform-porting&data=04%7C01%7Cawarkentin%40vmware.com%7C594f15b45aaf476bff7e08d88cb57390%7Cb39138ca3cee4b4aa4d6cd83d9dd62f0%7C0%7C0%7C637414058247128819%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C1000&sdata=LLKZ7qeffR0WCvLbYuHtQIuwJGhXY0mVqB2w9B0q180%3D&reserved=0<https://nam06.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com%2Ftianocore%2Ftianocore.github.io%2Fwiki%2FVariablePolicy-Protocol---Enhanced-Method-for-Managing-Variables%23platform-porting&data=04%7C01%7CBret.Barkelew%40microsoft.com%7Ca7adba0050614e2b511608d88cc609f0%7C72f988bf86f141af91ab2d7cd011db47%7C1%7C0%7C637414129505929483%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C1000&sdata=a5rbCHus%2BDVQSYmWYaOsV5aIF8WfAjH4jaEt0WZXBwM%3D&reserved=0> >>> Discussion of the feature can be found in multiple places throughout >>> the last year on the RFC channel, staging branches, and in devel. >>> Most recently, this subject was discussed in this thread: >>> https://nam04.safelinks.protection.outlook.com/?url=https%3A%2F%2Fedk2.groups.io%2Fg%2Fdevel%2Fmessage%2F53712&data=04%7C01%7Cawarkentin%40vmware.com%7C594f15b45aaf476bff7e08d88cb57390%7Cb39138ca3cee4b4aa4d6cd83d9dd62f0%7C0%7C0%7C637414058247133820%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C1000&sdata=GYY52rlsPxw07vfdu%2BVbWhzRjtHWXlIGveCTT17mlfc%3D&reserved=0<https://nam06.safelinks.protection.outlook.com/?url=https%3A%2F%2Fedk2.groups.io%2Fg%2Fdevel%2Fmessage%2F53712&data=04%7C01%7CBret.Barkelew%40microsoft.com%7Ca7adba0050614e2b511608d88cc609f0%7C72f988bf86f141af91ab2d7cd011db47%7C1%7C0%7C637414129505939477%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C1000&sdata=J3dLJeVPCKyqNXG3F2%2F8mQceMJTCD%2BsJnzZKXZmTn8Q%3D&reserved=0> >>> (the code branches shared in that discussion are now out of date, but the >>> whitepapers and discussion are relevant). >>> Cc: Jiewen Yao <jiewen.yao@intel.com> >>> Cc: Dandan Bi <dandan.bi@intel.com> >>> Cc: Chao Zhang <chao.b.zhang@intel.com> >>> Cc: Jian J Wang <jian.j.wang@intel.com> >>> Cc: Hao A Wu <hao.a.wu@intel.com> >>> Cc: Liming Gao <liming.gao@intel.com> >>> Cc: Jordan Justen <jordan.l.justen@intel.com> >>> Cc: Laszlo Ersek <lersek@redhat.com> >>> Cc: Ard Biesheuvel <ard.biesheuvel@arm.com> >>> Cc: Andrew Fish <afish@apple.com> >>> Cc: Ray Ni <ray.ni@intel.com> >>> Cc: Bret Barkelew <brbarkel@microsoft.com> >>> Signed-off-by: Bret Barkelew <brbarkel@microsoft.com> >> >> This series has now made it into edk2, and has subsequently broken every single platform in edk2-platforms. Is anyone intending to propose any fixes for this? >> >> >>> v9 changes: >>> * Rebase >>> * Address the event ordering issues around MorLock at EndOfDxe >>> * Drop problematic tests >>> * Address ECC issues >>> v8 changes: >>> * Rebase >>> * Small tweaks from final PRs >>> * Drank a lot >>> * Enrolled several members and a steward in CatFacts >>> v7 changes: >>> * Address comments from Dandan about security of the MM handler >>> * Add readme >>> * Fix bug around hex characters in BOOT####, etc >>> * Add additional testing for hex characters >>> * Add additional testing for authenticated variables >>> v6 changes: >>> * Fix an issue with uninitialized Status in InitVariablePolicyLib() and DeinitVariablePolicyLib() >>> * Fix GCC building in shell-based functional test >>> * Rebase on latest origin/master >>> v5 changes: >>> * Fix the CONST mismatch in VariablePolicy.h and VariablePolicySmmDxe.c >>> * Fix EFIAPI mismatches in the functional unittest >>> * Rebase on latest origin/master >>> v4 changes: >>> * Remove Optional PcdAllowVariablePolicyEnforcementDisable PCD from platforms >>> * Rebase on master >>> * Migrate to new MmCommunicate2 protocol >>> * Fix an oversight in the default return value for InitMmCommonCommBuffer >>> * Fix in VariablePolicyLib to allow ExtraInitRuntimeDxe to consume variables >>> V3 changes: >>> * Address all non-unittest issues with ECC >>> * Make additional style changes >>> * Include section name in hunk headers in "ini-style" files >>> * Remove requirement for the EdkiiPiSmmCommunicationsRegionTable driver >>> (now allocates its own buffer) >>> * Change names from VARIABLE_POLICY_PROTOCOL and gVariablePolicyProtocolGuid >>> to EDKII_VARIABLE_POLICY_PROTOCOL and gEdkiiVariablePolicyProtocolGuid >>> * Fix GCC warning about initializing externs >>> * Add UNI strings for new PCD >>> * Add patches for ArmVirtPkg, OvmfXen, and UefiPayloadPkg >>> * Reorder patches according to Liming's feedback about adding to platforms >>> before changing variable driver >>> V2 changes: >>> * Fixed implementation for RuntimeDxe >>> * Add PCD to block DisableVariablePolicy >>> * Fix the DumpVariablePolicy pagination in SMM >>> Bret Barkelew (13): >>> MdeModulePkg: Define the VariablePolicy protocol interface >>> MdeModulePkg: Define the VariablePolicyLib >>> MdeModulePkg: Define the VariablePolicyHelperLib >>> MdeModulePkg: Define the VarCheckPolicyLib and SMM interface >>> OvmfPkg: Add VariablePolicy engine to OvmfPkg platform >>> EmulatorPkg: Add VariablePolicy engine to EmulatorPkg platform >>> ArmVirtPkg: Add VariablePolicy engine to ArmVirtPkg platform >>> UefiPayloadPkg: Add VariablePolicy engine to UefiPayloadPkg platform >>> MdeModulePkg: Connect VariablePolicy business logic to >>> VariableServices >>> MdeModulePkg: Allow VariablePolicy state to delete protected variables >>> SecurityPkg: Allow VariablePolicy state to delete authenticated >>> variables >>> MdeModulePkg: Change TCG MOR variables to use VariablePolicy >>> MdeModulePkg: Drop VarLock from RuntimeDxe variable driver >>> MdeModulePkg/Library/VarCheckPolicyLib/VarCheckPolicyLib.c | 346 ++++++++ >>> MdeModulePkg/Library/VariablePolicyHelperLib/VariablePolicyHelperLib.c | 396 ++++++++++ >>> MdeModulePkg/Library/VariablePolicyLib/VariablePolicyExtraInitNull.c | 46 ++ >>> MdeModulePkg/Library/VariablePolicyLib/VariablePolicyExtraInitRuntimeDxe.c | 85 ++ >>> MdeModulePkg/Library/VariablePolicyLib/VariablePolicyLib.c | 830 ++++++++++++++++++++ >>> MdeModulePkg/Universal/Variable/RuntimeDxe/TcgMorLockDxe.c | 52 +- >>> MdeModulePkg/Universal/Variable/RuntimeDxe/TcgMorLockSmm.c | 60 +- >>> MdeModulePkg/Universal/Variable/RuntimeDxe/VarCheck.c | 49 +- >>> MdeModulePkg/Universal/Variable/RuntimeDxe/VariableDxe.c | 60 ++ >>> MdeModulePkg/Universal/Variable/RuntimeDxe/VariableLockRequestToLock.c | 71 ++ >>> MdeModulePkg/Universal/Variable/RuntimeDxe/VariablePolicySmmDxe.c | 573 ++++++++++++++ >>> MdeModulePkg/Universal/Variable/RuntimeDxe/VariableSmm.c | 7 + >>> MdeModulePkg/Universal/Variable/RuntimeDxe/VariableSmmRuntimeDxe.c | 14 + >>> SecurityPkg/Library/AuthVariableLib/AuthService.c | 30 +- >>> ArmVirtPkg/ArmVirt.dsc.inc | 4 + >>> EmulatorPkg/EmulatorPkg.dsc | 3 + >>> MdeModulePkg/Include/Guid/VarCheckPolicyMmi.h | 54 ++ >>> MdeModulePkg/Include/Library/VariablePolicyHelperLib.h | 164 ++++ >>> MdeModulePkg/Include/Library/VariablePolicyLib.h | 207 +++++ >>> MdeModulePkg/Include/Protocol/VariablePolicy.h | 157 ++++ >>> MdeModulePkg/Library/VarCheckPolicyLib/VarCheckPolicyLib.inf | 42 + >>> MdeModulePkg/Library/VarCheckPolicyLib/VarCheckPolicyLib.uni | 12 + >>> MdeModulePkg/Library/VariablePolicyHelperLib/VariablePolicyHelperLib.inf | 35 + >>> MdeModulePkg/Library/VariablePolicyHelperLib/VariablePolicyHelperLib.uni | 12 + >>> MdeModulePkg/Library/VariablePolicyLib/ReadMe.md | 406 ++++++++++ >>> MdeModulePkg/Library/VariablePolicyLib/VariablePolicyLib.inf | 48 ++ >>> MdeModulePkg/Library/VariablePolicyLib/VariablePolicyLib.uni | 12 + >>> MdeModulePkg/Library/VariablePolicyLib/VariablePolicyLibRuntimeDxe.inf | 51 ++ >>> MdeModulePkg/MdeModulePkg.ci.yaml | 4 +- >>> MdeModulePkg/MdeModulePkg.dec | 26 +- >>> MdeModulePkg/MdeModulePkg.dsc | 9 + >>> MdeModulePkg/MdeModulePkg.uni | 7 + >>> MdeModulePkg/Universal/Variable/RuntimeDxe/VariableRuntimeDxe.inf | 5 + >>> MdeModulePkg/Universal/Variable/RuntimeDxe/VariableSmm.inf | 4 + >>> MdeModulePkg/Universal/Variable/RuntimeDxe/VariableSmmRuntimeDxe.inf | 11 + >>> MdeModulePkg/Universal/Variable/RuntimeDxe/VariableStandaloneMm.inf | 4 + >>> OvmfPkg/OvmfPkgIa32.dsc | 5 + >>> OvmfPkg/OvmfPkgIa32X64.dsc | 5 + >>> OvmfPkg/OvmfPkgX64.dsc | 5 + >>> OvmfPkg/OvmfXen.dsc | 4 + >>> SecurityPkg/Library/AuthVariableLib/AuthVariableLib.inf | 2 + >>> UefiPayloadPkg/UefiPayloadPkgIa32.dsc | 4 + >>> UefiPayloadPkg/UefiPayloadPkgIa32X64.dsc | 4 + >>> 43 files changed, 3845 insertions(+), 80 deletions(-) >>> create mode 100644 MdeModulePkg/Library/VarCheckPolicyLib/VarCheckPolicyLib.c >>> create mode 100644 MdeModulePkg/Library/VariablePolicyHelperLib/VariablePolicyHelperLib.c >>> create mode 100644 MdeModulePkg/Library/VariablePolicyLib/VariablePolicyExtraInitNull.c >>> create mode 100644 MdeModulePkg/Library/VariablePolicyLib/VariablePolicyExtraInitRuntimeDxe.c >>> create mode 100644 MdeModulePkg/Library/VariablePolicyLib/VariablePolicyLib.c >>> create mode 100644 MdeModulePkg/Universal/Variable/RuntimeDxe/VariableLockRequestToLock.c >>> create mode 100644 MdeModulePkg/Universal/Variable/RuntimeDxe/VariablePolicySmmDxe.c >>> create mode 100644 MdeModulePkg/Include/Guid/VarCheckPolicyMmi.h >>> create mode 100644 MdeModulePkg/Include/Library/VariablePolicyHelperLib.h >>> create mode 100644 MdeModulePkg/Include/Library/VariablePolicyLib.h >>> create mode 100644 MdeModulePkg/Include/Protocol/VariablePolicy.h >>> create mode 100644 MdeModulePkg/Library/VarCheckPolicyLib/VarCheckPolicyLib.inf >>> create mode 100644 MdeModulePkg/Library/VarCheckPolicyLib/VarCheckPolicyLib.uni >>> create mode 100644 MdeModulePkg/Library/VariablePolicyHelperLib/VariablePolicyHelperLib.inf >>> create mode 100644 MdeModulePkg/Library/VariablePolicyHelperLib/VariablePolicyHelperLib.uni >>> create mode 100644 MdeModulePkg/Library/VariablePolicyLib/ReadMe.md >>> create mode 100644 MdeModulePkg/Library/VariablePolicyLib/VariablePolicyLib.inf >>> create mode 100644 MdeModulePkg/Library/VariablePolicyLib/VariablePolicyLib.uni >>> create mode 100644 MdeModulePkg/Library/VariablePolicyLib/VariablePolicyLibRuntimeDxe.inf >> > > > > > -=-=-=-=-=-=-=-=-=-=-=- Groups.io Links: You receive all messages sent to this group. View/Reply Online (#67760): https://edk2.groups.io/g/devel/message/67760 Mute This Topic: https://groups.io/mt/78130767/1787277 Group Owner: devel+owner@edk2.groups.io Unsubscribe: https://edk2.groups.io/g/devel/unsub [importer@patchew.org] -=-=-=-=-=-=-=-=-=-=-=-
On 11/19/20 5:15 PM, Bret Barkelew wrote: > Those bugs and recommendations were sent out months ago. Several platforms have staged the changes already. > > You need to add the library class to your DSC. > I know it has been painful to get these changes in, and I am glad that you stuck with it. But that does not make it OK to simply break every platform in edk2-platforms/ and not take any responsibility whatsoever for fixing it. If it is such a trivial fix, why didn't you fix it yourself? -=-=-=-=-=-=-=-=-=-=-=- Groups.io Links: You receive all messages sent to this group. View/Reply Online (#67724): https://edk2.groups.io/g/devel/message/67724 Mute This Topic: https://groups.io/mt/78130767/1787277 Group Owner: devel+owner@edk2.groups.io Unsubscribe: https://edk2.groups.io/g/devel/unsub [importer@patchew.org] -=-=-=-=-=-=-=-=-=-=-=-
I followed the process that was agreed upon in this list: I opened bugs to every platform maintainer with explicit details of what needed to be changed and waited a full month before making any further progress with the main patches (adding a month to the completion time). I’m wrapping things up to take a vacation next week, but if there are still problems when I return, I can probably contribute to one or two platforms. - Bret ________________________________ From: Ard Biesheuvel <ard.biesheuvel@arm.com> Sent: Thursday, November 19, 2020 8:19:37 AM To: Bret Barkelew <debtech@gmail.com> Cc: Bret Barkelew <bret@corthon.com>; devel@edk2.groups.io <devel@edk2.groups.io>; Yao, Jiewen <jiewen.yao@intel.com>; Dandan Bi <dandan.bi@intel.com>; Jian J Wang <jian.j.wang@intel.com>; Hao A Wu <hao.a.wu@intel.com>; Liming Gao <gaoliming@byosoft.com.cn>; Jordan Justen <jordan.l.justen@intel.com>; Laszlo Ersek <lersek@redhat.com>; Andrew Fish <afish@apple.com>; Ni, Ray <ray.ni@intel.com>; Bret Barkelew <Bret.Barkelew@microsoft.com> Subject: [EXTERNAL] Re: [PATCH v9 00/13] Add the VariablePolicy feature On 11/19/20 5:15 PM, Bret Barkelew wrote: > Those bugs and recommendations were sent out months ago. Several platforms have staged the changes already. > > You need to add the library class to your DSC. > I know it has been painful to get these changes in, and I am glad that you stuck with it. But that does not make it OK to simply break every platform in edk2-platforms/ and not take any responsibility whatsoever for fixing it. If it is such a trivial fix, why didn't you fix it yourself? -=-=-=-=-=-=-=-=-=-=-=- Groups.io Links: You receive all messages sent to this group. View/Reply Online (#67725): https://edk2.groups.io/g/devel/message/67725 Mute This Topic: https://groups.io/mt/78368698/1787277 Group Owner: devel+owner@edk2.groups.io Unsubscribe: https://edk2.groups.io/g/devel/unsub [importer@patchew.org] -=-=-=-=-=-=-=-=-=-=-=-
To clarify: The current solution to the MorLock EndOfDxe issue is to expressly call LockVariablePolicy() in the same locations that mEndOfDxe is set (which was the mechanism that previously locked the VariableLock interface). This solution maintains parity with the old design, which is keeping with the ethos of minimal changes and similar functionality to VariableLock. It does not introduce any new dependencies. The only drawback to this approach is that it preserves the strict ordering that was also previously required by MorLock, which I will attempt to address in later updates. On Sun, Nov 8, 2020 at 10:45 PM Bret Barkelew <bret@corthon.com> wrote: > The 14 patches in this series add the VariablePolicy feature to the core, > deprecate Edk2VarLock (while adding a compatibility layer to reduce code > churn), and integrate the VariablePolicy libraries and protocols into > Variable Services. > > Since the integration requires multiple changes, including adding > libraries, > a protocol, an SMI communication handler, and VariableServices integration, > the patches are broken up by individual library additions and then a final > integration. Security-sensitive changes like bypassing Authenticated > Variable enforcement are also broken out into individual patches so that > attention can be called directly to them. > > Platform porting instructions are described in this wiki entry: > > https://github.com/tianocore/tianocore.github.io/wiki/VariablePolicy-Protocol---Enhanced-Method-for-Managing-Variables#platform-porting > > Discussion of the feature can be found in multiple places throughout > the last year on the RFC channel, staging branches, and in devel. > > Most recently, this subject was discussed in this thread: > https://edk2.groups.io/g/devel/message/53712 > (the code branches shared in that discussion are now out of date, but the > whitepapers and discussion are relevant). > > Cc: Jiewen Yao <jiewen.yao@intel.com> > Cc: Dandan Bi <dandan.bi@intel.com> > Cc: Chao Zhang <chao.b.zhang@intel.com> > Cc: Jian J Wang <jian.j.wang@intel.com> > Cc: Hao A Wu <hao.a.wu@intel.com> > Cc: Liming Gao <liming.gao@intel.com> > Cc: Jordan Justen <jordan.l.justen@intel.com> > Cc: Laszlo Ersek <lersek@redhat.com> > Cc: Ard Biesheuvel <ard.biesheuvel@arm.com> > Cc: Andrew Fish <afish@apple.com> > Cc: Ray Ni <ray.ni@intel.com> > Cc: Bret Barkelew <brbarkel@microsoft.com> > Signed-off-by: Bret Barkelew <brbarkel@microsoft.com> > > v9 changes: > * Rebase > * Address the event ordering issues around MorLock at EndOfDxe > * Drop problematic tests > * Address ECC issues > > v8 changes: > * Rebase > * Small tweaks from final PRs > * Drank a lot > * Enrolled several members and a steward in CatFacts > > v7 changes: > * Address comments from Dandan about security of the MM handler > * Add readme > * Fix bug around hex characters in BOOT####, etc > * Add additional testing for hex characters > * Add additional testing for authenticated variables > > v6 changes: > * Fix an issue with uninitialized Status in InitVariablePolicyLib() and > DeinitVariablePolicyLib() > * Fix GCC building in shell-based functional test > * Rebase on latest origin/master > > v5 changes: > * Fix the CONST mismatch in VariablePolicy.h and VariablePolicySmmDxe.c > * Fix EFIAPI mismatches in the functional unittest > * Rebase on latest origin/master > > v4 changes: > * Remove Optional PcdAllowVariablePolicyEnforcementDisable PCD from > platforms > * Rebase on master > * Migrate to new MmCommunicate2 protocol > * Fix an oversight in the default return value for InitMmCommonCommBuffer > * Fix in VariablePolicyLib to allow ExtraInitRuntimeDxe to consume > variables > > V3 changes: > * Address all non-unittest issues with ECC > * Make additional style changes > * Include section name in hunk headers in "ini-style" files > * Remove requirement for the EdkiiPiSmmCommunicationsRegionTable driver > (now allocates its own buffer) > * Change names from VARIABLE_POLICY_PROTOCOL and > gVariablePolicyProtocolGuid > to EDKII_VARIABLE_POLICY_PROTOCOL and gEdkiiVariablePolicyProtocolGuid > * Fix GCC warning about initializing externs > * Add UNI strings for new PCD > * Add patches for ArmVirtPkg, OvmfXen, and UefiPayloadPkg > * Reorder patches according to Liming's feedback about adding to platforms > before changing variable driver > > V2 changes: > * Fixed implementation for RuntimeDxe > * Add PCD to block DisableVariablePolicy > * Fix the DumpVariablePolicy pagination in SMM > > Bret Barkelew (13): > MdeModulePkg: Define the VariablePolicy protocol interface > MdeModulePkg: Define the VariablePolicyLib > MdeModulePkg: Define the VariablePolicyHelperLib > MdeModulePkg: Define the VarCheckPolicyLib and SMM interface > OvmfPkg: Add VariablePolicy engine to OvmfPkg platform > EmulatorPkg: Add VariablePolicy engine to EmulatorPkg platform > ArmVirtPkg: Add VariablePolicy engine to ArmVirtPkg platform > UefiPayloadPkg: Add VariablePolicy engine to UefiPayloadPkg platform > MdeModulePkg: Connect VariablePolicy business logic to > VariableServices > MdeModulePkg: Allow VariablePolicy state to delete protected variables > SecurityPkg: Allow VariablePolicy state to delete authenticated > variables > MdeModulePkg: Change TCG MOR variables to use VariablePolicy > MdeModulePkg: Drop VarLock from RuntimeDxe variable driver > > MdeModulePkg/Library/VarCheckPolicyLib/VarCheckPolicyLib.c > | 346 ++++++++ > MdeModulePkg/Library/VariablePolicyHelperLib/VariablePolicyHelperLib.c > | 396 ++++++++++ > MdeModulePkg/Library/VariablePolicyLib/VariablePolicyExtraInitNull.c > | 46 ++ > MdeModulePkg/Library/VariablePolicyLib/VariablePolicyExtraInitRuntimeDxe.c > | 85 ++ > MdeModulePkg/Library/VariablePolicyLib/VariablePolicyLib.c > | 830 ++++++++++++++++++++ > MdeModulePkg/Universal/Variable/RuntimeDxe/TcgMorLockDxe.c > | 52 +- > MdeModulePkg/Universal/Variable/RuntimeDxe/TcgMorLockSmm.c > | 60 +- > MdeModulePkg/Universal/Variable/RuntimeDxe/VarCheck.c > | 49 +- > MdeModulePkg/Universal/Variable/RuntimeDxe/VariableDxe.c > | 60 ++ > MdeModulePkg/Universal/Variable/RuntimeDxe/VariableLockRequestToLock.c > | 71 ++ > MdeModulePkg/Universal/Variable/RuntimeDxe/VariablePolicySmmDxe.c > | 573 ++++++++++++++ > MdeModulePkg/Universal/Variable/RuntimeDxe/VariableSmm.c > | 7 + > MdeModulePkg/Universal/Variable/RuntimeDxe/VariableSmmRuntimeDxe.c > | 14 + > SecurityPkg/Library/AuthVariableLib/AuthService.c > | 30 +- > ArmVirtPkg/ArmVirt.dsc.inc > | 4 + > EmulatorPkg/EmulatorPkg.dsc > | 3 + > MdeModulePkg/Include/Guid/VarCheckPolicyMmi.h > | 54 ++ > MdeModulePkg/Include/Library/VariablePolicyHelperLib.h > | 164 ++++ > MdeModulePkg/Include/Library/VariablePolicyLib.h > | 207 +++++ > MdeModulePkg/Include/Protocol/VariablePolicy.h > | 157 ++++ > MdeModulePkg/Library/VarCheckPolicyLib/VarCheckPolicyLib.inf > | 42 + > MdeModulePkg/Library/VarCheckPolicyLib/VarCheckPolicyLib.uni > | 12 + > MdeModulePkg/Library/VariablePolicyHelperLib/VariablePolicyHelperLib.inf > | 35 + > MdeModulePkg/Library/VariablePolicyHelperLib/VariablePolicyHelperLib.uni > | 12 + > MdeModulePkg/Library/VariablePolicyLib/ReadMe.md > | 406 ++++++++++ > MdeModulePkg/Library/VariablePolicyLib/VariablePolicyLib.inf > | 48 ++ > MdeModulePkg/Library/VariablePolicyLib/VariablePolicyLib.uni > | 12 + > MdeModulePkg/Library/VariablePolicyLib/VariablePolicyLibRuntimeDxe.inf > | 51 ++ > MdeModulePkg/MdeModulePkg.ci.yaml > | 4 +- > MdeModulePkg/MdeModulePkg.dec > | 26 +- > MdeModulePkg/MdeModulePkg.dsc > | 9 + > MdeModulePkg/MdeModulePkg.uni > | 7 + > MdeModulePkg/Universal/Variable/RuntimeDxe/VariableRuntimeDxe.inf > | 5 + > MdeModulePkg/Universal/Variable/RuntimeDxe/VariableSmm.inf > | 4 + > MdeModulePkg/Universal/Variable/RuntimeDxe/VariableSmmRuntimeDxe.inf > | 11 + > MdeModulePkg/Universal/Variable/RuntimeDxe/VariableStandaloneMm.inf > | 4 + > OvmfPkg/OvmfPkgIa32.dsc > | 5 + > OvmfPkg/OvmfPkgIa32X64.dsc > | 5 + > OvmfPkg/OvmfPkgX64.dsc > | 5 + > OvmfPkg/OvmfXen.dsc > | 4 + > SecurityPkg/Library/AuthVariableLib/AuthVariableLib.inf > | 2 + > UefiPayloadPkg/UefiPayloadPkgIa32.dsc > | 4 + > UefiPayloadPkg/UefiPayloadPkgIa32X64.dsc > | 4 + > 43 files changed, 3845 insertions(+), 80 deletions(-) > create mode 100644 > MdeModulePkg/Library/VarCheckPolicyLib/VarCheckPolicyLib.c > create mode 100644 > MdeModulePkg/Library/VariablePolicyHelperLib/VariablePolicyHelperLib.c > create mode 100644 > MdeModulePkg/Library/VariablePolicyLib/VariablePolicyExtraInitNull.c > create mode 100644 > MdeModulePkg/Library/VariablePolicyLib/VariablePolicyExtraInitRuntimeDxe.c > create mode 100644 > MdeModulePkg/Library/VariablePolicyLib/VariablePolicyLib.c > create mode 100644 > MdeModulePkg/Universal/Variable/RuntimeDxe/VariableLockRequestToLock.c > create mode 100644 > MdeModulePkg/Universal/Variable/RuntimeDxe/VariablePolicySmmDxe.c > create mode 100644 MdeModulePkg/Include/Guid/VarCheckPolicyMmi.h > create mode 100644 MdeModulePkg/Include/Library/VariablePolicyHelperLib.h > create mode 100644 MdeModulePkg/Include/Library/VariablePolicyLib.h > create mode 100644 MdeModulePkg/Include/Protocol/VariablePolicy.h > create mode 100644 > MdeModulePkg/Library/VarCheckPolicyLib/VarCheckPolicyLib.inf > create mode 100644 > MdeModulePkg/Library/VarCheckPolicyLib/VarCheckPolicyLib.uni > create mode 100644 > MdeModulePkg/Library/VariablePolicyHelperLib/VariablePolicyHelperLib.inf > create mode 100644 > MdeModulePkg/Library/VariablePolicyHelperLib/VariablePolicyHelperLib.uni > create mode 100644 MdeModulePkg/Library/VariablePolicyLib/ReadMe.md > create mode 100644 > MdeModulePkg/Library/VariablePolicyLib/VariablePolicyLib.inf > create mode 100644 > MdeModulePkg/Library/VariablePolicyLib/VariablePolicyLib.uni > create mode 100644 > MdeModulePkg/Library/VariablePolicyLib/VariablePolicyLibRuntimeDxe.inf > > -- > 2.28.0.windows.1 > > -=-=-=-=-=-=-=-=-=-=-=- Groups.io Links: You receive all messages sent to this group. View/Reply Online (#67296): https://edk2.groups.io/g/devel/message/67296 Mute This Topic: https://groups.io/mt/78130767/1787277 Group Owner: devel+owner@edk2.groups.io Unsubscribe: https://edk2.groups.io/g/devel/unsub [importer@patchew.org] -=-=-=-=-=-=-=-=-=-=-=-
On 11/11/20 19:43, Bret Barkelew wrote: > To clarify: > > The current solution to the MorLock EndOfDxe issue is to expressly call > LockVariablePolicy() in the same locations that mEndOfDxe is set (which was > the mechanism that previously locked the VariableLock interface). This > solution maintains parity with the old design, which is keeping with the > ethos of minimal changes and similar functionality to VariableLock. It does > not introduce any new dependencies. > > The only drawback to this approach is that it preserves the strict ordering > that was also previously required by MorLock, which I will attempt to > address in later updates. Thank you for the explanation! Laszlo > > On Sun, Nov 8, 2020 at 10:45 PM Bret Barkelew <bret@corthon.com> wrote: > >> The 14 patches in this series add the VariablePolicy feature to the core, >> deprecate Edk2VarLock (while adding a compatibility layer to reduce code >> churn), and integrate the VariablePolicy libraries and protocols into >> Variable Services. >> >> Since the integration requires multiple changes, including adding >> libraries, >> a protocol, an SMI communication handler, and VariableServices integration, >> the patches are broken up by individual library additions and then a final >> integration. Security-sensitive changes like bypassing Authenticated >> Variable enforcement are also broken out into individual patches so that >> attention can be called directly to them. >> >> Platform porting instructions are described in this wiki entry: >> >> https://github.com/tianocore/tianocore.github.io/wiki/VariablePolicy-Protocol---Enhanced-Method-for-Managing-Variables#platform-porting >> >> Discussion of the feature can be found in multiple places throughout >> the last year on the RFC channel, staging branches, and in devel. >> >> Most recently, this subject was discussed in this thread: >> https://edk2.groups.io/g/devel/message/53712 >> (the code branches shared in that discussion are now out of date, but the >> whitepapers and discussion are relevant). >> >> Cc: Jiewen Yao <jiewen.yao@intel.com> >> Cc: Dandan Bi <dandan.bi@intel.com> >> Cc: Chao Zhang <chao.b.zhang@intel.com> >> Cc: Jian J Wang <jian.j.wang@intel.com> >> Cc: Hao A Wu <hao.a.wu@intel.com> >> Cc: Liming Gao <liming.gao@intel.com> >> Cc: Jordan Justen <jordan.l.justen@intel.com> >> Cc: Laszlo Ersek <lersek@redhat.com> >> Cc: Ard Biesheuvel <ard.biesheuvel@arm.com> >> Cc: Andrew Fish <afish@apple.com> >> Cc: Ray Ni <ray.ni@intel.com> >> Cc: Bret Barkelew <brbarkel@microsoft.com> >> Signed-off-by: Bret Barkelew <brbarkel@microsoft.com> >> >> v9 changes: >> * Rebase >> * Address the event ordering issues around MorLock at EndOfDxe >> * Drop problematic tests >> * Address ECC issues >> >> v8 changes: >> * Rebase >> * Small tweaks from final PRs >> * Drank a lot >> * Enrolled several members and a steward in CatFacts >> >> v7 changes: >> * Address comments from Dandan about security of the MM handler >> * Add readme >> * Fix bug around hex characters in BOOT####, etc >> * Add additional testing for hex characters >> * Add additional testing for authenticated variables >> >> v6 changes: >> * Fix an issue with uninitialized Status in InitVariablePolicyLib() and >> DeinitVariablePolicyLib() >> * Fix GCC building in shell-based functional test >> * Rebase on latest origin/master >> >> v5 changes: >> * Fix the CONST mismatch in VariablePolicy.h and VariablePolicySmmDxe.c >> * Fix EFIAPI mismatches in the functional unittest >> * Rebase on latest origin/master >> >> v4 changes: >> * Remove Optional PcdAllowVariablePolicyEnforcementDisable PCD from >> platforms >> * Rebase on master >> * Migrate to new MmCommunicate2 protocol >> * Fix an oversight in the default return value for InitMmCommonCommBuffer >> * Fix in VariablePolicyLib to allow ExtraInitRuntimeDxe to consume >> variables >> >> V3 changes: >> * Address all non-unittest issues with ECC >> * Make additional style changes >> * Include section name in hunk headers in "ini-style" files >> * Remove requirement for the EdkiiPiSmmCommunicationsRegionTable driver >> (now allocates its own buffer) >> * Change names from VARIABLE_POLICY_PROTOCOL and >> gVariablePolicyProtocolGuid >> to EDKII_VARIABLE_POLICY_PROTOCOL and gEdkiiVariablePolicyProtocolGuid >> * Fix GCC warning about initializing externs >> * Add UNI strings for new PCD >> * Add patches for ArmVirtPkg, OvmfXen, and UefiPayloadPkg >> * Reorder patches according to Liming's feedback about adding to platforms >> before changing variable driver >> >> V2 changes: >> * Fixed implementation for RuntimeDxe >> * Add PCD to block DisableVariablePolicy >> * Fix the DumpVariablePolicy pagination in SMM >> >> Bret Barkelew (13): >> MdeModulePkg: Define the VariablePolicy protocol interface >> MdeModulePkg: Define the VariablePolicyLib >> MdeModulePkg: Define the VariablePolicyHelperLib >> MdeModulePkg: Define the VarCheckPolicyLib and SMM interface >> OvmfPkg: Add VariablePolicy engine to OvmfPkg platform >> EmulatorPkg: Add VariablePolicy engine to EmulatorPkg platform >> ArmVirtPkg: Add VariablePolicy engine to ArmVirtPkg platform >> UefiPayloadPkg: Add VariablePolicy engine to UefiPayloadPkg platform >> MdeModulePkg: Connect VariablePolicy business logic to >> VariableServices >> MdeModulePkg: Allow VariablePolicy state to delete protected variables >> SecurityPkg: Allow VariablePolicy state to delete authenticated >> variables >> MdeModulePkg: Change TCG MOR variables to use VariablePolicy >> MdeModulePkg: Drop VarLock from RuntimeDxe variable driver >> >> MdeModulePkg/Library/VarCheckPolicyLib/VarCheckPolicyLib.c >> | 346 ++++++++ >> MdeModulePkg/Library/VariablePolicyHelperLib/VariablePolicyHelperLib.c >> | 396 ++++++++++ >> MdeModulePkg/Library/VariablePolicyLib/VariablePolicyExtraInitNull.c >> | 46 ++ >> MdeModulePkg/Library/VariablePolicyLib/VariablePolicyExtraInitRuntimeDxe.c >> | 85 ++ >> MdeModulePkg/Library/VariablePolicyLib/VariablePolicyLib.c >> | 830 ++++++++++++++++++++ >> MdeModulePkg/Universal/Variable/RuntimeDxe/TcgMorLockDxe.c >> | 52 +- >> MdeModulePkg/Universal/Variable/RuntimeDxe/TcgMorLockSmm.c >> | 60 +- >> MdeModulePkg/Universal/Variable/RuntimeDxe/VarCheck.c >> | 49 +- >> MdeModulePkg/Universal/Variable/RuntimeDxe/VariableDxe.c >> | 60 ++ >> MdeModulePkg/Universal/Variable/RuntimeDxe/VariableLockRequestToLock.c >> | 71 ++ >> MdeModulePkg/Universal/Variable/RuntimeDxe/VariablePolicySmmDxe.c >> | 573 ++++++++++++++ >> MdeModulePkg/Universal/Variable/RuntimeDxe/VariableSmm.c >> | 7 + >> MdeModulePkg/Universal/Variable/RuntimeDxe/VariableSmmRuntimeDxe.c >> | 14 + >> SecurityPkg/Library/AuthVariableLib/AuthService.c >> | 30 +- >> ArmVirtPkg/ArmVirt.dsc.inc >> | 4 + >> EmulatorPkg/EmulatorPkg.dsc >> | 3 + >> MdeModulePkg/Include/Guid/VarCheckPolicyMmi.h >> | 54 ++ >> MdeModulePkg/Include/Library/VariablePolicyHelperLib.h >> | 164 ++++ >> MdeModulePkg/Include/Library/VariablePolicyLib.h >> | 207 +++++ >> MdeModulePkg/Include/Protocol/VariablePolicy.h >> | 157 ++++ >> MdeModulePkg/Library/VarCheckPolicyLib/VarCheckPolicyLib.inf >> | 42 + >> MdeModulePkg/Library/VarCheckPolicyLib/VarCheckPolicyLib.uni >> | 12 + >> MdeModulePkg/Library/VariablePolicyHelperLib/VariablePolicyHelperLib.inf >> | 35 + >> MdeModulePkg/Library/VariablePolicyHelperLib/VariablePolicyHelperLib.uni >> | 12 + >> MdeModulePkg/Library/VariablePolicyLib/ReadMe.md >> | 406 ++++++++++ >> MdeModulePkg/Library/VariablePolicyLib/VariablePolicyLib.inf >> | 48 ++ >> MdeModulePkg/Library/VariablePolicyLib/VariablePolicyLib.uni >> | 12 + >> MdeModulePkg/Library/VariablePolicyLib/VariablePolicyLibRuntimeDxe.inf >> | 51 ++ >> MdeModulePkg/MdeModulePkg.ci.yaml >> | 4 +- >> MdeModulePkg/MdeModulePkg.dec >> | 26 +- >> MdeModulePkg/MdeModulePkg.dsc >> | 9 + >> MdeModulePkg/MdeModulePkg.uni >> | 7 + >> MdeModulePkg/Universal/Variable/RuntimeDxe/VariableRuntimeDxe.inf >> | 5 + >> MdeModulePkg/Universal/Variable/RuntimeDxe/VariableSmm.inf >> | 4 + >> MdeModulePkg/Universal/Variable/RuntimeDxe/VariableSmmRuntimeDxe.inf >> | 11 + >> MdeModulePkg/Universal/Variable/RuntimeDxe/VariableStandaloneMm.inf >> | 4 + >> OvmfPkg/OvmfPkgIa32.dsc >> | 5 + >> OvmfPkg/OvmfPkgIa32X64.dsc >> | 5 + >> OvmfPkg/OvmfPkgX64.dsc >> | 5 + >> OvmfPkg/OvmfXen.dsc >> | 4 + >> SecurityPkg/Library/AuthVariableLib/AuthVariableLib.inf >> | 2 + >> UefiPayloadPkg/UefiPayloadPkgIa32.dsc >> | 4 + >> UefiPayloadPkg/UefiPayloadPkgIa32X64.dsc >> | 4 + >> 43 files changed, 3845 insertions(+), 80 deletions(-) >> create mode 100644 >> MdeModulePkg/Library/VarCheckPolicyLib/VarCheckPolicyLib.c >> create mode 100644 >> MdeModulePkg/Library/VariablePolicyHelperLib/VariablePolicyHelperLib.c >> create mode 100644 >> MdeModulePkg/Library/VariablePolicyLib/VariablePolicyExtraInitNull.c >> create mode 100644 >> MdeModulePkg/Library/VariablePolicyLib/VariablePolicyExtraInitRuntimeDxe.c >> create mode 100644 >> MdeModulePkg/Library/VariablePolicyLib/VariablePolicyLib.c >> create mode 100644 >> MdeModulePkg/Universal/Variable/RuntimeDxe/VariableLockRequestToLock.c >> create mode 100644 >> MdeModulePkg/Universal/Variable/RuntimeDxe/VariablePolicySmmDxe.c >> create mode 100644 MdeModulePkg/Include/Guid/VarCheckPolicyMmi.h >> create mode 100644 MdeModulePkg/Include/Library/VariablePolicyHelperLib.h >> create mode 100644 MdeModulePkg/Include/Library/VariablePolicyLib.h >> create mode 100644 MdeModulePkg/Include/Protocol/VariablePolicy.h >> create mode 100644 >> MdeModulePkg/Library/VarCheckPolicyLib/VarCheckPolicyLib.inf >> create mode 100644 >> MdeModulePkg/Library/VarCheckPolicyLib/VarCheckPolicyLib.uni >> create mode 100644 >> MdeModulePkg/Library/VariablePolicyHelperLib/VariablePolicyHelperLib.inf >> create mode 100644 >> MdeModulePkg/Library/VariablePolicyHelperLib/VariablePolicyHelperLib.uni >> create mode 100644 MdeModulePkg/Library/VariablePolicyLib/ReadMe.md >> create mode 100644 >> MdeModulePkg/Library/VariablePolicyLib/VariablePolicyLib.inf >> create mode 100644 >> MdeModulePkg/Library/VariablePolicyLib/VariablePolicyLib.uni >> create mode 100644 >> MdeModulePkg/Library/VariablePolicyLib/VariablePolicyLibRuntimeDxe.inf >> >> -- >> 2.28.0.windows.1 >> >> > > > > > > -=-=-=-=-=-=-=-=-=-=-=- Groups.io Links: You receive all messages sent to this group. View/Reply Online (#67321): https://edk2.groups.io/g/devel/message/67321 Mute This Topic: https://groups.io/mt/78130767/1787277 Group Owner: devel+owner@edk2.groups.io Unsubscribe: https://edk2.groups.io/g/devel/unsub [importer@patchew.org] -=-=-=-=-=-=-=-=-=-=-=-
Bret: V9 version change is mainly for MdeModule Variable driver. The change is good to me. Reviewed-by: Liming Gao <gaoliming@byosoft.com.cn> Besides, I find V9 doesn’t include the patch 0014-MdeModulePkg-Add-a-shell-based-functional-test-for-VariablePolicy. Because this patch doesn’t pass ECC, will you plan to add it later? Thanks Liming 发件人: bounce+27952+67296+4905953+8761045@groups.io <bounce+27952+67296+4905953+8761045@groups.io> 代表 Bret Barkelew 发送时间: 2020年11月12日 2:44 收件人: edk2-devel-groups-io <devel@edk2.groups.io> 主题: Re: [edk2-devel] [PATCH v9 00/13] Add the VariablePolicy feature To clarify: The current solution to the MorLock EndOfDxe issue is to expressly call LockVariablePolicy() in the same locations that mEndOfDxe is set (which was the mechanism that previously locked the VariableLock interface). This solution maintains parity with the old design, which is keeping with the ethos of minimal changes and similar functionality to VariableLock. It does not introduce any new dependencies. The only drawback to this approach is that it preserves the strict ordering that was also previously required by MorLock, which I will attempt to address in later updates. On Sun, Nov 8, 2020 at 10:45 PM Bret Barkelew <bret@corthon.com <mailto:bret@corthon.com> > wrote: The 14 patches in this series add the VariablePolicy feature to the core, deprecate Edk2VarLock (while adding a compatibility layer to reduce code churn), and integrate the VariablePolicy libraries and protocols into Variable Services. Since the integration requires multiple changes, including adding libraries, a protocol, an SMI communication handler, and VariableServices integration, the patches are broken up by individual library additions and then a final integration. Security-sensitive changes like bypassing Authenticated Variable enforcement are also broken out into individual patches so that attention can be called directly to them. Platform porting instructions are described in this wiki entry: https://github.com/tianocore/tianocore.github.io/wiki/VariablePolicy-Protocol---Enhanced-Method-for-Managing-Variables#platform-porting Discussion of the feature can be found in multiple places throughout the last year on the RFC channel, staging branches, and in devel. Most recently, this subject was discussed in this thread: https://edk2.groups.io/g/devel/message/53712 (the code branches shared in that discussion are now out of date, but the whitepapers and discussion are relevant). Cc: Jiewen Yao <jiewen.yao@intel.com <mailto:jiewen.yao@intel.com> > Cc: Dandan Bi <dandan.bi@intel.com <mailto:dandan.bi@intel.com> > Cc: Chao Zhang <chao.b.zhang@intel.com <mailto:chao.b.zhang@intel.com> > Cc: Jian J Wang <jian.j.wang@intel.com <mailto:jian.j.wang@intel.com> > Cc: Hao A Wu <hao.a.wu@intel.com <mailto:hao.a.wu@intel.com> > Cc: Liming Gao <liming.gao@intel.com <mailto:liming.gao@intel.com> > Cc: Jordan Justen <jordan.l.justen@intel.com <mailto:jordan.l.justen@intel.com> > Cc: Laszlo Ersek <lersek@redhat.com <mailto:lersek@redhat.com> > Cc: Ard Biesheuvel <ard.biesheuvel@arm.com <mailto:ard.biesheuvel@arm.com> > Cc: Andrew Fish <afish@apple.com <mailto:afish@apple.com> > Cc: Ray Ni <ray.ni@intel.com <mailto:ray.ni@intel.com> > Cc: Bret Barkelew <brbarkel@microsoft.com <mailto:brbarkel@microsoft.com> > Signed-off-by: Bret Barkelew <brbarkel@microsoft.com <mailto:brbarkel@microsoft.com> > v9 changes: * Rebase * Address the event ordering issues around MorLock at EndOfDxe * Drop problematic tests * Address ECC issues v8 changes: * Rebase * Small tweaks from final PRs * Drank a lot * Enrolled several members and a steward in CatFacts v7 changes: * Address comments from Dandan about security of the MM handler * Add readme * Fix bug around hex characters in BOOT####, etc * Add additional testing for hex characters * Add additional testing for authenticated variables v6 changes: * Fix an issue with uninitialized Status in InitVariablePolicyLib() and DeinitVariablePolicyLib() * Fix GCC building in shell-based functional test * Rebase on latest origin/master v5 changes: * Fix the CONST mismatch in VariablePolicy.h and VariablePolicySmmDxe.c * Fix EFIAPI mismatches in the functional unittest * Rebase on latest origin/master v4 changes: * Remove Optional PcdAllowVariablePolicyEnforcementDisable PCD from platforms * Rebase on master * Migrate to new MmCommunicate2 protocol * Fix an oversight in the default return value for InitMmCommonCommBuffer * Fix in VariablePolicyLib to allow ExtraInitRuntimeDxe to consume variables V3 changes: * Address all non-unittest issues with ECC * Make additional style changes * Include section name in hunk headers in "ini-style" files * Remove requirement for the EdkiiPiSmmCommunicationsRegionTable driver (now allocates its own buffer) * Change names from VARIABLE_POLICY_PROTOCOL and gVariablePolicyProtocolGuid to EDKII_VARIABLE_POLICY_PROTOCOL and gEdkiiVariablePolicyProtocolGuid * Fix GCC warning about initializing externs * Add UNI strings for new PCD * Add patches for ArmVirtPkg, OvmfXen, and UefiPayloadPkg * Reorder patches according to Liming's feedback about adding to platforms before changing variable driver V2 changes: * Fixed implementation for RuntimeDxe * Add PCD to block DisableVariablePolicy * Fix the DumpVariablePolicy pagination in SMM Bret Barkelew (13): MdeModulePkg: Define the VariablePolicy protocol interface MdeModulePkg: Define the VariablePolicyLib MdeModulePkg: Define the VariablePolicyHelperLib MdeModulePkg: Define the VarCheckPolicyLib and SMM interface OvmfPkg: Add VariablePolicy engine to OvmfPkg platform EmulatorPkg: Add VariablePolicy engine to EmulatorPkg platform ArmVirtPkg: Add VariablePolicy engine to ArmVirtPkg platform UefiPayloadPkg: Add VariablePolicy engine to UefiPayloadPkg platform MdeModulePkg: Connect VariablePolicy business logic to VariableServices MdeModulePkg: Allow VariablePolicy state to delete protected variables SecurityPkg: Allow VariablePolicy state to delete authenticated variables MdeModulePkg: Change TCG MOR variables to use VariablePolicy MdeModulePkg: Drop VarLock from RuntimeDxe variable driver MdeModulePkg/Library/VarCheckPolicyLib/VarCheckPolicyLib.c | 346 ++++++++ MdeModulePkg/Library/VariablePolicyHelperLib/VariablePolicyHelperLib.c | 396 ++++++++++ MdeModulePkg/Library/VariablePolicyLib/VariablePolicyExtraInitNull.c | 46 ++ MdeModulePkg/Library/VariablePolicyLib/VariablePolicyExtraInitRuntimeDxe.c | 85 ++ MdeModulePkg/Library/VariablePolicyLib/VariablePolicyLib.c | 830 ++++++++++++++++++++ MdeModulePkg/Universal/Variable/RuntimeDxe/TcgMorLockDxe.c | 52 +- MdeModulePkg/Universal/Variable/RuntimeDxe/TcgMorLockSmm.c | 60 +- MdeModulePkg/Universal/Variable/RuntimeDxe/VarCheck.c | 49 +- MdeModulePkg/Universal/Variable/RuntimeDxe/VariableDxe.c | 60 ++ MdeModulePkg/Universal/Variable/RuntimeDxe/VariableLockRequestToLock.c | 71 ++ MdeModulePkg/Universal/Variable/RuntimeDxe/VariablePolicySmmDxe.c | 573 ++++++++++++++ MdeModulePkg/Universal/Variable/RuntimeDxe/VariableSmm.c | 7 + MdeModulePkg/Universal/Variable/RuntimeDxe/VariableSmmRuntimeDxe.c | 14 + SecurityPkg/Library/AuthVariableLib/AuthService.c | 30 +- ArmVirtPkg/ArmVirt.dsc.inc | 4 + EmulatorPkg/EmulatorPkg.dsc | 3 + MdeModulePkg/Include/Guid/VarCheckPolicyMmi.h | 54 ++ MdeModulePkg/Include/Library/VariablePolicyHelperLib.h | 164 ++++ MdeModulePkg/Include/Library/VariablePolicyLib.h | 207 +++++ MdeModulePkg/Include/Protocol/VariablePolicy.h | 157 ++++ MdeModulePkg/Library/VarCheckPolicyLib/VarCheckPolicyLib.inf | 42 + MdeModulePkg/Library/VarCheckPolicyLib/VarCheckPolicyLib.uni | 12 + MdeModulePkg/Library/VariablePolicyHelperLib/VariablePolicyHelperLib.inf | 35 + MdeModulePkg/Library/VariablePolicyHelperLib/VariablePolicyHelperLib.uni | 12 + MdeModulePkg/Library/VariablePolicyLib/ReadMe.md | 406 ++++++++++ MdeModulePkg/Library/VariablePolicyLib/VariablePolicyLib.inf | 48 ++ MdeModulePkg/Library/VariablePolicyLib/VariablePolicyLib.uni | 12 + MdeModulePkg/Library/VariablePolicyLib/VariablePolicyLibRuntimeDxe.inf | 51 ++ MdeModulePkg/MdeModulePkg.ci.yaml | 4 +- MdeModulePkg/MdeModulePkg.dec | 26 +- MdeModulePkg/MdeModulePkg.dsc | 9 + MdeModulePkg/MdeModulePkg.uni | 7 + MdeModulePkg/Universal/Variable/RuntimeDxe/VariableRuntimeDxe.inf | 5 + MdeModulePkg/Universal/Variable/RuntimeDxe/VariableSmm.inf | 4 + MdeModulePkg/Universal/Variable/RuntimeDxe/VariableSmmRuntimeDxe.inf | 11 + MdeModulePkg/Universal/Variable/RuntimeDxe/VariableStandaloneMm.inf | 4 + OvmfPkg/OvmfPkgIa32.dsc | 5 + OvmfPkg/OvmfPkgIa32X64.dsc | 5 + OvmfPkg/OvmfPkgX64.dsc | 5 + OvmfPkg/OvmfXen.dsc | 4 + SecurityPkg/Library/AuthVariableLib/AuthVariableLib.inf | 2 + UefiPayloadPkg/UefiPayloadPkgIa32.dsc | 4 + UefiPayloadPkg/UefiPayloadPkgIa32X64.dsc | 4 + 43 files changed, 3845 insertions(+), 80 deletions(-) create mode 100644 MdeModulePkg/Library/VarCheckPolicyLib/VarCheckPolicyLib.c create mode 100644 MdeModulePkg/Library/VariablePolicyHelperLib/VariablePolicyHelperLib.c create mode 100644 MdeModulePkg/Library/VariablePolicyLib/VariablePolicyExtraInitNull.c create mode 100644 MdeModulePkg/Library/VariablePolicyLib/VariablePolicyExtraInitRuntimeDxe.c create mode 100644 MdeModulePkg/Library/VariablePolicyLib/VariablePolicyLib.c create mode 100644 MdeModulePkg/Universal/Variable/RuntimeDxe/VariableLockRequestToLock.c create mode 100644 MdeModulePkg/Universal/Variable/RuntimeDxe/VariablePolicySmmDxe.c create mode 100644 MdeModulePkg/Include/Guid/VarCheckPolicyMmi.h create mode 100644 MdeModulePkg/Include/Library/VariablePolicyHelperLib.h create mode 100644 MdeModulePkg/Include/Library/VariablePolicyLib.h create mode 100644 MdeModulePkg/Include/Protocol/VariablePolicy.h create mode 100644 MdeModulePkg/Library/VarCheckPolicyLib/VarCheckPolicyLib.inf create mode 100644 MdeModulePkg/Library/VarCheckPolicyLib/VarCheckPolicyLib.uni create mode 100644 MdeModulePkg/Library/VariablePolicyHelperLib/VariablePolicyHelperLib.inf create mode 100644 MdeModulePkg/Library/VariablePolicyHelperLib/VariablePolicyHelperLib.uni create mode 100644 MdeModulePkg/Library/VariablePolicyLib/ReadMe.md create mode 100644 MdeModulePkg/Library/VariablePolicyLib/VariablePolicyLib.inf create mode 100644 MdeModulePkg/Library/VariablePolicyLib/VariablePolicyLib.uni create mode 100644 MdeModulePkg/Library/VariablePolicyLib/VariablePolicyLibRuntimeDxe.inf -- 2.28.0.windows.1 -=-=-=-=-=-=-=-=-=-=-=- Groups.io Links: You receive all messages sent to this group. View/Reply Online (#67390): https://edk2.groups.io/g/devel/message/67390 Mute This Topic: https://groups.io/mt/78207088/1787277 Group Owner: devel+owner@edk2.groups.io Unsubscribe: https://edk2.groups.io/g/devel/unsub [importer@patchew.org] -=-=-=-=-=-=-=-=-=-=-=-
Yes, I'm working on a more sustainable solution for the test cases and have opened this bug to track it. 3073 – Provide test cases/apps for VarPol (tianocore.org) <https://bugzilla.tianocore.org/show_bug.cgi?id=3073> I just didn't want that to hold up the rest of the code that's already been signed off on. On Thu, Nov 12, 2020 at 6:25 AM gaoliming <gaoliming@byosoft.com.cn> wrote: > Bret: > > V9 version change is mainly for MdeModule Variable driver. The change is > good to me. Reviewed-by: Liming Gao <gaoliming@byosoft.com.cn> > > > > Besides, I find V9 doesn’t include the patch > 0014-MdeModulePkg-Add-a-shell-based-functional-test-for-VariablePolicy. > Because this patch doesn’t pass ECC, will you plan to add it later? > > > > Thanks > > Liming > > *发件人:* bounce+27952+67296+4905953+8761045@groups.io < > bounce+27952+67296+4905953+8761045@groups.io> *代表 *Bret Barkelew > *发送时间:* 2020年11月12日 2:44 > *收件人:* edk2-devel-groups-io <devel@edk2.groups.io> > *主题:* Re: [edk2-devel] [PATCH v9 00/13] Add the VariablePolicy feature > > > > To clarify: > > > > The current solution to the MorLock EndOfDxe issue is to expressly call > LockVariablePolicy() in the same locations that mEndOfDxe is set (which was > the mechanism that previously locked the VariableLock interface). This > solution maintains parity with the old design, which is keeping with the > ethos of minimal changes and similar functionality to VariableLock. It does > not introduce any new dependencies. > > > > The only drawback to this approach is that it preserves the strict > ordering that was also previously required by MorLock, which I will attempt > to address in later updates. > > > > On Sun, Nov 8, 2020 at 10:45 PM Bret Barkelew <bret@corthon.com> wrote: > > The 14 patches in this series add the VariablePolicy feature to the core, > deprecate Edk2VarLock (while adding a compatibility layer to reduce code > churn), and integrate the VariablePolicy libraries and protocols into > Variable Services. > > Since the integration requires multiple changes, including adding > libraries, > a protocol, an SMI communication handler, and VariableServices integration, > the patches are broken up by individual library additions and then a final > integration. Security-sensitive changes like bypassing Authenticated > Variable enforcement are also broken out into individual patches so that > attention can be called directly to them. > > Platform porting instructions are described in this wiki entry: > > https://github.com/tianocore/tianocore.github.io/wiki/VariablePolicy-Protocol---Enhanced-Method-for-Managing-Variables#platform-porting > > Discussion of the feature can be found in multiple places throughout > the last year on the RFC channel, staging branches, and in devel. > > Most recently, this subject was discussed in this thread: > https://edk2.groups.io/g/devel/message/53712 > (the code branches shared in that discussion are now out of date, but the > whitepapers and discussion are relevant). > > Cc: Jiewen Yao <jiewen.yao@intel.com> > Cc: Dandan Bi <dandan.bi@intel.com> > Cc: Chao Zhang <chao.b.zhang@intel.com> > Cc: Jian J Wang <jian.j.wang@intel.com> > Cc: Hao A Wu <hao.a.wu@intel.com> > Cc: Liming Gao <liming.gao@intel.com> > Cc: Jordan Justen <jordan.l.justen@intel.com> > Cc: Laszlo Ersek <lersek@redhat.com> > Cc: Ard Biesheuvel <ard.biesheuvel@arm.com> > Cc: Andrew Fish <afish@apple.com> > Cc: Ray Ni <ray.ni@intel.com> > Cc: Bret Barkelew <brbarkel@microsoft.com> > Signed-off-by: Bret Barkelew <brbarkel@microsoft.com> > > v9 changes: > * Rebase > * Address the event ordering issues around MorLock at EndOfDxe > * Drop problematic tests > * Address ECC issues > > v8 changes: > * Rebase > * Small tweaks from final PRs > * Drank a lot > * Enrolled several members and a steward in CatFacts > > v7 changes: > * Address comments from Dandan about security of the MM handler > * Add readme > * Fix bug around hex characters in BOOT####, etc > * Add additional testing for hex characters > * Add additional testing for authenticated variables > > v6 changes: > * Fix an issue with uninitialized Status in InitVariablePolicyLib() and > DeinitVariablePolicyLib() > * Fix GCC building in shell-based functional test > * Rebase on latest origin/master > > v5 changes: > * Fix the CONST mismatch in VariablePolicy.h and VariablePolicySmmDxe.c > * Fix EFIAPI mismatches in the functional unittest > * Rebase on latest origin/master > > v4 changes: > * Remove Optional PcdAllowVariablePolicyEnforcementDisable PCD from > platforms > * Rebase on master > * Migrate to new MmCommunicate2 protocol > * Fix an oversight in the default return value for InitMmCommonCommBuffer > * Fix in VariablePolicyLib to allow ExtraInitRuntimeDxe to consume > variables > > V3 changes: > * Address all non-unittest issues with ECC > * Make additional style changes > * Include section name in hunk headers in "ini-style" files > * Remove requirement for the EdkiiPiSmmCommunicationsRegionTable driver > (now allocates its own buffer) > * Change names from VARIABLE_POLICY_PROTOCOL and > gVariablePolicyProtocolGuid > to EDKII_VARIABLE_POLICY_PROTOCOL and gEdkiiVariablePolicyProtocolGuid > * Fix GCC warning about initializing externs > * Add UNI strings for new PCD > * Add patches for ArmVirtPkg, OvmfXen, and UefiPayloadPkg > * Reorder patches according to Liming's feedback about adding to platforms > before changing variable driver > > V2 changes: > * Fixed implementation for RuntimeDxe > * Add PCD to block DisableVariablePolicy > * Fix the DumpVariablePolicy pagination in SMM > > Bret Barkelew (13): > MdeModulePkg: Define the VariablePolicy protocol interface > MdeModulePkg: Define the VariablePolicyLib > MdeModulePkg: Define the VariablePolicyHelperLib > MdeModulePkg: Define the VarCheckPolicyLib and SMM interface > OvmfPkg: Add VariablePolicy engine to OvmfPkg platform > EmulatorPkg: Add VariablePolicy engine to EmulatorPkg platform > ArmVirtPkg: Add VariablePolicy engine to ArmVirtPkg platform > UefiPayloadPkg: Add VariablePolicy engine to UefiPayloadPkg platform > MdeModulePkg: Connect VariablePolicy business logic to > VariableServices > MdeModulePkg: Allow VariablePolicy state to delete protected variables > SecurityPkg: Allow VariablePolicy state to delete authenticated > variables > MdeModulePkg: Change TCG MOR variables to use VariablePolicy > MdeModulePkg: Drop VarLock from RuntimeDxe variable driver > > MdeModulePkg/Library/VarCheckPolicyLib/VarCheckPolicyLib.c > | 346 ++++++++ > MdeModulePkg/Library/VariablePolicyHelperLib/VariablePolicyHelperLib.c > | 396 ++++++++++ > MdeModulePkg/Library/VariablePolicyLib/VariablePolicyExtraInitNull.c > | 46 ++ > MdeModulePkg/Library/VariablePolicyLib/VariablePolicyExtraInitRuntimeDxe.c > | 85 ++ > MdeModulePkg/Library/VariablePolicyLib/VariablePolicyLib.c > | 830 ++++++++++++++++++++ > MdeModulePkg/Universal/Variable/RuntimeDxe/TcgMorLockDxe.c > | 52 +- > MdeModulePkg/Universal/Variable/RuntimeDxe/TcgMorLockSmm.c > | 60 +- > MdeModulePkg/Universal/Variable/RuntimeDxe/VarCheck.c > | 49 +- > MdeModulePkg/Universal/Variable/RuntimeDxe/VariableDxe.c > | 60 ++ > MdeModulePkg/Universal/Variable/RuntimeDxe/VariableLockRequestToLock.c > | 71 ++ > MdeModulePkg/Universal/Variable/RuntimeDxe/VariablePolicySmmDxe.c > | 573 ++++++++++++++ > MdeModulePkg/Universal/Variable/RuntimeDxe/VariableSmm.c > | 7 + > MdeModulePkg/Universal/Variable/RuntimeDxe/VariableSmmRuntimeDxe.c > | 14 + > SecurityPkg/Library/AuthVariableLib/AuthService.c > | 30 +- > ArmVirtPkg/ArmVirt.dsc.inc > | 4 + > EmulatorPkg/EmulatorPkg.dsc > | 3 + > MdeModulePkg/Include/Guid/VarCheckPolicyMmi.h > | 54 ++ > MdeModulePkg/Include/Library/VariablePolicyHelperLib.h > | 164 ++++ > MdeModulePkg/Include/Library/VariablePolicyLib.h > | 207 +++++ > MdeModulePkg/Include/Protocol/VariablePolicy.h > | 157 ++++ > MdeModulePkg/Library/VarCheckPolicyLib/VarCheckPolicyLib.inf > | 42 + > MdeModulePkg/Library/VarCheckPolicyLib/VarCheckPolicyLib.uni > | 12 + > MdeModulePkg/Library/VariablePolicyHelperLib/VariablePolicyHelperLib.inf > | 35 + > MdeModulePkg/Library/VariablePolicyHelperLib/VariablePolicyHelperLib.uni > | 12 + > MdeModulePkg/Library/VariablePolicyLib/ReadMe.md > | 406 ++++++++++ > MdeModulePkg/Library/VariablePolicyLib/VariablePolicyLib.inf > | 48 ++ > MdeModulePkg/Library/VariablePolicyLib/VariablePolicyLib.uni > | 12 + > MdeModulePkg/Library/VariablePolicyLib/VariablePolicyLibRuntimeDxe.inf > | 51 ++ > MdeModulePkg/MdeModulePkg.ci.yaml > | 4 +- > MdeModulePkg/MdeModulePkg.dec > | 26 +- > MdeModulePkg/MdeModulePkg.dsc > | 9 + > MdeModulePkg/MdeModulePkg.uni > | 7 + > MdeModulePkg/Universal/Variable/RuntimeDxe/VariableRuntimeDxe.inf > | 5 + > MdeModulePkg/Universal/Variable/RuntimeDxe/VariableSmm.inf > | 4 + > MdeModulePkg/Universal/Variable/RuntimeDxe/VariableSmmRuntimeDxe.inf > | 11 + > MdeModulePkg/Universal/Variable/RuntimeDxe/VariableStandaloneMm.inf > | 4 + > OvmfPkg/OvmfPkgIa32.dsc > | 5 + > OvmfPkg/OvmfPkgIa32X64.dsc > | 5 + > OvmfPkg/OvmfPkgX64.dsc > | 5 + > OvmfPkg/OvmfXen.dsc > | 4 + > SecurityPkg/Library/AuthVariableLib/AuthVariableLib.inf > | 2 + > UefiPayloadPkg/UefiPayloadPkgIa32.dsc > | 4 + > UefiPayloadPkg/UefiPayloadPkgIa32X64.dsc > | 4 + > 43 files changed, 3845 insertions(+), 80 deletions(-) > create mode 100644 > MdeModulePkg/Library/VarCheckPolicyLib/VarCheckPolicyLib.c > create mode 100644 > MdeModulePkg/Library/VariablePolicyHelperLib/VariablePolicyHelperLib.c > create mode 100644 > MdeModulePkg/Library/VariablePolicyLib/VariablePolicyExtraInitNull.c > create mode 100644 > MdeModulePkg/Library/VariablePolicyLib/VariablePolicyExtraInitRuntimeDxe.c > create mode 100644 > MdeModulePkg/Library/VariablePolicyLib/VariablePolicyLib.c > create mode 100644 > MdeModulePkg/Universal/Variable/RuntimeDxe/VariableLockRequestToLock.c > create mode 100644 > MdeModulePkg/Universal/Variable/RuntimeDxe/VariablePolicySmmDxe.c > create mode 100644 MdeModulePkg/Include/Guid/VarCheckPolicyMmi.h > create mode 100644 MdeModulePkg/Include/Library/VariablePolicyHelperLib.h > create mode 100644 MdeModulePkg/Include/Library/VariablePolicyLib.h > create mode 100644 MdeModulePkg/Include/Protocol/VariablePolicy.h > create mode 100644 > MdeModulePkg/Library/VarCheckPolicyLib/VarCheckPolicyLib.inf > create mode 100644 > MdeModulePkg/Library/VarCheckPolicyLib/VarCheckPolicyLib.uni > create mode 100644 > MdeModulePkg/Library/VariablePolicyHelperLib/VariablePolicyHelperLib.inf > create mode 100644 > MdeModulePkg/Library/VariablePolicyHelperLib/VariablePolicyHelperLib.uni > create mode 100644 MdeModulePkg/Library/VariablePolicyLib/ReadMe.md > create mode 100644 > MdeModulePkg/Library/VariablePolicyLib/VariablePolicyLib.inf > create mode 100644 > MdeModulePkg/Library/VariablePolicyLib/VariablePolicyLib.uni > create mode 100644 > MdeModulePkg/Library/VariablePolicyLib/VariablePolicyLibRuntimeDxe.inf > > -- > 2.28.0.windows.1 > > > -=-=-=-=-=-=-=-=-=-=-=- Groups.io Links: You receive all messages sent to this group. View/Reply Online (#67397): https://edk2.groups.io/g/devel/message/67397 Mute This Topic: https://groups.io/mt/78210535/1787277 Group Owner: devel+owner@edk2.groups.io Unsubscribe: https://edk2.groups.io/g/devel/unsub [importer@patchew.org] -=-=-=-=-=-=-=-=-=-=-=-
Looks like I should have everything I need on this patch set. Can I assume that someone will stage it to make it into 2011-stable? On Thu, Nov 12, 2020 at 8:45 AM Bret Barkelew <bret@corthon.com> wrote: > Yes, I'm working on a more sustainable solution for the test cases and > have opened this bug to track it. > 3073 – Provide test cases/apps for VarPol (tianocore.org) > <https://bugzilla.tianocore.org/show_bug.cgi?id=3073> > > I just didn't want that to hold up the rest of the code that's already > been signed off on. > > On Thu, Nov 12, 2020 at 6:25 AM gaoliming <gaoliming@byosoft.com.cn> > wrote: > >> Bret: >> >> V9 version change is mainly for MdeModule Variable driver. The change is >> good to me. Reviewed-by: Liming Gao <gaoliming@byosoft.com.cn> >> >> >> >> Besides, I find V9 doesn’t include the patch >> 0014-MdeModulePkg-Add-a-shell-based-functional-test-for-VariablePolicy. >> Because this patch doesn’t pass ECC, will you plan to add it later? >> >> >> >> Thanks >> >> Liming >> >> *发件人:* bounce+27952+67296+4905953+8761045@groups.io < >> bounce+27952+67296+4905953+8761045@groups.io> *代表 *Bret Barkelew >> *发送时间:* 2020年11月12日 2:44 >> *收件人:* edk2-devel-groups-io <devel@edk2.groups.io> >> *主题:* Re: [edk2-devel] [PATCH v9 00/13] Add the VariablePolicy feature >> >> >> >> To clarify: >> >> >> >> The current solution to the MorLock EndOfDxe issue is to expressly call >> LockVariablePolicy() in the same locations that mEndOfDxe is set (which was >> the mechanism that previously locked the VariableLock interface). This >> solution maintains parity with the old design, which is keeping with the >> ethos of minimal changes and similar functionality to VariableLock. It does >> not introduce any new dependencies. >> >> >> >> The only drawback to this approach is that it preserves the strict >> ordering that was also previously required by MorLock, which I will attempt >> to address in later updates. >> >> >> >> On Sun, Nov 8, 2020 at 10:45 PM Bret Barkelew <bret@corthon.com> wrote: >> >> The 14 patches in this series add the VariablePolicy feature to the core, >> deprecate Edk2VarLock (while adding a compatibility layer to reduce code >> churn), and integrate the VariablePolicy libraries and protocols into >> Variable Services. >> >> Since the integration requires multiple changes, including adding >> libraries, >> a protocol, an SMI communication handler, and VariableServices >> integration, >> the patches are broken up by individual library additions and then a final >> integration. Security-sensitive changes like bypassing Authenticated >> Variable enforcement are also broken out into individual patches so that >> attention can be called directly to them. >> >> Platform porting instructions are described in this wiki entry: >> >> https://github.com/tianocore/tianocore.github.io/wiki/VariablePolicy-Protocol---Enhanced-Method-for-Managing-Variables#platform-porting >> >> Discussion of the feature can be found in multiple places throughout >> the last year on the RFC channel, staging branches, and in devel. >> >> Most recently, this subject was discussed in this thread: >> https://edk2.groups.io/g/devel/message/53712 >> (the code branches shared in that discussion are now out of date, but the >> whitepapers and discussion are relevant). >> >> Cc: Jiewen Yao <jiewen.yao@intel.com> >> Cc: Dandan Bi <dandan.bi@intel.com> >> Cc: Chao Zhang <chao.b.zhang@intel.com> >> Cc: Jian J Wang <jian.j.wang@intel.com> >> Cc: Hao A Wu <hao.a.wu@intel.com> >> Cc: Liming Gao <liming.gao@intel.com> >> Cc: Jordan Justen <jordan.l.justen@intel.com> >> Cc: Laszlo Ersek <lersek@redhat.com> >> Cc: Ard Biesheuvel <ard.biesheuvel@arm.com> >> Cc: Andrew Fish <afish@apple.com> >> Cc: Ray Ni <ray.ni@intel.com> >> Cc: Bret Barkelew <brbarkel@microsoft.com> >> Signed-off-by: Bret Barkelew <brbarkel@microsoft.com> >> >> v9 changes: >> * Rebase >> * Address the event ordering issues around MorLock at EndOfDxe >> * Drop problematic tests >> * Address ECC issues >> >> v8 changes: >> * Rebase >> * Small tweaks from final PRs >> * Drank a lot >> * Enrolled several members and a steward in CatFacts >> >> v7 changes: >> * Address comments from Dandan about security of the MM handler >> * Add readme >> * Fix bug around hex characters in BOOT####, etc >> * Add additional testing for hex characters >> * Add additional testing for authenticated variables >> >> v6 changes: >> * Fix an issue with uninitialized Status in InitVariablePolicyLib() and >> DeinitVariablePolicyLib() >> * Fix GCC building in shell-based functional test >> * Rebase on latest origin/master >> >> v5 changes: >> * Fix the CONST mismatch in VariablePolicy.h and VariablePolicySmmDxe.c >> * Fix EFIAPI mismatches in the functional unittest >> * Rebase on latest origin/master >> >> v4 changes: >> * Remove Optional PcdAllowVariablePolicyEnforcementDisable PCD from >> platforms >> * Rebase on master >> * Migrate to new MmCommunicate2 protocol >> * Fix an oversight in the default return value for InitMmCommonCommBuffer >> * Fix in VariablePolicyLib to allow ExtraInitRuntimeDxe to consume >> variables >> >> V3 changes: >> * Address all non-unittest issues with ECC >> * Make additional style changes >> * Include section name in hunk headers in "ini-style" files >> * Remove requirement for the EdkiiPiSmmCommunicationsRegionTable driver >> (now allocates its own buffer) >> * Change names from VARIABLE_POLICY_PROTOCOL and >> gVariablePolicyProtocolGuid >> to EDKII_VARIABLE_POLICY_PROTOCOL and gEdkiiVariablePolicyProtocolGuid >> * Fix GCC warning about initializing externs >> * Add UNI strings for new PCD >> * Add patches for ArmVirtPkg, OvmfXen, and UefiPayloadPkg >> * Reorder patches according to Liming's feedback about adding to platforms >> before changing variable driver >> >> V2 changes: >> * Fixed implementation for RuntimeDxe >> * Add PCD to block DisableVariablePolicy >> * Fix the DumpVariablePolicy pagination in SMM >> >> Bret Barkelew (13): >> MdeModulePkg: Define the VariablePolicy protocol interface >> MdeModulePkg: Define the VariablePolicyLib >> MdeModulePkg: Define the VariablePolicyHelperLib >> MdeModulePkg: Define the VarCheckPolicyLib and SMM interface >> OvmfPkg: Add VariablePolicy engine to OvmfPkg platform >> EmulatorPkg: Add VariablePolicy engine to EmulatorPkg platform >> ArmVirtPkg: Add VariablePolicy engine to ArmVirtPkg platform >> UefiPayloadPkg: Add VariablePolicy engine to UefiPayloadPkg platform >> MdeModulePkg: Connect VariablePolicy business logic to >> VariableServices >> MdeModulePkg: Allow VariablePolicy state to delete protected variables >> SecurityPkg: Allow VariablePolicy state to delete authenticated >> variables >> MdeModulePkg: Change TCG MOR variables to use VariablePolicy >> MdeModulePkg: Drop VarLock from RuntimeDxe variable driver >> >> MdeModulePkg/Library/VarCheckPolicyLib/VarCheckPolicyLib.c >> | 346 ++++++++ >> MdeModulePkg/Library/VariablePolicyHelperLib/VariablePolicyHelperLib.c >> | 396 ++++++++++ >> MdeModulePkg/Library/VariablePolicyLib/VariablePolicyExtraInitNull.c >> | 46 ++ >> MdeModulePkg/Library/VariablePolicyLib/VariablePolicyExtraInitRuntimeDxe.c >> | 85 ++ >> MdeModulePkg/Library/VariablePolicyLib/VariablePolicyLib.c >> | 830 ++++++++++++++++++++ >> MdeModulePkg/Universal/Variable/RuntimeDxe/TcgMorLockDxe.c >> | 52 +- >> MdeModulePkg/Universal/Variable/RuntimeDxe/TcgMorLockSmm.c >> | 60 +- >> MdeModulePkg/Universal/Variable/RuntimeDxe/VarCheck.c >> | 49 +- >> MdeModulePkg/Universal/Variable/RuntimeDxe/VariableDxe.c >> | 60 ++ >> MdeModulePkg/Universal/Variable/RuntimeDxe/VariableLockRequestToLock.c >> | 71 ++ >> MdeModulePkg/Universal/Variable/RuntimeDxe/VariablePolicySmmDxe.c >> | 573 ++++++++++++++ >> MdeModulePkg/Universal/Variable/RuntimeDxe/VariableSmm.c >> | 7 + >> MdeModulePkg/Universal/Variable/RuntimeDxe/VariableSmmRuntimeDxe.c >> | 14 + >> SecurityPkg/Library/AuthVariableLib/AuthService.c >> | 30 +- >> ArmVirtPkg/ArmVirt.dsc.inc >> | 4 + >> EmulatorPkg/EmulatorPkg.dsc >> | 3 + >> MdeModulePkg/Include/Guid/VarCheckPolicyMmi.h >> | 54 ++ >> MdeModulePkg/Include/Library/VariablePolicyHelperLib.h >> | 164 ++++ >> MdeModulePkg/Include/Library/VariablePolicyLib.h >> | 207 +++++ >> MdeModulePkg/Include/Protocol/VariablePolicy.h >> | 157 ++++ >> MdeModulePkg/Library/VarCheckPolicyLib/VarCheckPolicyLib.inf >> | 42 + >> MdeModulePkg/Library/VarCheckPolicyLib/VarCheckPolicyLib.uni >> | 12 + >> MdeModulePkg/Library/VariablePolicyHelperLib/VariablePolicyHelperLib.inf >> | 35 + >> MdeModulePkg/Library/VariablePolicyHelperLib/VariablePolicyHelperLib.uni >> | 12 + >> MdeModulePkg/Library/VariablePolicyLib/ReadMe.md >> | 406 ++++++++++ >> MdeModulePkg/Library/VariablePolicyLib/VariablePolicyLib.inf >> | 48 ++ >> MdeModulePkg/Library/VariablePolicyLib/VariablePolicyLib.uni >> | 12 + >> MdeModulePkg/Library/VariablePolicyLib/VariablePolicyLibRuntimeDxe.inf >> | 51 ++ >> MdeModulePkg/MdeModulePkg.ci.yaml >> | 4 +- >> MdeModulePkg/MdeModulePkg.dec >> | 26 +- >> MdeModulePkg/MdeModulePkg.dsc >> | 9 + >> MdeModulePkg/MdeModulePkg.uni >> | 7 + >> MdeModulePkg/Universal/Variable/RuntimeDxe/VariableRuntimeDxe.inf >> | 5 + >> MdeModulePkg/Universal/Variable/RuntimeDxe/VariableSmm.inf >> | 4 + >> MdeModulePkg/Universal/Variable/RuntimeDxe/VariableSmmRuntimeDxe.inf >> | 11 + >> MdeModulePkg/Universal/Variable/RuntimeDxe/VariableStandaloneMm.inf >> | 4 + >> OvmfPkg/OvmfPkgIa32.dsc >> | 5 + >> OvmfPkg/OvmfPkgIa32X64.dsc >> | 5 + >> OvmfPkg/OvmfPkgX64.dsc >> | 5 + >> OvmfPkg/OvmfXen.dsc >> | 4 + >> SecurityPkg/Library/AuthVariableLib/AuthVariableLib.inf >> | 2 + >> UefiPayloadPkg/UefiPayloadPkgIa32.dsc >> | 4 + >> UefiPayloadPkg/UefiPayloadPkgIa32X64.dsc >> | 4 + >> 43 files changed, 3845 insertions(+), 80 deletions(-) >> create mode 100644 >> MdeModulePkg/Library/VarCheckPolicyLib/VarCheckPolicyLib.c >> create mode 100644 >> MdeModulePkg/Library/VariablePolicyHelperLib/VariablePolicyHelperLib.c >> create mode 100644 >> MdeModulePkg/Library/VariablePolicyLib/VariablePolicyExtraInitNull.c >> create mode 100644 >> MdeModulePkg/Library/VariablePolicyLib/VariablePolicyExtraInitRuntimeDxe.c >> create mode 100644 >> MdeModulePkg/Library/VariablePolicyLib/VariablePolicyLib.c >> create mode 100644 >> MdeModulePkg/Universal/Variable/RuntimeDxe/VariableLockRequestToLock.c >> create mode 100644 >> MdeModulePkg/Universal/Variable/RuntimeDxe/VariablePolicySmmDxe.c >> create mode 100644 MdeModulePkg/Include/Guid/VarCheckPolicyMmi.h >> create mode 100644 MdeModulePkg/Include/Library/VariablePolicyHelperLib.h >> create mode 100644 MdeModulePkg/Include/Library/VariablePolicyLib.h >> create mode 100644 MdeModulePkg/Include/Protocol/VariablePolicy.h >> create mode 100644 >> MdeModulePkg/Library/VarCheckPolicyLib/VarCheckPolicyLib.inf >> create mode 100644 >> MdeModulePkg/Library/VarCheckPolicyLib/VarCheckPolicyLib.uni >> create mode 100644 >> MdeModulePkg/Library/VariablePolicyHelperLib/VariablePolicyHelperLib.inf >> create mode 100644 >> MdeModulePkg/Library/VariablePolicyHelperLib/VariablePolicyHelperLib.uni >> create mode 100644 MdeModulePkg/Library/VariablePolicyLib/ReadMe.md >> create mode 100644 >> MdeModulePkg/Library/VariablePolicyLib/VariablePolicyLib.inf >> create mode 100644 >> MdeModulePkg/Library/VariablePolicyLib/VariablePolicyLib.uni >> create mode 100644 >> MdeModulePkg/Library/VariablePolicyLib/VariablePolicyLibRuntimeDxe.inf >> >> -- >> 2.28.0.windows.1 >> >> >> > -=-=-=-=-=-=-=-=-=-=-=- Groups.io Links: You receive all messages sent to this group. View/Reply Online (#67412): https://edk2.groups.io/g/devel/message/67412 Mute This Topic: https://groups.io/mt/78210535/1787277 Group Owner: devel+owner@edk2.groups.io Unsubscribe: https://edk2.groups.io/g/devel/unsub [importer@patchew.org] -=-=-=-=-=-=-=-=-=-=-=-
Bret: Yes. I think this patch set pass code review. If no objection, I will merge it next Monday. Thanks Liming 发件人: Bret Barkelew <bret@corthon.com> 发送时间: 2020年11月13日 9:21 收件人: gaoliming <gaoliming@byosoft.com.cn> 抄送: edk2-devel-groups-io <devel@edk2.groups.io>; Laszlo Ersek <lersek@redhat.com>; Michael D Kinney <michael.d.kinney@intel.com> 主题: Re: [edk2-devel] [PATCH v9 00/13] Add the VariablePolicy feature Looks like I should have everything I need on this patch set. Can I assume that someone will stage it to make it into 2011-stable? On Thu, Nov 12, 2020 at 8:45 AM Bret Barkelew <bret@corthon.com <mailto:bret@corthon.com> > wrote: Yes, I'm working on a more sustainable solution for the test cases and have opened this bug to track it. 3073 – Provide test cases/apps for VarPol (tianocore.org) <https://bugzilla.tianocore.org/show_bug.cgi?id=3073> I just didn't want that to hold up the rest of the code that's already been signed off on. On Thu, Nov 12, 2020 at 6:25 AM gaoliming <gaoliming@byosoft.com.cn <mailto:gaoliming@byosoft.com.cn> > wrote: Bret: V9 version change is mainly for MdeModule Variable driver. The change is good to me. Reviewed-by: Liming Gao <gaoliming@byosoft.com.cn <mailto:gaoliming@byosoft.com.cn> > Besides, I find V9 doesn’t include the patch 0014-MdeModulePkg-Add-a-shell-based-functional-test-for-VariablePolicy. Because this patch doesn’t pass ECC, will you plan to add it later? Thanks Liming 发件人: bounce+27952+67296+4905953+8761045@groups.io <mailto:bounce%2B27952%2B67296%2B4905953%2B8761045@groups.io> <bounce+27952+67296+4905953+8761045@groups.io <mailto:bounce%2B27952%2B67296%2B4905953%2B8761045@groups.io> > 代表 Bret Barkelew 发送时间: 2020年11月12日 2:44 收件人: edk2-devel-groups-io <devel@edk2.groups.io <mailto:devel@edk2.groups.io> > 主题: Re: [edk2-devel] [PATCH v9 00/13] Add the VariablePolicy feature To clarify: The current solution to the MorLock EndOfDxe issue is to expressly call LockVariablePolicy() in the same locations that mEndOfDxe is set (which was the mechanism that previously locked the VariableLock interface). This solution maintains parity with the old design, which is keeping with the ethos of minimal changes and similar functionality to VariableLock. It does not introduce any new dependencies. The only drawback to this approach is that it preserves the strict ordering that was also previously required by MorLock, which I will attempt to address in later updates. On Sun, Nov 8, 2020 at 10:45 PM Bret Barkelew <bret@corthon.com <mailto:bret@corthon.com> > wrote: The 14 patches in this series add the VariablePolicy feature to the core, deprecate Edk2VarLock (while adding a compatibility layer to reduce code churn), and integrate the VariablePolicy libraries and protocols into Variable Services. Since the integration requires multiple changes, including adding libraries, a protocol, an SMI communication handler, and VariableServices integration, the patches are broken up by individual library additions and then a final integration. Security-sensitive changes like bypassing Authenticated Variable enforcement are also broken out into individual patches so that attention can be called directly to them. Platform porting instructions are described in this wiki entry: https://github.com/tianocore/tianocore.github.io/wiki/VariablePolicy-Protocol---Enhanced-Method-for-Managing-Variables#platform-porting Discussion of the feature can be found in multiple places throughout the last year on the RFC channel, staging branches, and in devel. Most recently, this subject was discussed in this thread: https://edk2.groups.io/g/devel/message/53712 (the code branches shared in that discussion are now out of date, but the whitepapers and discussion are relevant). Cc: Jiewen Yao <jiewen.yao@intel.com <mailto:jiewen.yao@intel.com> > Cc: Dandan Bi <dandan.bi@intel.com <mailto:dandan.bi@intel.com> > Cc: Chao Zhang <chao.b.zhang@intel.com <mailto:chao.b.zhang@intel.com> > Cc: Jian J Wang <jian.j.wang@intel.com <mailto:jian.j.wang@intel.com> > Cc: Hao A Wu <hao.a.wu@intel.com <mailto:hao.a.wu@intel.com> > Cc: Liming Gao <liming.gao@intel.com <mailto:liming.gao@intel.com> > Cc: Jordan Justen <jordan.l.justen@intel.com <mailto:jordan.l.justen@intel.com> > Cc: Laszlo Ersek <lersek@redhat.com <mailto:lersek@redhat.com> > Cc: Ard Biesheuvel <ard.biesheuvel@arm.com <mailto:ard.biesheuvel@arm.com> > Cc: Andrew Fish <afish@apple.com <mailto:afish@apple.com> > Cc: Ray Ni <ray.ni@intel.com <mailto:ray.ni@intel.com> > Cc: Bret Barkelew <brbarkel@microsoft.com <mailto:brbarkel@microsoft.com> > Signed-off-by: Bret Barkelew <brbarkel@microsoft.com <mailto:brbarkel@microsoft.com> > v9 changes: * Rebase * Address the event ordering issues around MorLock at EndOfDxe * Drop problematic tests * Address ECC issues v8 changes: * Rebase * Small tweaks from final PRs * Drank a lot * Enrolled several members and a steward in CatFacts v7 changes: * Address comments from Dandan about security of the MM handler * Add readme * Fix bug around hex characters in BOOT####, etc * Add additional testing for hex characters * Add additional testing for authenticated variables v6 changes: * Fix an issue with uninitialized Status in InitVariablePolicyLib() and DeinitVariablePolicyLib() * Fix GCC building in shell-based functional test * Rebase on latest origin/master v5 changes: * Fix the CONST mismatch in VariablePolicy.h and VariablePolicySmmDxe.c * Fix EFIAPI mismatches in the functional unittest * Rebase on latest origin/master v4 changes: * Remove Optional PcdAllowVariablePolicyEnforcementDisable PCD from platforms * Rebase on master * Migrate to new MmCommunicate2 protocol * Fix an oversight in the default return value for InitMmCommonCommBuffer * Fix in VariablePolicyLib to allow ExtraInitRuntimeDxe to consume variables V3 changes: * Address all non-unittest issues with ECC * Make additional style changes * Include section name in hunk headers in "ini-style" files * Remove requirement for the EdkiiPiSmmCommunicationsRegionTable driver (now allocates its own buffer) * Change names from VARIABLE_POLICY_PROTOCOL and gVariablePolicyProtocolGuid to EDKII_VARIABLE_POLICY_PROTOCOL and gEdkiiVariablePolicyProtocolGuid * Fix GCC warning about initializing externs * Add UNI strings for new PCD * Add patches for ArmVirtPkg, OvmfXen, and UefiPayloadPkg * Reorder patches according to Liming's feedback about adding to platforms before changing variable driver V2 changes: * Fixed implementation for RuntimeDxe * Add PCD to block DisableVariablePolicy * Fix the DumpVariablePolicy pagination in SMM Bret Barkelew (13): MdeModulePkg: Define the VariablePolicy protocol interface MdeModulePkg: Define the VariablePolicyLib MdeModulePkg: Define the VariablePolicyHelperLib MdeModulePkg: Define the VarCheckPolicyLib and SMM interface OvmfPkg: Add VariablePolicy engine to OvmfPkg platform EmulatorPkg: Add VariablePolicy engine to EmulatorPkg platform ArmVirtPkg: Add VariablePolicy engine to ArmVirtPkg platform UefiPayloadPkg: Add VariablePolicy engine to UefiPayloadPkg platform MdeModulePkg: Connect VariablePolicy business logic to VariableServices MdeModulePkg: Allow VariablePolicy state to delete protected variables SecurityPkg: Allow VariablePolicy state to delete authenticated variables MdeModulePkg: Change TCG MOR variables to use VariablePolicy MdeModulePkg: Drop VarLock from RuntimeDxe variable driver MdeModulePkg/Library/VarCheckPolicyLib/VarCheckPolicyLib.c | 346 ++++++++ MdeModulePkg/Library/VariablePolicyHelperLib/VariablePolicyHelperLib.c | 396 ++++++++++ MdeModulePkg/Library/VariablePolicyLib/VariablePolicyExtraInitNull.c | 46 ++ MdeModulePkg/Library/VariablePolicyLib/VariablePolicyExtraInitRuntimeDxe.c | 85 ++ MdeModulePkg/Library/VariablePolicyLib/VariablePolicyLib.c | 830 ++++++++++++++++++++ MdeModulePkg/Universal/Variable/RuntimeDxe/TcgMorLockDxe.c | 52 +- MdeModulePkg/Universal/Variable/RuntimeDxe/TcgMorLockSmm.c | 60 +- MdeModulePkg/Universal/Variable/RuntimeDxe/VarCheck.c | 49 +- MdeModulePkg/Universal/Variable/RuntimeDxe/VariableDxe.c | 60 ++ MdeModulePkg/Universal/Variable/RuntimeDxe/VariableLockRequestToLock.c | 71 ++ MdeModulePkg/Universal/Variable/RuntimeDxe/VariablePolicySmmDxe.c | 573 ++++++++++++++ MdeModulePkg/Universal/Variable/RuntimeDxe/VariableSmm.c | 7 + MdeModulePkg/Universal/Variable/RuntimeDxe/VariableSmmRuntimeDxe.c | 14 + SecurityPkg/Library/AuthVariableLib/AuthService.c | 30 +- ArmVirtPkg/ArmVirt.dsc.inc | 4 + EmulatorPkg/EmulatorPkg.dsc | 3 + MdeModulePkg/Include/Guid/VarCheckPolicyMmi.h | 54 ++ MdeModulePkg/Include/Library/VariablePolicyHelperLib.h | 164 ++++ MdeModulePkg/Include/Library/VariablePolicyLib.h | 207 +++++ MdeModulePkg/Include/Protocol/VariablePolicy.h | 157 ++++ MdeModulePkg/Library/VarCheckPolicyLib/VarCheckPolicyLib.inf | 42 + MdeModulePkg/Library/VarCheckPolicyLib/VarCheckPolicyLib.uni | 12 + MdeModulePkg/Library/VariablePolicyHelperLib/VariablePolicyHelperLib.inf | 35 + MdeModulePkg/Library/VariablePolicyHelperLib/VariablePolicyHelperLib.uni | 12 + MdeModulePkg/Library/VariablePolicyLib/ReadMe.md | 406 ++++++++++ MdeModulePkg/Library/VariablePolicyLib/VariablePolicyLib.inf | 48 ++ MdeModulePkg/Library/VariablePolicyLib/VariablePolicyLib.uni | 12 + MdeModulePkg/Library/VariablePolicyLib/VariablePolicyLibRuntimeDxe.inf | 51 ++ MdeModulePkg/MdeModulePkg.ci.yaml | 4 +- MdeModulePkg/MdeModulePkg.dec | 26 +- MdeModulePkg/MdeModulePkg.dsc | 9 + MdeModulePkg/MdeModulePkg.uni | 7 + MdeModulePkg/Universal/Variable/RuntimeDxe/VariableRuntimeDxe.inf | 5 + MdeModulePkg/Universal/Variable/RuntimeDxe/VariableSmm.inf | 4 + MdeModulePkg/Universal/Variable/RuntimeDxe/VariableSmmRuntimeDxe.inf | 11 + MdeModulePkg/Universal/Variable/RuntimeDxe/VariableStandaloneMm.inf | 4 + OvmfPkg/OvmfPkgIa32.dsc | 5 + OvmfPkg/OvmfPkgIa32X64.dsc | 5 + OvmfPkg/OvmfPkgX64.dsc | 5 + OvmfPkg/OvmfXen.dsc | 4 + SecurityPkg/Library/AuthVariableLib/AuthVariableLib.inf | 2 + UefiPayloadPkg/UefiPayloadPkgIa32.dsc | 4 + UefiPayloadPkg/UefiPayloadPkgIa32X64.dsc | 4 + 43 files changed, 3845 insertions(+), 80 deletions(-) create mode 100644 MdeModulePkg/Library/VarCheckPolicyLib/VarCheckPolicyLib.c create mode 100644 MdeModulePkg/Library/VariablePolicyHelperLib/VariablePolicyHelperLib.c create mode 100644 MdeModulePkg/Library/VariablePolicyLib/VariablePolicyExtraInitNull.c create mode 100644 MdeModulePkg/Library/VariablePolicyLib/VariablePolicyExtraInitRuntimeDxe.c create mode 100644 MdeModulePkg/Library/VariablePolicyLib/VariablePolicyLib.c create mode 100644 MdeModulePkg/Universal/Variable/RuntimeDxe/VariableLockRequestToLock.c create mode 100644 MdeModulePkg/Universal/Variable/RuntimeDxe/VariablePolicySmmDxe.c create mode 100644 MdeModulePkg/Include/Guid/VarCheckPolicyMmi.h create mode 100644 MdeModulePkg/Include/Library/VariablePolicyHelperLib.h create mode 100644 MdeModulePkg/Include/Library/VariablePolicyLib.h create mode 100644 MdeModulePkg/Include/Protocol/VariablePolicy.h create mode 100644 MdeModulePkg/Library/VarCheckPolicyLib/VarCheckPolicyLib.inf create mode 100644 MdeModulePkg/Library/VarCheckPolicyLib/VarCheckPolicyLib.uni create mode 100644 MdeModulePkg/Library/VariablePolicyHelperLib/VariablePolicyHelperLib.inf create mode 100644 MdeModulePkg/Library/VariablePolicyHelperLib/VariablePolicyHelperLib.uni create mode 100644 MdeModulePkg/Library/VariablePolicyLib/ReadMe.md create mode 100644 MdeModulePkg/Library/VariablePolicyLib/VariablePolicyLib.inf create mode 100644 MdeModulePkg/Library/VariablePolicyLib/VariablePolicyLib.uni create mode 100644 MdeModulePkg/Library/VariablePolicyLib/VariablePolicyLibRuntimeDxe.inf -- 2.28.0.windows.1 -=-=-=-=-=-=-=-=-=-=-=- Groups.io Links: You receive all messages sent to this group. View/Reply Online (#67415): https://edk2.groups.io/g/devel/message/67415 Mute This Topic: https://groups.io/mt/78221656/1787277 Group Owner: devel+owner@edk2.groups.io Unsubscribe: https://edk2.groups.io/g/devel/unsub [importer@patchew.org] -=-=-=-=-=-=-=-=-=-=-=-
On 11/13/20 03:05, gaoliming wrote: > Bret: > > Yes. I think this patch set pass code review. If no objection, I will merge it next Monday. No objection from me. Thanks Laszlo > > > > Thanks > > Liming > > 发件人: Bret Barkelew <bret@corthon.com> > 发送时间: 2020年11月13日 9:21 > 收件人: gaoliming <gaoliming@byosoft.com.cn> > 抄送: edk2-devel-groups-io <devel@edk2.groups.io>; Laszlo Ersek <lersek@redhat.com>; Michael D Kinney <michael.d.kinney@intel.com> > 主题: Re: [edk2-devel] [PATCH v9 00/13] Add the VariablePolicy feature > > > > Looks like I should have everything I need on this patch set. Can I assume that someone will stage it to make it into 2011-stable? > > > > On Thu, Nov 12, 2020 at 8:45 AM Bret Barkelew <bret@corthon.com <mailto:bret@corthon.com> > wrote: > > Yes, I'm working on a more sustainable solution for the test cases and have opened this bug to track it. > 3073 – Provide test cases/apps for VarPol (tianocore.org) <https://bugzilla.tianocore.org/show_bug.cgi?id=3073> > > > > I just didn't want that to hold up the rest of the code that's already been signed off on. > > > > On Thu, Nov 12, 2020 at 6:25 AM gaoliming <gaoliming@byosoft.com.cn <mailto:gaoliming@byosoft.com.cn> > wrote: > > Bret: > > V9 version change is mainly for MdeModule Variable driver. The change is good to me. Reviewed-by: Liming Gao <gaoliming@byosoft.com.cn <mailto:gaoliming@byosoft.com.cn> > > > > > Besides, I find V9 doesn’t include the patch 0014-MdeModulePkg-Add-a-shell-based-functional-test-for-VariablePolicy. Because this patch doesn’t pass ECC, will you plan to add it later? > > > > Thanks > > Liming > > 发件人: bounce+27952+67296+4905953+8761045@groups.io <mailto:bounce%2B27952%2B67296%2B4905953%2B8761045@groups.io> <bounce+27952+67296+4905953+8761045@groups.io <mailto:bounce%2B27952%2B67296%2B4905953%2B8761045@groups.io> > 代表 Bret Barkelew > 发送时间: 2020年11月12日 2:44 > 收件人: edk2-devel-groups-io <devel@edk2.groups.io <mailto:devel@edk2.groups.io> > > 主题: Re: [edk2-devel] [PATCH v9 00/13] Add the VariablePolicy feature > > > > To clarify: > > > > The current solution to the MorLock EndOfDxe issue is to expressly call LockVariablePolicy() in the same locations that mEndOfDxe is set (which was the mechanism that previously locked the VariableLock interface). This solution maintains parity with the old design, which is keeping with the ethos of minimal changes and similar functionality to VariableLock. It does not introduce any new dependencies. > > > > The only drawback to this approach is that it preserves the strict ordering that was also previously required by MorLock, which I will attempt to address in later updates. > > > > On Sun, Nov 8, 2020 at 10:45 PM Bret Barkelew <bret@corthon.com <mailto:bret@corthon.com> > wrote: > > The 14 patches in this series add the VariablePolicy feature to the core, > deprecate Edk2VarLock (while adding a compatibility layer to reduce code > churn), and integrate the VariablePolicy libraries and protocols into > Variable Services. > > Since the integration requires multiple changes, including adding libraries, > a protocol, an SMI communication handler, and VariableServices integration, > the patches are broken up by individual library additions and then a final > integration. Security-sensitive changes like bypassing Authenticated > Variable enforcement are also broken out into individual patches so that > attention can be called directly to them. > > Platform porting instructions are described in this wiki entry: > https://github.com/tianocore/tianocore.github.io/wiki/VariablePolicy-Protocol---Enhanced-Method-for-Managing-Variables#platform-porting > > Discussion of the feature can be found in multiple places throughout > the last year on the RFC channel, staging branches, and in devel. > > Most recently, this subject was discussed in this thread: > https://edk2.groups.io/g/devel/message/53712 > (the code branches shared in that discussion are now out of date, but the > whitepapers and discussion are relevant). > > Cc: Jiewen Yao <jiewen.yao@intel.com <mailto:jiewen.yao@intel.com> > > Cc: Dandan Bi <dandan.bi@intel.com <mailto:dandan.bi@intel.com> > > Cc: Chao Zhang <chao.b.zhang@intel.com <mailto:chao.b.zhang@intel.com> > > Cc: Jian J Wang <jian.j.wang@intel.com <mailto:jian.j.wang@intel.com> > > Cc: Hao A Wu <hao.a.wu@intel.com <mailto:hao.a.wu@intel.com> > > Cc: Liming Gao <liming.gao@intel.com <mailto:liming.gao@intel.com> > > Cc: Jordan Justen <jordan.l.justen@intel.com <mailto:jordan.l.justen@intel.com> > > Cc: Laszlo Ersek <lersek@redhat.com <mailto:lersek@redhat.com> > > Cc: Ard Biesheuvel <ard.biesheuvel@arm.com <mailto:ard.biesheuvel@arm.com> > > Cc: Andrew Fish <afish@apple.com <mailto:afish@apple.com> > > Cc: Ray Ni <ray.ni@intel.com <mailto:ray.ni@intel.com> > > Cc: Bret Barkelew <brbarkel@microsoft.com <mailto:brbarkel@microsoft.com> > > Signed-off-by: Bret Barkelew <brbarkel@microsoft.com <mailto:brbarkel@microsoft.com> > > > v9 changes: > * Rebase > * Address the event ordering issues around MorLock at EndOfDxe > * Drop problematic tests > * Address ECC issues > > v8 changes: > * Rebase > * Small tweaks from final PRs > * Drank a lot > * Enrolled several members and a steward in CatFacts > > v7 changes: > * Address comments from Dandan about security of the MM handler > * Add readme > * Fix bug around hex characters in BOOT####, etc > * Add additional testing for hex characters > * Add additional testing for authenticated variables > > v6 changes: > * Fix an issue with uninitialized Status in InitVariablePolicyLib() and DeinitVariablePolicyLib() > * Fix GCC building in shell-based functional test > * Rebase on latest origin/master > > v5 changes: > * Fix the CONST mismatch in VariablePolicy.h and VariablePolicySmmDxe.c > * Fix EFIAPI mismatches in the functional unittest > * Rebase on latest origin/master > > v4 changes: > * Remove Optional PcdAllowVariablePolicyEnforcementDisable PCD from platforms > * Rebase on master > * Migrate to new MmCommunicate2 protocol > * Fix an oversight in the default return value for InitMmCommonCommBuffer > * Fix in VariablePolicyLib to allow ExtraInitRuntimeDxe to consume variables > > V3 changes: > * Address all non-unittest issues with ECC > * Make additional style changes > * Include section name in hunk headers in "ini-style" files > * Remove requirement for the EdkiiPiSmmCommunicationsRegionTable driver > (now allocates its own buffer) > * Change names from VARIABLE_POLICY_PROTOCOL and gVariablePolicyProtocolGuid > to EDKII_VARIABLE_POLICY_PROTOCOL and gEdkiiVariablePolicyProtocolGuid > * Fix GCC warning about initializing externs > * Add UNI strings for new PCD > * Add patches for ArmVirtPkg, OvmfXen, and UefiPayloadPkg > * Reorder patches according to Liming's feedback about adding to platforms > before changing variable driver > > V2 changes: > * Fixed implementation for RuntimeDxe > * Add PCD to block DisableVariablePolicy > * Fix the DumpVariablePolicy pagination in SMM > > Bret Barkelew (13): > MdeModulePkg: Define the VariablePolicy protocol interface > MdeModulePkg: Define the VariablePolicyLib > MdeModulePkg: Define the VariablePolicyHelperLib > MdeModulePkg: Define the VarCheckPolicyLib and SMM interface > OvmfPkg: Add VariablePolicy engine to OvmfPkg platform > EmulatorPkg: Add VariablePolicy engine to EmulatorPkg platform > ArmVirtPkg: Add VariablePolicy engine to ArmVirtPkg platform > UefiPayloadPkg: Add VariablePolicy engine to UefiPayloadPkg platform > MdeModulePkg: Connect VariablePolicy business logic to > VariableServices > MdeModulePkg: Allow VariablePolicy state to delete protected variables > SecurityPkg: Allow VariablePolicy state to delete authenticated > variables > MdeModulePkg: Change TCG MOR variables to use VariablePolicy > MdeModulePkg: Drop VarLock from RuntimeDxe variable driver > > MdeModulePkg/Library/VarCheckPolicyLib/VarCheckPolicyLib.c | 346 ++++++++ > MdeModulePkg/Library/VariablePolicyHelperLib/VariablePolicyHelperLib.c | 396 ++++++++++ > MdeModulePkg/Library/VariablePolicyLib/VariablePolicyExtraInitNull.c | 46 ++ > MdeModulePkg/Library/VariablePolicyLib/VariablePolicyExtraInitRuntimeDxe.c | 85 ++ > MdeModulePkg/Library/VariablePolicyLib/VariablePolicyLib.c | 830 ++++++++++++++++++++ > MdeModulePkg/Universal/Variable/RuntimeDxe/TcgMorLockDxe.c | 52 +- > MdeModulePkg/Universal/Variable/RuntimeDxe/TcgMorLockSmm.c | 60 +- > MdeModulePkg/Universal/Variable/RuntimeDxe/VarCheck.c | 49 +- > MdeModulePkg/Universal/Variable/RuntimeDxe/VariableDxe.c | 60 ++ > MdeModulePkg/Universal/Variable/RuntimeDxe/VariableLockRequestToLock.c | 71 ++ > MdeModulePkg/Universal/Variable/RuntimeDxe/VariablePolicySmmDxe.c | 573 ++++++++++++++ > MdeModulePkg/Universal/Variable/RuntimeDxe/VariableSmm.c | 7 + > MdeModulePkg/Universal/Variable/RuntimeDxe/VariableSmmRuntimeDxe.c | 14 + > SecurityPkg/Library/AuthVariableLib/AuthService.c | 30 +- > ArmVirtPkg/ArmVirt.dsc.inc | 4 + > EmulatorPkg/EmulatorPkg.dsc | 3 + > MdeModulePkg/Include/Guid/VarCheckPolicyMmi.h | 54 ++ > MdeModulePkg/Include/Library/VariablePolicyHelperLib.h | 164 ++++ > MdeModulePkg/Include/Library/VariablePolicyLib.h | 207 +++++ > MdeModulePkg/Include/Protocol/VariablePolicy.h | 157 ++++ > MdeModulePkg/Library/VarCheckPolicyLib/VarCheckPolicyLib.inf | 42 + > MdeModulePkg/Library/VarCheckPolicyLib/VarCheckPolicyLib.uni | 12 + > MdeModulePkg/Library/VariablePolicyHelperLib/VariablePolicyHelperLib.inf | 35 + > MdeModulePkg/Library/VariablePolicyHelperLib/VariablePolicyHelperLib.uni | 12 + > MdeModulePkg/Library/VariablePolicyLib/ReadMe.md | 406 ++++++++++ > MdeModulePkg/Library/VariablePolicyLib/VariablePolicyLib.inf | 48 ++ > MdeModulePkg/Library/VariablePolicyLib/VariablePolicyLib.uni | 12 + > MdeModulePkg/Library/VariablePolicyLib/VariablePolicyLibRuntimeDxe.inf | 51 ++ > MdeModulePkg/MdeModulePkg.ci.yaml | 4 +- > MdeModulePkg/MdeModulePkg.dec | 26 +- > MdeModulePkg/MdeModulePkg.dsc | 9 + > MdeModulePkg/MdeModulePkg.uni | 7 + > MdeModulePkg/Universal/Variable/RuntimeDxe/VariableRuntimeDxe.inf | 5 + > MdeModulePkg/Universal/Variable/RuntimeDxe/VariableSmm.inf | 4 + > MdeModulePkg/Universal/Variable/RuntimeDxe/VariableSmmRuntimeDxe.inf | 11 + > MdeModulePkg/Universal/Variable/RuntimeDxe/VariableStandaloneMm.inf | 4 + > OvmfPkg/OvmfPkgIa32.dsc | 5 + > OvmfPkg/OvmfPkgIa32X64.dsc | 5 + > OvmfPkg/OvmfPkgX64.dsc | 5 + > OvmfPkg/OvmfXen.dsc | 4 + > SecurityPkg/Library/AuthVariableLib/AuthVariableLib.inf | 2 + > UefiPayloadPkg/UefiPayloadPkgIa32.dsc | 4 + > UefiPayloadPkg/UefiPayloadPkgIa32X64.dsc | 4 + > 43 files changed, 3845 insertions(+), 80 deletions(-) > create mode 100644 MdeModulePkg/Library/VarCheckPolicyLib/VarCheckPolicyLib.c > create mode 100644 MdeModulePkg/Library/VariablePolicyHelperLib/VariablePolicyHelperLib.c > create mode 100644 MdeModulePkg/Library/VariablePolicyLib/VariablePolicyExtraInitNull.c > create mode 100644 MdeModulePkg/Library/VariablePolicyLib/VariablePolicyExtraInitRuntimeDxe.c > create mode 100644 MdeModulePkg/Library/VariablePolicyLib/VariablePolicyLib.c > create mode 100644 MdeModulePkg/Universal/Variable/RuntimeDxe/VariableLockRequestToLock.c > create mode 100644 MdeModulePkg/Universal/Variable/RuntimeDxe/VariablePolicySmmDxe.c > create mode 100644 MdeModulePkg/Include/Guid/VarCheckPolicyMmi.h > create mode 100644 MdeModulePkg/Include/Library/VariablePolicyHelperLib.h > create mode 100644 MdeModulePkg/Include/Library/VariablePolicyLib.h > create mode 100644 MdeModulePkg/Include/Protocol/VariablePolicy.h > create mode 100644 MdeModulePkg/Library/VarCheckPolicyLib/VarCheckPolicyLib.inf > create mode 100644 MdeModulePkg/Library/VarCheckPolicyLib/VarCheckPolicyLib.uni > create mode 100644 MdeModulePkg/Library/VariablePolicyHelperLib/VariablePolicyHelperLib.inf > create mode 100644 MdeModulePkg/Library/VariablePolicyHelperLib/VariablePolicyHelperLib.uni > create mode 100644 MdeModulePkg/Library/VariablePolicyLib/ReadMe.md > create mode 100644 MdeModulePkg/Library/VariablePolicyLib/VariablePolicyLib.inf > create mode 100644 MdeModulePkg/Library/VariablePolicyLib/VariablePolicyLib.uni > create mode 100644 MdeModulePkg/Library/VariablePolicyLib/VariablePolicyLibRuntimeDxe.inf > -=-=-=-=-=-=-=-=-=-=-=- Groups.io Links: You receive all messages sent to this group. View/Reply Online (#67532): https://edk2.groups.io/g/devel/message/67532 Mute This Topic: https://groups.io/mt/78221656/1787277 Group Owner: devel+owner@edk2.groups.io Unsubscribe: https://edk2.groups.io/g/devel/unsub [importer@patchew.org] -=-=-=-=-=-=-=-=-=-=-=-
© 2016 - 2024 Red Hat, Inc.