From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mail-ed1-f47.google.com (mail-ed1-f47.google.com [209.85.208.47]) by mx.groups.io with SMTP id smtpd.web08.11220.1605120240117030166 for ; Wed, 11 Nov 2020 10:44:01 -0800 Authentication-Results: mx.groups.io; dkim=pass header.i=@corthon-com.20150623.gappssmtp.com header.s=20150623 header.b=NX5VDuMA; spf=none, err=permanent DNS error (domain: corthon.com, ip: 209.85.208.47, mailfrom: bret@corthon.com) Received: by mail-ed1-f47.google.com with SMTP id t11so3347087edj.13 for ; Wed, 11 Nov 2020 10:43:59 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=corthon-com.20150623.gappssmtp.com; s=20150623; h=mime-version:references:in-reply-to:from:date:message-id:subject:to; bh=pX38+7lqUu7S5Kg9Gn6Te/DzAXeC+IlGGbUkdw44uYs=; b=NX5VDuMAE5Na3hJQLvHRUG4ukOqk1y5/HKYXOLXq9TMpzy1zoXC5uWFRHG3dDbqLto iuAv63fpKr4FR3HEXo/lvFabKOmRkHFOBZLhVN6JbDRt/F8jXN2CFn2XzAlIS3dx+LI5 vaeuHPPdQ4vCj6E46KTaTLnDGiw4SNuteKzVXzNzABIq3y8D7ml5XhSUpOjO1XuGh5wF k47+d+borRQj4fnpMpsw9mC4PmM6L/7ZAfm834T53KCPnI5cxX64wItWDJtn0/rzQdNk 9KsrAc5L8F6QZXL6LKHFYABFtYdlAzr0/XTjVRbRN6b9mefrTyFjUcdrQcp92Li7e4Of s2ig== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to; bh=pX38+7lqUu7S5Kg9Gn6Te/DzAXeC+IlGGbUkdw44uYs=; b=FshGNNn+TDj2ZOCzsa+BNKAahbA6C6NkT/adVbScu8GmRaqBhzYyO6Mb7tYumFLAGo NOHfoHlaUju36DplDcYGjDXPwbTCAuvk9X4CXy/rNN6rgZ6H+k7lMYvRltdUmQumjgoq qY9g/WEINL4J6eHJkamO390Q91pP9BTp/DUsD67tQbA8SsGO14YaRGtCClfJ+I2T7yAR C/3a25IeAgdpnONIWRn+NKcUHcM2eOOCpGoGmX85fK1r6yKHu25TMNVp5pMmpSn1tHzk XyBZVrMik5rWhXHiOcDkBgDflPMitCfoxtcqXjgyUPoTrtG6KT0ZEkgVu5Een0DUxMBw sYAg== X-Gm-Message-State: AOAM530r7KoUZQhoNp0IRC+hL8f2iQdak7jiu6oslMD54D/d1QecwB0+ d2Y4keABV4XndmuPTm92Nk1XJ/OR3YgLjEp7uMSYstVnHa4eXg== X-Google-Smtp-Source: ABdhPJx8PHg4FguDd+LIR3+Zi44AdS3+nQ07s+8pbLj+YqFhS3lXaLIe46gd+tVMxVs20pXDXmegmvqyYAP2xTNOgA0= X-Received: by 2002:a05:6402:114b:: with SMTP id g11mr975844edw.228.1605120238350; Wed, 11 Nov 2020 10:43:58 -0800 (PST) MIME-Version: 1.0 References: <20201109064522.919-1-bret.barkelew@microsoft.com> In-Reply-To: <20201109064522.919-1-bret.barkelew@microsoft.com> From: "Bret Barkelew" Date: Wed, 11 Nov 2020 10:43:47 -0800 Message-ID: Subject: Re: [PATCH v9 00/13] Add the VariablePolicy feature To: edk2-devel-groups-io Content-Type: multipart/alternative; boundary="000000000000a10a3a05b3d92de5" --000000000000a10a3a05b3d92de5 Content-Type: text/plain; charset="UTF-8" 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 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 > Cc: Dandan Bi > Cc: Chao Zhang > Cc: Jian J Wang > Cc: Hao A Wu > Cc: Liming Gao > Cc: Jordan Justen > Cc: Laszlo Ersek > Cc: Ard Biesheuvel > Cc: Andrew Fish > Cc: Ray Ni > Cc: Bret Barkelew > Signed-off-by: Bret Barkelew > > 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 > > --000000000000a10a3a05b3d92de5 Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable
To clarify:

The current solu= tion 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 par= ity with the old design, which is keeping with the ethos of minimal changes= and similar functionality to VariableLock. It does not introduce any new d= ependencies.

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, 2= 020 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<= br> 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.g= ithub.io/wiki/VariablePolicy-Protocol---Enhanced-Method-for-Managing-Variab= les#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 <ha= o.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 <af= ish@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 Dei= nitVariablePolicyLib()
* 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 platfor= ms
* 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 variable= s

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
=C2=A0 (now allocates its own buffer)
* Change names from VARIABLE_POLICY_PROTOCOL and gVariablePolicyProtocolGui= d
=C2=A0 to EDKII_VARIABLE_POLICY_PROTOCOL and gEdkiiVariablePolicyProtocolGu= id
* 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 platfo= rms
=C2=A0 before changing variable driver

V2 changes:
* Fixed implementation for RuntimeDxe
* Add PCD to block DisableVariablePolicy
* Fix the DumpVariablePolicy pagination in SMM

Bret Barkelew (13):
=C2=A0 MdeModulePkg: Define the VariablePolicy protocol interface
=C2=A0 MdeModulePkg: Define the VariablePolicyLib
=C2=A0 MdeModulePkg: Define the VariablePolicyHelperLib
=C2=A0 MdeModulePkg: Define the VarCheckPolicyLib and SMM interface
=C2=A0 OvmfPkg: Add VariablePolicy engine to OvmfPkg platform
=C2=A0 EmulatorPkg: Add VariablePolicy engine to EmulatorPkg platform
=C2=A0 ArmVirtPkg: Add VariablePolicy engine to ArmVirtPkg platform
=C2=A0 UefiPayloadPkg: Add VariablePolicy engine to UefiPayloadPkg platform=
=C2=A0 MdeModulePkg: Connect VariablePolicy business logic to
=C2=A0 =C2=A0 VariableServices
=C2=A0 MdeModulePkg: Allow VariablePolicy state to delete protected variabl= es
=C2=A0 SecurityPkg: Allow VariablePolicy state to delete authenticated
=C2=A0 =C2=A0 variables
=C2=A0 MdeModulePkg: Change TCG MOR variables to use VariablePolicy
=C2=A0 MdeModulePkg: Drop VarLock from RuntimeDxe variable driver

=C2=A0MdeModulePkg/Library/VarCheckPolicyLib/VarCheckPolicyLib.c=C2=A0 =C2= =A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0| 346 ++++++++
=C2=A0MdeModulePkg/Library/VariablePolicyHelperLib/VariablePolicyHelperLib.= c=C2=A0 =C2=A0 =C2=A0| 396 ++++++++++
=C2=A0MdeModulePkg/Library/VariablePolicyLib/VariablePolicyExtraInitNull.c= =C2=A0 =C2=A0 =C2=A0 =C2=A0|=C2=A0 46 ++
=C2=A0MdeModulePkg/Library/VariablePolicyLib/VariablePolicyExtraInitRuntime= Dxe.c |=C2=A0 85 ++
=C2=A0MdeModulePkg/Library/VariablePolicyLib/VariablePolicyLib.c=C2=A0 =C2= =A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0| 830 +++++++++++++++++= +++
=C2=A0MdeModulePkg/Universal/Variable/RuntimeDxe/TcgMorLockDxe.c=C2=A0 =C2= =A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0|=C2=A0 52 +-
=C2=A0MdeModulePkg/Universal/Variable/RuntimeDxe/TcgMorLockSmm.c=C2=A0 =C2= =A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0|=C2=A0 60 +-
=C2=A0MdeModulePkg/Universal/Variable/RuntimeDxe/VarCheck.c=C2=A0 =C2=A0 = =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 |=C2=A0 49 += -
=C2=A0MdeModulePkg/Universal/Variable/RuntimeDxe/VariableDxe.c=C2=A0 =C2=A0= =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0|=C2=A0 60 ++
=C2=A0MdeModulePkg/Universal/Variable/RuntimeDxe/VariableLockRequestToLock.= c=C2=A0 =C2=A0 =C2=A0|=C2=A0 71 ++
=C2=A0MdeModulePkg/Universal/Variable/RuntimeDxe/VariablePolicySmmDxe.c=C2= =A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 | 573 ++++++++++++++
=C2=A0MdeModulePkg/Universal/Variable/RuntimeDxe/VariableSmm.c=C2=A0 =C2=A0= =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0|=C2=A0 =C2=A07 + =C2=A0MdeModulePkg/Universal/Variable/RuntimeDxe/VariableSmmRuntimeDxe.c=C2= =A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0|=C2=A0 14 +
=C2=A0SecurityPkg/Library/AuthVariableLib/AuthService.c=C2=A0 =C2=A0 =C2=A0= =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 |=C2= =A0 30 +-
=C2=A0ArmVirtPkg/ArmVirt.dsc.inc=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0|=C2=A0 =C2=A04 = +
=C2=A0EmulatorPkg/EmulatorPkg.dsc=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 |=C2=A0 =C2=A03 +
=C2=A0MdeModulePkg/Include/Guid/VarCheckPolicyMmi.h=C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 = =C2=A0 |=C2=A0 54 ++
=C2=A0MdeModulePkg/Include/Library/VariablePolicyHelperLib.h=C2=A0 =C2=A0 = =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0| 164 ++++ =C2=A0MdeModulePkg/Include/Library/VariablePolicyLib.h=C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0| 207 +++++
=C2=A0MdeModulePkg/Include/Protocol/VariablePolicy.h=C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0| 157 ++++
=C2=A0MdeModulePkg/Library/VarCheckPolicyLib/VarCheckPolicyLib.inf=C2=A0 = =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0|=C2=A0 42 +
=C2=A0MdeModulePkg/Library/VarCheckPolicyLib/VarCheckPolicyLib.uni=C2=A0 = =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0|=C2=A0 12 +
=C2=A0MdeModulePkg/Library/VariablePolicyHelperLib/VariablePolicyHelperLib.= inf=C2=A0 =C2=A0|=C2=A0 35 +
=C2=A0MdeModulePkg/Library/VariablePolicyHelperLib/VariablePolicyHelperLib.= uni=C2=A0 =C2=A0|=C2=A0 12 +
=C2=A0MdeModulePkg/Library/VariablePolicyLib/ReadMe.md=C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0| 406 ++++++++++
=C2=A0MdeModulePkg/Library/VariablePolicyLib/VariablePolicyLib.inf=C2=A0 = =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0|=C2=A0 48 ++
=C2=A0MdeModulePkg/Library/VariablePolicyLib/VariablePolicyLib.uni=C2=A0 = =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0|=C2=A0 12 +
=C2=A0MdeModulePkg/Library/VariablePolicyLib/VariablePolicyLibRuntimeDxe.in= f=C2=A0 =C2=A0 =C2=A0|=C2=A0 51 ++
=C2=A0MdeModulePkg/MdeModulePkg.ci.yaml=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 |=C2=A0 =C2=A04 +-
=C2=A0MdeModulePkg/MdeModulePkg.dec=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 |=C2=A0 26 +-
=C2=A0MdeModulePkg/MdeModulePkg.dsc=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 |=C2=A0 =C2=A09 +
=C2=A0MdeModulePkg/MdeModulePkg.uni=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 |=C2=A0 =C2=A07 +
=C2=A0MdeModulePkg/Universal/Variable/RuntimeDxe/VariableRuntimeDxe.inf=C2= =A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 |=C2=A0 =C2=A05 +
=C2=A0MdeModulePkg/Universal/Variable/RuntimeDxe/VariableSmm.inf=C2=A0 =C2= =A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0|=C2=A0 =C2=A04 +
=C2=A0MdeModulePkg/Universal/Variable/RuntimeDxe/VariableSmmRuntimeDxe.inf= =C2=A0 =C2=A0 =C2=A0 =C2=A0|=C2=A0 11 +
=C2=A0MdeModulePkg/Universal/Variable/RuntimeDxe/VariableStandaloneMm.inf= =C2=A0 =C2=A0 =C2=A0 =C2=A0 |=C2=A0 =C2=A04 +
=C2=A0OvmfPkg/OvmfPkgIa32.dsc=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 |=C2=A0 =C2= =A05 +
=C2=A0OvmfPkg/OvmfPkgIa32X64.dsc=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0|=C2=A0 =C2=A05 = +
=C2=A0OvmfPkg/OvmfPkgX64.dsc=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0|=C2= =A0 =C2=A05 +
=C2=A0OvmfPkg/OvmfXen.dsc=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 |= =C2=A0 =C2=A04 +
=C2=A0SecurityPkg/Library/AuthVariableLib/AuthVariableLib.inf=C2=A0 =C2=A0 = =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 |=C2=A0 =C2=A02 + =C2=A0UefiPayloadPkg/UefiPayloadPkgIa32.dsc=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0 =C2=A0 =C2=A0 |=C2=A0 =C2=A04 +
=C2=A0UefiPayloadPkg/UefiPayloadPkgIa32X64.dsc=C2=A0 =C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0 =C2=A0|=C2=A0 =C2=A04 +
=C2=A043 files changed, 3845 insertions(+), 80 deletions(-)
=C2=A0create mode 100644 MdeModulePkg/Library/VarCheckPolicyLib/VarCheckPol= icyLib.c
=C2=A0create mode 100644 MdeModulePkg/Library/VariablePolicyHelperLib/Varia= blePolicyHelperLib.c
=C2=A0create mode 100644 MdeModulePkg/Library/VariablePolicyLib/VariablePol= icyExtraInitNull.c
=C2=A0create mode 100644 MdeModulePkg/Library/VariablePolicyLib/VariablePol= icyExtraInitRuntimeDxe.c
=C2=A0create mode 100644 MdeModulePkg/Library/VariablePolicyLib/VariablePol= icyLib.c
=C2=A0create mode 100644 MdeModulePkg/Universal/Variable/RuntimeDxe/Variabl= eLockRequestToLock.c
=C2=A0create mode 100644 MdeModulePkg/Universal/Variable/RuntimeDxe/Variabl= ePolicySmmDxe.c
=C2=A0create mode 100644 MdeModulePkg/Include/Guid/VarCheckPolicyMmi.h
=C2=A0create mode 100644 MdeModulePkg/Include/Library/VariablePolicyHelperL= ib.h
=C2=A0create mode 100644 MdeModulePkg/Include/Library/VariablePolicyLib.h =C2=A0create mode 100644 MdeModulePkg/Include/Protocol/VariablePolicy.h
=C2=A0create mode 100644 MdeModulePkg/Library/VarCheckPolicyLib/VarCheckPol= icyLib.inf
=C2=A0create mode 100644 MdeModulePkg/Library/VarCheckPolicyLib/VarCheckPol= icyLib.uni
=C2=A0create mode 100644 MdeModulePkg/Library/VariablePolicyHelperLib/Varia= blePolicyHelperLib.inf
=C2=A0create mode 100644 MdeModulePkg/Library/VariablePolicyHelperLib/Varia= blePolicyHelperLib.uni
=C2=A0create mode 100644 MdeModulePkg/Library/VariablePolicyLib/ReadMe.md =C2=A0create mode 100644 MdeModulePkg/Library/VariablePolicyLib/VariablePol= icyLib.inf
=C2=A0create mode 100644 MdeModulePkg/Library/VariablePolicyLib/VariablePol= icyLib.uni
=C2=A0create mode 100644 MdeModulePkg/Library/VariablePolicyLib/VariablePol= icyLibRuntimeDxe.inf

--
2.28.0.windows.1

--000000000000a10a3a05b3d92de5--