[edk2-devel] [PATCH v1 00/41] Add PrmPkg

Michael Kubacki mikuback at linux.microsoft.com
Tue Mar 22 16:19:06 UTC 2022


From: Michael Kubacki <michael.kubacki at microsoft.com>

This patch series adds a new package called PrmPkg. An RFC was sent
to the edk2 mailing list on January 28, 2022 detailing the proposal,
see https://edk2.groups.io/g/devel/message/86181.

Platform Runtime Mechanism (PRM) is a new firmware solution that has
been developed in edk2-staging/PlatformRuntimeMechanism.

This patch series has been organized to greatly condense the history
from the edk2-staging branch but to preserve important decisions and
changes in history that help establish context of changes and will
serve as valuable references for future development.

Interest in PRM has increased across various vendors and we believe
it is beneficial to make the source code more widely available for
the following reasons:

  1. PRM specification adoption
  2. Feature completeness
  3. Overall validation coverage
  4. Interest from the community and future collaboration

The technical details of PRM are covered in the PRM Specification
in addition to the Readme.md file located in the root of PrmPkg
in this patch series.

1. PRM specification adoption

Intel and Microsoft have worked together to standardize PRM in the
ACPI Specification and the PRM Specification hosted on uefi.org.

  * ACPI 6.4 Specification:
  https://uefi.org/node/4149

  * PRM Specification:
  https://uefi.org/sites/default/files/resources/Platform%20Runtime%20Mechanism%20-%20with%20legal%20notice.pdf

2. Feature completeness

PrmPkg implements the full firmware functionality described in the
PRM Specification and there are no significant changes to
functionality planned at this time.

Though we are very much interested in evolving PRM based on
feedback.

3. Overall validation coverage

PrmPkg has been integrated and tested on client and server systems
in addition to virtual platforms (OvmfPkg/QEMU).

Platform integration is simple and a demonstration of this
integration for OvmfPkg is available in the following branch:
https://github.com/makubacki/edk2/tree/ovmf_prmpkg_integration

The code has been built with:
  * MSFT VS2015, VS2017, and VS2019
  * GCC5 (see https://bugzilla.tianocore.org/show_bug.cgi?id=3802)
  * iASL compiler (20200528 - https://acpica.org/node/181)

The Linux kernel currently includes the following PRM support:
  * _OSC PRM bit - allows FW to know determine the OS is
    PRM-capable and can redirect _DSM method from alternate
    triggers (such as SMI) to PRM.
  * PRM invocation via _DSM, includes PRM module and handler parsing
    from ACPI PRMT table, and also the PRM operation region handler
    for runtime PRM service invocation.
  * An OS configuration for PRM enabling, PRM support can be
    disabled during OS image build.

Note that upstream Linux does not currently support the following:
  * Ability for the OS driver to call a PRM handler directly,
    it has to be via ACPI _DSM.
  * Run time update PRM module and handler via PE/COFF PRM image.

This commit provides additional context of the changes in Linux:
https://github.com/torvalds/linux/commit/cefc7ca46235f01d5233e3abd4b79452af01d9e9

Windows 11 (https://www.microsoft.com/software-download/windows11)
and Windows Server 2022 (https://docs.microsoft.com/en-us/windows-hardware/drivers/download-the-wdk)
include the PRM functionality noted above in addition to PRM direct
call and PRM runtime updates.

PRM has been tested on IA32, X64, and AARCH64 targets.

4. Interest from the community and future collaboration

PRM has been presented at several industry conferences:

* OSFC 2020 - "PRM: SMM Goes on a Diet"
  https://cfp.osfc.io/osfc2020/talk/MCJASB/

* OCP Summit 2019 - "Case Study Alternatives for SMM Usage in
  Intel Platforms"
  https://www.youtube.com/watch?v=mu3DRLM1dPA
  
In addition, Microsoft plans to publish the Windows PRM driver
interface and a WDF sample driver that uses the interface to the
Windows Driver Samples GitHub repository
(https://github.com/microsoft/Windows-driver-samples).

We believe a PrmPkg in edk2 can increase accessibility to PRM and
ease collaboration.

PrmPkg
------
PrmPkg contains the common functionality needed to enable PRM on
any system. It does not contain platform-specific code such as PRM
modules (and by extension PRM handlers). Other than sample modules,
PrmPkg will only contain code needed to provide PRM feature
functionality as defined in the PRM Specification.

PrmPkg is scoped to continue to only contain platform-agnostic
functionality in the future.

The proposed maintainers of PrmPkg are:
* Michael Kubacki <mikuback at linux.microsoft.com>
* Nate DeSimone <nathaniel.l.desimone at intel.com>

The proposed reviewers of PrmPkg are:
* Ankit Sinha <ankit.sinha at intel.com>

Cc: Andrew Fish <afish at apple.com>
Cc: Kang Gao <kang.gao at intel.com>
Cc: Michael D Kinney <michael.d.kinney at intel.com>
Cc: Michael Kubacki <michael.kubacki at microsoft.com>
Cc: Leif Lindholm <leif at nuviainc.com>
Cc: Benjamin You <benjamin.you at intel.com>
Cc: Liu Yun <yun.y.liu at intel.com>
Cc: Ankit Sinha <ankit.sinha at intel.com>
Cc: Nate DeSimone <nathaniel.l.desimone at intel.com>
Signed-off-by: Michael Kubacki <michael.kubacki at microsoft.com>

Liu (2):
  PrmPkg: Publish PRM operation region to support PRM ACPI _DSM
    invocation
  PrmPkg: Export major/minor version in PRM module PE COFF header

Liu Yun Y (1):
  PrmPkg: Update PRM OpRegion

Michael Kubacki (38):
  PrmPkg: Add package and include headers
  PrmPkg: Add PrmConfig protocol interface
  PrmPkg/PrmContextBufferLib: Add initial library instance
  PrmPkg/PrmConfigDxe: Add initial driver
  PrmPkg: Add initial PrmSamplePrintModule
  PrmPkg: Add initial PrmSampleMemoryAllocationModule
  PrmPkg: Add initial PrmSampleHardwareAccessModule
  PrmPkg: Add initial PrmSampleContextBufferModule
  PrmPkg: Add initial package DSC file
  Readme.md: Add initial content
  PrmPkg: Add ALLOCATE_CONTEXT_BUFFER_IN_FW build option
  PrmPkg: Enable variable growth for the PRM_MODULE_EXPORT macro
  PrmPkg: Add initial PrmSsdtInstallDxe module
  PrmPkg: Remove PRM Module Update Lock
  PrmPkg: Remove ALLOCATE_CONTEXT_BUFFER_IN_FW build flag
  PrmPkg/PrmContextBuffer.h: Add ACPI parameter support structures
  PrmPkg/PrmLoaderDxe: Add ACPI parameter buffer support
  PrmPkg/PrmSampleContextBufferModule: Remove OS debug print requirement
  PrmPkg/PrmSampleHardwareAccessModule: Add non-print PRM handlers
  PrmPkg/SampleAcpiParameterBufferModule: Add initial module
  PrmPkg/HardwareAccessModuleConfigLib: Add initial library
  PrmPkg/Samples/Readme.md: Add initial file
  PrmPkg: Refactor some PrmLoaderDxe functionality into libraries
  PrmPkg/Application/PrmInfo: Add initial application
  PrmPkg: Enforce stricter types
  PrmPkg/Test/PrmPkgHostTest.dsc: Add initial file
  PrmPkg/Test/UnitTest/Library: Add initial UEFI Boot Services test lib
  PrmPkg/Library/DxePrmContextBufferLib: Add host-based unit tests
  PrmPkg/DxePrmModuleDiscoveryLib: Add initial host-based unit tests
  PrmPkg: Add PlatformGuid
  Readme.md: Add iASL note and QEMU sample link
  PrmPkg: Replace PcdPrmPlatformGuid with EDKII_DSC_PLATFORM_GUID
  PrmPkg/Samples: Remove PrmSampleMemoryAllocationModule
  PrmPkg/Samples: Remove PrmSamplePrintModule
  PrmPkg: Remove the concept of OS services
  Readme.md: Add a link to PRM Specification
  PrmPkg: Changes for edk2 repo transition
  PrmPkg: Apply uncrustify changes

 PrmPkg/Application/PrmInfo/PrmInfo.c                                                                                                      |  732 +++++++++
 PrmPkg/Library/DxePrmContextBufferLib/DxePrmContextBufferLib.c                                                                            |  199 +++
 PrmPkg/Library/DxePrmContextBufferLib/UnitTest/DxePrmContextBufferLibUnitTest.c                                                           |  649 ++++++++
 PrmPkg/Library/DxePrmModuleDiscoveryLib/DxePrmModuleDiscoveryLib.c                                                                        |  386 +++++
 PrmPkg/Library/DxePrmModuleDiscoveryLib/UnitTest/DxePrmModuleDiscoveryLibUnitTest.c                                                       |  210 +++
 PrmPkg/Library/DxePrmPeCoffLib/DxePrmPeCoffLib.c                                                                                          |  417 +++++
 PrmPkg/PrmConfigDxe/PrmConfigDxe.c                                                                                                        |  512 ++++++
 PrmPkg/PrmLoaderDxe/PrmLoaderDxe.c                                                                                                        |  377 +++++
 PrmPkg/PrmSsdtInstallDxe/PrmSsdtInstallDxe.c                                                                                              |  110 ++
 PrmPkg/Samples/PrmSampleAcpiParameterBufferModule/Library/DxeAcpiParameterBufferModuleConfigLib/DxeAcpiParameterBufferModuleConfigLib.c   |  127 ++
 PrmPkg/Samples/PrmSampleAcpiParameterBufferModule/PrmSampleAcpiParameterBufferModule.c                                                    |   78 +
 PrmPkg/Samples/PrmSampleContextBufferModule/Library/DxeContextBufferModuleConfigLib/DxeContextBufferModuleConfigLib.c                     |  218 +++
 PrmPkg/Samples/PrmSampleContextBufferModule/PrmSampleContextBufferModule.c                                                                |   84 +
 PrmPkg/Samples/PrmSampleHardwareAccessModule/Library/DxeHardwareAccessModuleConfigLib/DxeHardwareAccessModuleConfigLib.c                  |  108 ++
 PrmPkg/Samples/PrmSampleHardwareAccessModule/PrmSampleHardwareAccessModule.c                                                              |  335 ++++
 PrmPkg/Test/UnitTest/Library/UefiBootServicesTableLibUnitTest/UefiBootServicesTableLibUnitTest.c                                          |  119 ++
 PrmPkg/Test/UnitTest/Library/UefiBootServicesTableLibUnitTest/UefiBootServicesTableLibUnitTestEventTimer.c                                |  180 +++
 PrmPkg/Test/UnitTest/Library/UefiBootServicesTableLibUnitTest/UefiBootServicesTableLibUnitTestImage.c                                     |  163 ++
 PrmPkg/Test/UnitTest/Library/UefiBootServicesTableLibUnitTest/UefiBootServicesTableLibUnitTestMemory.c                                    |  145 ++
 PrmPkg/Test/UnitTest/Library/UefiBootServicesTableLibUnitTest/UefiBootServicesTableLibUnitTestMisc.c                                      |  198 +++
 PrmPkg/Test/UnitTest/Library/UefiBootServicesTableLibUnitTest/UefiBootServicesTableLibUnitTestProtocol.c                                  | 1650 ++++++++++++++++++++
 PrmPkg/Test/UnitTest/Library/UefiBootServicesTableLibUnitTest/UefiBootServicesTableLibUnitTestTpl.c                                       |   43 +
 .azurepipelines/templates/pr-gate-build-job.yml                                                                                           |    2 +-
 .pytool/CISettings.py                                                                                                                     |    1 +
 Maintainers.txt                                                                                                                           |    8 +
 PrmPkg/Application/PrmInfo/PrmInfo.h                                                                                                      |   49 +
 PrmPkg/Application/PrmInfo/PrmInfo.inf                                                                                                    |   66 +
 PrmPkg/Application/PrmInfo/PrmInfo.uni                                                                                                    |   11 +
 PrmPkg/Application/PrmInfo/PrmInfoExtra.uni                                                                                               |   12 +
 PrmPkg/Application/PrmInfo/PrmInfoStrings.uni                                                                                             |  132 ++
 PrmPkg/Include/Library/PrmContextBufferLib.h                                                                                              |   99 ++
 PrmPkg/Include/Library/PrmModuleDiscoveryLib.h                                                                                            |   60 +
 PrmPkg/Include/Library/PrmPeCoffLib.h                                                                                                     |  111 ++
 PrmPkg/Include/Prm.h                                                                                                                      |   46 +
 PrmPkg/Include/PrmContextBuffer.h                                                                                                         |  171 ++
 PrmPkg/Include/PrmDataBuffer.h                                                                                                            |   50 +
 PrmPkg/Include/PrmExportDescriptor.h                                                                                                      |  109 ++
 PrmPkg/Include/PrmMmio.h                                                                                                                  |   45 +
 PrmPkg/Include/PrmModule.h                                                                                                                |   47 +
 PrmPkg/Include/PrmModuleImageContext.h                                                                                                    |   28 +
 PrmPkg/Include/Protocol/PrmConfig.h                                                                                                       |   31 +
 PrmPkg/Library/DxePrmContextBufferLib/DxePrmContextBufferLib.inf                                                                          |   35 +
 PrmPkg/Library/DxePrmContextBufferLib/UnitTest/DxePrmContextBufferLibUnitTestHost.inf                                                     |   46 +
 PrmPkg/Library/DxePrmModuleDiscoveryLib/DxePrmModuleDiscoveryLib.inf                                                                      |   41 +
 PrmPkg/Library/DxePrmModuleDiscoveryLib/PrmModuleDiscovery.h                                                                              |   39 +
 PrmPkg/Library/DxePrmModuleDiscoveryLib/UnitTest/DxePrmModuleDiscoveryLibUnitTestHost.inf                                                 |   39 +
 PrmPkg/Library/DxePrmPeCoffLib/DxePrmPeCoffLib.inf                                                                                        |   32 +
 PrmPkg/PrmConfigDxe/PrmConfigDxe.inf                                                                                                      |   48 +
 PrmPkg/PrmLoaderDxe/PrmAcpiTable.h                                                                                                        |   96 ++
 PrmPkg/PrmLoaderDxe/PrmLoaderDxe.inf                                                                                                      |   61 +
 PrmPkg/PrmPkg.ci.yaml                                                                                                                     |  110 ++
 PrmPkg/PrmPkg.dec                                                                                                                         |   67 +
 PrmPkg/PrmPkg.dsc                                                                                                                         |  142 ++
 PrmPkg/PrmPkg.uni                                                                                                                         |   10 +
 PrmPkg/PrmSsdtInstallDxe/Prm.asl                                                                                                          |  115 ++
 PrmPkg/PrmSsdtInstallDxe/PrmSsdtInstallDxe.inf                                                                                            |   52 +
 PrmPkg/Readme.md                                                                                                                          |  264 ++++
 PrmPkg/Samples/PrmSampleAcpiParameterBufferModule/Library/DxeAcpiParameterBufferModuleConfigLib/DxeAcpiParameterBufferModuleConfigLib.inf |   39 +
 PrmPkg/Samples/PrmSampleAcpiParameterBufferModule/PrmSampleAcpiParameterBufferModule.inf                                                  |   41 +
 PrmPkg/Samples/PrmSampleContextBufferModule/Include/StaticData.h                                                                          |   24 +
 PrmPkg/Samples/PrmSampleContextBufferModule/Library/DxeContextBufferModuleConfigLib/DxeContextBufferModuleConfigLib.inf                   |   39 +
 PrmPkg/Samples/PrmSampleContextBufferModule/PrmSampleContextBufferModule.inf                                                              |   44 +
 PrmPkg/Samples/PrmSampleHardwareAccessModule/Hpet.h                                                                                       |  108 ++
 PrmPkg/Samples/PrmSampleHardwareAccessModule/Library/DxeHardwareAccessModuleConfigLib/DxeHardwareAccessModuleConfigLib.inf                |   39 +
 PrmPkg/Samples/PrmSampleHardwareAccessModule/PrmSampleHardwareAccessModule.inf                                                            |   43 +
 PrmPkg/Samples/Readme.md                                                                                                                  |  146 ++
 PrmPkg/Test/PrmPkgHostTest.dsc                                                                                                            |   39 +
 PrmPkg/Test/UnitTest/Library/UefiBootServicesTableLibUnitTest/UefiBootServicesTableLibTest.uni                                            |   12 +
 PrmPkg/Test/UnitTest/Library/UefiBootServicesTableLibUnitTest/UefiBootServicesTableLibUnitTest.h                                          | 1042 ++++++++++++
 PrmPkg/Test/UnitTest/Library/UefiBootServicesTableLibUnitTest/UefiBootServicesTableLibUnitTest.inf                                        |   46 +
 PrmPkg/Test/UnitTest/Library/UefiBootServicesTableLibUnitTest/UefiBootServicesTableLibUnitTestProtocol.h                                  |  120 ++
 71 files changed, 11096 insertions(+), 1 deletion(-)
 create mode 100644 PrmPkg/Application/PrmInfo/PrmInfo.c
 create mode 100644 PrmPkg/Library/DxePrmContextBufferLib/DxePrmContextBufferLib.c
 create mode 100644 PrmPkg/Library/DxePrmContextBufferLib/UnitTest/DxePrmContextBufferLibUnitTest.c
 create mode 100644 PrmPkg/Library/DxePrmModuleDiscoveryLib/DxePrmModuleDiscoveryLib.c
 create mode 100644 PrmPkg/Library/DxePrmModuleDiscoveryLib/UnitTest/DxePrmModuleDiscoveryLibUnitTest.c
 create mode 100644 PrmPkg/Library/DxePrmPeCoffLib/DxePrmPeCoffLib.c
 create mode 100644 PrmPkg/PrmConfigDxe/PrmConfigDxe.c
 create mode 100644 PrmPkg/PrmLoaderDxe/PrmLoaderDxe.c
 create mode 100644 PrmPkg/PrmSsdtInstallDxe/PrmSsdtInstallDxe.c
 create mode 100644 PrmPkg/Samples/PrmSampleAcpiParameterBufferModule/Library/DxeAcpiParameterBufferModuleConfigLib/DxeAcpiParameterBufferModuleConfigLib.c
 create mode 100644 PrmPkg/Samples/PrmSampleAcpiParameterBufferModule/PrmSampleAcpiParameterBufferModule.c
 create mode 100644 PrmPkg/Samples/PrmSampleContextBufferModule/Library/DxeContextBufferModuleConfigLib/DxeContextBufferModuleConfigLib.c
 create mode 100644 PrmPkg/Samples/PrmSampleContextBufferModule/PrmSampleContextBufferModule.c
 create mode 100644 PrmPkg/Samples/PrmSampleHardwareAccessModule/Library/DxeHardwareAccessModuleConfigLib/DxeHardwareAccessModuleConfigLib.c
 create mode 100644 PrmPkg/Samples/PrmSampleHardwareAccessModule/PrmSampleHardwareAccessModule.c
 create mode 100644 PrmPkg/Test/UnitTest/Library/UefiBootServicesTableLibUnitTest/UefiBootServicesTableLibUnitTest.c
 create mode 100644 PrmPkg/Test/UnitTest/Library/UefiBootServicesTableLibUnitTest/UefiBootServicesTableLibUnitTestEventTimer.c
 create mode 100644 PrmPkg/Test/UnitTest/Library/UefiBootServicesTableLibUnitTest/UefiBootServicesTableLibUnitTestImage.c
 create mode 100644 PrmPkg/Test/UnitTest/Library/UefiBootServicesTableLibUnitTest/UefiBootServicesTableLibUnitTestMemory.c
 create mode 100644 PrmPkg/Test/UnitTest/Library/UefiBootServicesTableLibUnitTest/UefiBootServicesTableLibUnitTestMisc.c
 create mode 100644 PrmPkg/Test/UnitTest/Library/UefiBootServicesTableLibUnitTest/UefiBootServicesTableLibUnitTestProtocol.c
 create mode 100644 PrmPkg/Test/UnitTest/Library/UefiBootServicesTableLibUnitTest/UefiBootServicesTableLibUnitTestTpl.c
 create mode 100644 PrmPkg/Application/PrmInfo/PrmInfo.h
 create mode 100644 PrmPkg/Application/PrmInfo/PrmInfo.inf
 create mode 100644 PrmPkg/Application/PrmInfo/PrmInfo.uni
 create mode 100644 PrmPkg/Application/PrmInfo/PrmInfoExtra.uni
 create mode 100644 PrmPkg/Application/PrmInfo/PrmInfoStrings.uni
 create mode 100644 PrmPkg/Include/Library/PrmContextBufferLib.h
 create mode 100644 PrmPkg/Include/Library/PrmModuleDiscoveryLib.h
 create mode 100644 PrmPkg/Include/Library/PrmPeCoffLib.h
 create mode 100644 PrmPkg/Include/Prm.h
 create mode 100644 PrmPkg/Include/PrmContextBuffer.h
 create mode 100644 PrmPkg/Include/PrmDataBuffer.h
 create mode 100644 PrmPkg/Include/PrmExportDescriptor.h
 create mode 100644 PrmPkg/Include/PrmMmio.h
 create mode 100644 PrmPkg/Include/PrmModule.h
 create mode 100644 PrmPkg/Include/PrmModuleImageContext.h
 create mode 100644 PrmPkg/Include/Protocol/PrmConfig.h
 create mode 100644 PrmPkg/Library/DxePrmContextBufferLib/DxePrmContextBufferLib.inf
 create mode 100644 PrmPkg/Library/DxePrmContextBufferLib/UnitTest/DxePrmContextBufferLibUnitTestHost.inf
 create mode 100644 PrmPkg/Library/DxePrmModuleDiscoveryLib/DxePrmModuleDiscoveryLib.inf
 create mode 100644 PrmPkg/Library/DxePrmModuleDiscoveryLib/PrmModuleDiscovery.h
 create mode 100644 PrmPkg/Library/DxePrmModuleDiscoveryLib/UnitTest/DxePrmModuleDiscoveryLibUnitTestHost.inf
 create mode 100644 PrmPkg/Library/DxePrmPeCoffLib/DxePrmPeCoffLib.inf
 create mode 100644 PrmPkg/PrmConfigDxe/PrmConfigDxe.inf
 create mode 100644 PrmPkg/PrmLoaderDxe/PrmAcpiTable.h
 create mode 100644 PrmPkg/PrmLoaderDxe/PrmLoaderDxe.inf
 create mode 100644 PrmPkg/PrmPkg.ci.yaml
 create mode 100644 PrmPkg/PrmPkg.dec
 create mode 100644 PrmPkg/PrmPkg.dsc
 create mode 100644 PrmPkg/PrmPkg.uni
 create mode 100644 PrmPkg/PrmSsdtInstallDxe/Prm.asl
 create mode 100644 PrmPkg/PrmSsdtInstallDxe/PrmSsdtInstallDxe.inf
 create mode 100644 PrmPkg/Readme.md
 create mode 100644 PrmPkg/Samples/PrmSampleAcpiParameterBufferModule/Library/DxeAcpiParameterBufferModuleConfigLib/DxeAcpiParameterBufferModuleConfigLib.inf
 create mode 100644 PrmPkg/Samples/PrmSampleAcpiParameterBufferModule/PrmSampleAcpiParameterBufferModule.inf
 create mode 100644 PrmPkg/Samples/PrmSampleContextBufferModule/Include/StaticData.h
 create mode 100644 PrmPkg/Samples/PrmSampleContextBufferModule/Library/DxeContextBufferModuleConfigLib/DxeContextBufferModuleConfigLib.inf
 create mode 100644 PrmPkg/Samples/PrmSampleContextBufferModule/PrmSampleContextBufferModule.inf
 create mode 100644 PrmPkg/Samples/PrmSampleHardwareAccessModule/Hpet.h
 create mode 100644 PrmPkg/Samples/PrmSampleHardwareAccessModule/Library/DxeHardwareAccessModuleConfigLib/DxeHardwareAccessModuleConfigLib.inf
 create mode 100644 PrmPkg/Samples/PrmSampleHardwareAccessModule/PrmSampleHardwareAccessModule.inf
 create mode 100644 PrmPkg/Samples/Readme.md
 create mode 100644 PrmPkg/Test/PrmPkgHostTest.dsc
 create mode 100644 PrmPkg/Test/UnitTest/Library/UefiBootServicesTableLibUnitTest/UefiBootServicesTableLibTest.uni
 create mode 100644 PrmPkg/Test/UnitTest/Library/UefiBootServicesTableLibUnitTest/UefiBootServicesTableLibUnitTest.h
 create mode 100644 PrmPkg/Test/UnitTest/Library/UefiBootServicesTableLibUnitTest/UefiBootServicesTableLibUnitTest.inf
 create mode 100644 PrmPkg/Test/UnitTest/Library/UefiBootServicesTableLibUnitTest/UefiBootServicesTableLibUnitTestProtocol.h

-- 
2.28.0.windows.1



-=-=-=-=-=-=-=-=-=-=-=-
Groups.io Links: You receive all messages sent to this group.
View/Reply Online (#87842): https://edk2.groups.io/g/devel/message/87842
Mute This Topic: https://groups.io/mt/89955942/1813853
Group Owner: devel+owner at edk2.groups.io
Unsubscribe: https://edk2.groups.io/g/devel/unsub [edk2-devel-archive at redhat.com]
-=-=-=-=-=-=-=-=-=-=-=-




More information about the edk2-devel-archive mailing list