[edk2-devel] [PATCH v9 00/13] Add the VariablePolicy feature

Bret Barkelew via groups.io bret.barkelew=microsoft.com at groups.io
Thu Nov 19 20:41:48 UTC 2020


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 at vmware.com>
Sent: Thursday, November 19, 2020 12:02 PM
To: Ard Biesheuvel<mailto:ard.biesheuvel at arm.com>; devel at edk2.groups.io<mailto:devel at edk2.groups.io>; debtech at gmail.com<mailto:debtech at gmail.com>
Cc: Bret Barkelew<mailto:bret at corthon.com>; Yao, Jiewen<mailto:jiewen.yao at intel.com>; Dandan Bi<mailto:dandan.bi at intel.com>; Chao Zhang<mailto:chao.b.zhang at intel.com>; Jian J Wang<mailto:jian.j.wang at intel.com>; Hao A Wu<mailto:hao.a.wu at intel.com>; liming.gao<mailto:liming.gao at intel.com>; Jordan Justen<mailto:jordan.l.justen at intel.com>; Laszlo Ersek<mailto:lersek at redhat.com>; Andrew Fish<mailto:afish at apple.com>; Ni, Ray<mailto:ray.ni at intel.com>; Bret Barkelew<mailto:Bret.Barkelew at 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 at edk2.groups.io <devel at edk2.groups.io> on behalf of Bret Barkelew via groups.io <debtech=gmail.com at groups.io>
Sent: Thursday, November 19, 2020 10:15 AM
To: Ard Biesheuvel <ard.biesheuvel at arm.com>
Cc: Bret Barkelew <bret at corthon.com>; devel at edk2.groups.io <devel at edk2.groups.io>; Jiewen Yao <jiewen.yao at intel.com>; Dandan Bi <dandan.bi at intel.com>; Chao Zhang <chao.b.zhang at intel.com>; Jian J Wang <jian.j.wang at intel.com>; Hao A Wu <hao.a.wu at intel.com>; Liming Gao <liming.gao at intel.com>; Jordan Justen <jordan.l.justen at intel.com>; Laszlo Ersek <lersek at redhat.com>; Andrew Fish <afish at apple.com>; Ray Ni <ray.ni at intel.com>; Bret Barkelew <brbarkel at 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 at 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 at intel.com>
>> Cc: Dandan Bi <dandan.bi at intel.com>
>> Cc: Chao Zhang <chao.b.zhang at intel.com>
>> Cc: Jian J Wang <jian.j.wang at intel.com>
>> Cc: Hao A Wu <hao.a.wu at intel.com>
>> Cc: Liming Gao <liming.gao at intel.com>
>> Cc: Jordan Justen <jordan.l.justen at intel.com>
>> Cc: Laszlo Ersek <lersek at redhat.com>
>> Cc: Ard Biesheuvel <ard.biesheuvel at arm.com>
>> Cc: Andrew Fish <afish at apple.com>
>> Cc: Ray Ni <ray.ni at intel.com>
>> Cc: Bret Barkelew <brbarkel at microsoft.com>
>> Signed-off-by: Bret Barkelew <brbarkel at 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/1813853
Group Owner: devel+owner at edk2.groups.io
Unsubscribe: https://edk2.groups.io/g/devel/unsub [edk2-devel-archive at redhat.com]
-=-=-=-=-=-=-=-=-=-=-=-


-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://listman.redhat.com/archives/edk2-devel-archive/attachments/20201119/64faf476/attachment.htm>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: 18F49CA7C2DD4D94B44B46E120428324.png
Type: image/png
Size: 159 bytes
Desc: 18F49CA7C2DD4D94B44B46E120428324.png
URL: <http://listman.redhat.com/archives/edk2-devel-archive/attachments/20201119/64faf476/attachment.png>


More information about the edk2-devel-archive mailing list