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

Michael Kubacki posted 41 patches 2 years, 1 month ago
Only 39 patches received!
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
[edk2-devel] [PATCH v1 00/41] Add PrmPkg
Posted by Michael Kubacki 2 years, 1 month ago
From: Michael Kubacki <michael.kubacki@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@linux.microsoft.com>
* Nate DeSimone <nathaniel.l.desimone@intel.com>

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

Cc: Andrew Fish <afish@apple.com>
Cc: Kang Gao <kang.gao@intel.com>
Cc: Michael D Kinney <michael.d.kinney@intel.com>
Cc: Michael Kubacki <michael.kubacki@microsoft.com>
Cc: Leif Lindholm <leif@nuviainc.com>
Cc: Benjamin You <benjamin.you@intel.com>
Cc: Liu Yun <yun.y.liu@intel.com>
Cc: Ankit Sinha <ankit.sinha@intel.com>
Cc: Nate DeSimone <nathaniel.l.desimone@intel.com>
Signed-off-by: Michael Kubacki <michael.kubacki@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/1787277
Group Owner: devel+owner@edk2.groups.io
Unsubscribe: https://edk2.groups.io/g/devel/unsub [importer@patchew.org]
-=-=-=-=-=-=-=-=-=-=-=-
Re: [edk2-devel] [PATCH v1 00/41] Add PrmPkg
Posted by Sinha, Ankit 2 years, 1 month ago
Reviewed-by: Ankit Sinha <ankit.sinha@intel.com>

> -----Original Message-----
> From: devel@edk2.groups.io <devel@edk2.groups.io> On Behalf Of Michael
> Kubacki
> Sent: Tuesday, March 22, 2022 9:19 AM
> To: devel@edk2.groups.io
> Cc: Andrew Fish <afish@apple.com>; Gao, Kang <kang.gao@intel.com>;
> Kinney, Michael D <michael.d.kinney@intel.com>; Kubacki, Michael
> <michael.kubacki@microsoft.com>; Leif Lindholm <leif@nuviainc.com>; You,
> Benjamin <benjamin.you@intel.com>; Liu, Yun Y <yun.y.liu@intel.com>;
> Sinha, Ankit <ankit.sinha@intel.com>; Desimone, Nathaniel L
> <nathaniel.l.desimone@intel.com>
> Subject: [edk2-devel] [PATCH v1 00/41] Add PrmPkg
> 
> From: Michael Kubacki <michael.kubacki@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%20Mec
> hanism%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/cefc7ca46235f01d5233e3abd4b79
> 452af01d9e9
> 
> 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@linux.microsoft.com>
> * Nate DeSimone <nathaniel.l.desimone@intel.com>
> 
> The proposed reviewers of PrmPkg are:
> * Ankit Sinha <ankit.sinha@intel.com>
> 
> Cc: Andrew Fish <afish@apple.com>
> Cc: Kang Gao <kang.gao@intel.com>
> Cc: Michael D Kinney <michael.d.kinney@intel.com>
> Cc: Michael Kubacki <michael.kubacki@microsoft.com>
> Cc: Leif Lindholm <leif@nuviainc.com>
> Cc: Benjamin You <benjamin.you@intel.com>
> Cc: Liu Yun <yun.y.liu@intel.com>
> Cc: Ankit Sinha <ankit.sinha@intel.com>
> Cc: Nate DeSimone <nathaniel.l.desimone@intel.com>
> Signed-off-by: Michael Kubacki <michael.kubacki@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/DxePrmContextBufferLi
> bUnitTest.c                                                           |  649 ++++++++
>  PrmPkg/Library/DxePrmModuleDiscoveryLib/DxePrmModuleDiscoveryLib.c
> |  386 +++++
> 
> PrmPkg/Library/DxePrmModuleDiscoveryLib/UnitTest/DxePrmModuleDisco
> veryLibUnitTest.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/DxeAcpiP
> arameterBufferModuleConfigLib/DxeAcpiParameterBufferModuleConfigLib.
> c   |  127 ++
> 
> PrmPkg/Samples/PrmSampleAcpiParameterBufferModule/PrmSampleAcpiP
> arameterBufferModule.c                                                    |   78 +
> 
> PrmPkg/Samples/PrmSampleContextBufferModule/Library/DxeContextBuff
> erModuleConfigLib/DxeContextBufferModuleConfigLib.c                     |  218
> +++
> 
> PrmPkg/Samples/PrmSampleContextBufferModule/PrmSampleContextBuff
> erModule.c                                                                |   84 +
> 
> PrmPkg/Samples/PrmSampleHardwareAccessModule/Library/DxeHardware
> AccessModuleConfigLib/DxeHardwareAccessModuleConfigLib.c                  |
> 108 ++
> 
> PrmPkg/Samples/PrmSampleHardwareAccessModule/PrmSampleHardware
> AccessModule.c                                                              |  335 ++++
> 
> PrmPkg/Test/UnitTest/Library/UefiBootServicesTableLibUnitTest/UefiBootS
> ervicesTableLibUnitTest.c                                          |  119 ++
> 
> PrmPkg/Test/UnitTest/Library/UefiBootServicesTableLibUnitTest/UefiBootS
> ervicesTableLibUnitTestEventTimer.c                                |  180 +++
> 
> PrmPkg/Test/UnitTest/Library/UefiBootServicesTableLibUnitTest/UefiBootS
> ervicesTableLibUnitTestImage.c                                     |  163 ++
> 
> PrmPkg/Test/UnitTest/Library/UefiBootServicesTableLibUnitTest/UefiBootS
> ervicesTableLibUnitTestMemory.c                                    |  145 ++
> 
> PrmPkg/Test/UnitTest/Library/UefiBootServicesTableLibUnitTest/UefiBootS
> ervicesTableLibUnitTestMisc.c                                      |  198 +++
> 
> PrmPkg/Test/UnitTest/Library/UefiBootServicesTableLibUnitTest/UefiBootS
> ervicesTableLibUnitTestProtocol.c                                  | 1650
> ++++++++++++++++++++
> 
> PrmPkg/Test/UnitTest/Library/UefiBootServicesTableLibUnitTest/UefiBootS
> ervicesTableLibUnitTestTpl.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/DxePrmContextBufferLi
> bUnitTestHost.inf                                                     |   46 +
> 
> PrmPkg/Library/DxePrmModuleDiscoveryLib/DxePrmModuleDiscoveryLib.in
> f                                                                      |   41 +
>  PrmPkg/Library/DxePrmModuleDiscoveryLib/PrmModuleDiscovery.h
> |   39 +
> 
> PrmPkg/Library/DxePrmModuleDiscoveryLib/UnitTest/DxePrmModuleDisco
> veryLibUnitTestHost.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/DxeAcpiP
> arameterBufferModuleConfigLib/DxeAcpiParameterBufferModuleConfigLib.
> inf |   39 +
> 
> PrmPkg/Samples/PrmSampleAcpiParameterBufferModule/PrmSampleAcpiP
> arameterBufferModule.inf                                                  |   41 +
>  PrmPkg/Samples/PrmSampleContextBufferModule/Include/StaticData.h
> |   24 +
> 
> PrmPkg/Samples/PrmSampleContextBufferModule/Library/DxeContextBuff
> erModuleConfigLib/DxeContextBufferModuleConfigLib.inf                   |   39 +
> 
> PrmPkg/Samples/PrmSampleContextBufferModule/PrmSampleContextBuff
> erModule.inf                                                              |   44 +
>  PrmPkg/Samples/PrmSampleHardwareAccessModule/Hpet.h
> |  108 ++
> 
> PrmPkg/Samples/PrmSampleHardwareAccessModule/Library/DxeHardware
> AccessModuleConfigLib/DxeHardwareAccessModuleConfigLib.inf                |
> 39 +
> 
> PrmPkg/Samples/PrmSampleHardwareAccessModule/PrmSampleHardware
> AccessModule.inf                                                            |   43 +
>  PrmPkg/Samples/Readme.md
> |  146 ++
>  PrmPkg/Test/PrmPkgHostTest.dsc
> |   39 +
> 
> PrmPkg/Test/UnitTest/Library/UefiBootServicesTableLibUnitTest/UefiBootS
> ervicesTableLibTest.uni                                            |   12 +
> 
> PrmPkg/Test/UnitTest/Library/UefiBootServicesTableLibUnitTest/UefiBootS
> ervicesTableLibUnitTest.h                                          | 1042 ++++++++++++
> 
> PrmPkg/Test/UnitTest/Library/UefiBootServicesTableLibUnitTest/UefiBootS
> ervicesTableLibUnitTest.inf                                        |   46 +
> 
> PrmPkg/Test/UnitTest/Library/UefiBootServicesTableLibUnitTest/UefiBootS
> ervicesTableLibUnitTestProtocol.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/DxePrmContextBufferLi
> bUnitTest.c
>  create mode 100644
> PrmPkg/Library/DxePrmModuleDiscoveryLib/DxePrmModuleDiscoveryLib.c
>  create mode 100644
> PrmPkg/Library/DxePrmModuleDiscoveryLib/UnitTest/DxePrmModuleDisco
> veryLibUnitTest.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/DxeAcpiP
> arameterBufferModuleConfigLib/DxeAcpiParameterBufferModuleConfigLib.
> c
>  create mode 100644
> PrmPkg/Samples/PrmSampleAcpiParameterBufferModule/PrmSampleAcpiP
> arameterBufferModule.c
>  create mode 100644
> PrmPkg/Samples/PrmSampleContextBufferModule/Library/DxeContextBuff
> erModuleConfigLib/DxeContextBufferModuleConfigLib.c
>  create mode 100644
> PrmPkg/Samples/PrmSampleContextBufferModule/PrmSampleContextBuff
> erModule.c
>  create mode 100644
> PrmPkg/Samples/PrmSampleHardwareAccessModule/Library/DxeHardware
> AccessModuleConfigLib/DxeHardwareAccessModuleConfigLib.c
>  create mode 100644
> PrmPkg/Samples/PrmSampleHardwareAccessModule/PrmSampleHardware
> AccessModule.c
>  create mode 100644
> PrmPkg/Test/UnitTest/Library/UefiBootServicesTableLibUnitTest/UefiBootS
> ervicesTableLibUnitTest.c
>  create mode 100644
> PrmPkg/Test/UnitTest/Library/UefiBootServicesTableLibUnitTest/UefiBootS
> ervicesTableLibUnitTestEventTimer.c
>  create mode 100644
> PrmPkg/Test/UnitTest/Library/UefiBootServicesTableLibUnitTest/UefiBootS
> ervicesTableLibUnitTestImage.c
>  create mode 100644
> PrmPkg/Test/UnitTest/Library/UefiBootServicesTableLibUnitTest/UefiBootS
> ervicesTableLibUnitTestMemory.c
>  create mode 100644
> PrmPkg/Test/UnitTest/Library/UefiBootServicesTableLibUnitTest/UefiBootS
> ervicesTableLibUnitTestMisc.c
>  create mode 100644
> PrmPkg/Test/UnitTest/Library/UefiBootServicesTableLibUnitTest/UefiBootS
> ervicesTableLibUnitTestProtocol.c
>  create mode 100644
> PrmPkg/Test/UnitTest/Library/UefiBootServicesTableLibUnitTest/UefiBootS
> ervicesTableLibUnitTestTpl.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/DxePrmContextBufferLi
> bUnitTestHost.inf
>  create mode 100644
> PrmPkg/Library/DxePrmModuleDiscoveryLib/DxePrmModuleDiscoveryLib.in
> f
>  create mode 100644
> PrmPkg/Library/DxePrmModuleDiscoveryLib/PrmModuleDiscovery.h
>  create mode 100644
> PrmPkg/Library/DxePrmModuleDiscoveryLib/UnitTest/DxePrmModuleDisco
> veryLibUnitTestHost.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/DxeAcpiP
> arameterBufferModuleConfigLib/DxeAcpiParameterBufferModuleConfigLib.
> inf
>  create mode 100644
> PrmPkg/Samples/PrmSampleAcpiParameterBufferModule/PrmSampleAcpiP
> arameterBufferModule.inf
>  create mode 100644
> PrmPkg/Samples/PrmSampleContextBufferModule/Include/StaticData.h
>  create mode 100644
> PrmPkg/Samples/PrmSampleContextBufferModule/Library/DxeContextBuff
> erModuleConfigLib/DxeContextBufferModuleConfigLib.inf
>  create mode 100644
> PrmPkg/Samples/PrmSampleContextBufferModule/PrmSampleContextBuff
> erModule.inf
>  create mode 100644
> PrmPkg/Samples/PrmSampleHardwareAccessModule/Hpet.h
>  create mode 100644
> PrmPkg/Samples/PrmSampleHardwareAccessModule/Library/DxeHardware
> AccessModuleConfigLib/DxeHardwareAccessModuleConfigLib.inf
>  create mode 100644
> PrmPkg/Samples/PrmSampleHardwareAccessModule/PrmSampleHardware
> AccessModule.inf
>  create mode 100644 PrmPkg/Samples/Readme.md  create mode 100644
> PrmPkg/Test/PrmPkgHostTest.dsc  create mode 100644
> PrmPkg/Test/UnitTest/Library/UefiBootServicesTableLibUnitTest/UefiBootS
> ervicesTableLibTest.uni
>  create mode 100644
> PrmPkg/Test/UnitTest/Library/UefiBootServicesTableLibUnitTest/UefiBootS
> ervicesTableLibUnitTest.h
>  create mode 100644
> PrmPkg/Test/UnitTest/Library/UefiBootServicesTableLibUnitTest/UefiBootS
> ervicesTableLibUnitTest.inf
>  create mode 100644
> PrmPkg/Test/UnitTest/Library/UefiBootServicesTableLibUnitTest/UefiBootS
> ervicesTableLibUnitTestProtocol.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/1772825
> Group Owner: devel+owner@edk2.groups.io
> Unsubscribe: https://edk2.groups.io/g/devel/unsub [ankit.sinha@intel.com]
> -=-=-=-=-=-=
> 



-=-=-=-=-=-=-=-=-=-=-=-
Groups.io Links: You receive all messages sent to this group.
View/Reply Online (#88177): https://edk2.groups.io/g/devel/message/88177
Mute This Topic: https://groups.io/mt/89955942/1787277
Group Owner: devel+owner@edk2.groups.io
Unsubscribe: https://edk2.groups.io/g/devel/unsub [importer@patchew.org]
-=-=-=-=-=-=-=-=-=-=-=-
回复: [edk2-devel] [PATCH v1 00/41] Add PrmPkg
Posted by gaoliming 2 years, 1 month ago
Acked-by: Liming Gao <gaoliming@byosoft.com.cn>

> -----邮件原件-----
> 发件人: devel@edk2.groups.io <devel@edk2.groups.io> 代表 Sinha, Ankit
> 发送时间: 2022年3月30日 0:29
> 收件人: devel@edk2.groups.io; mikuback@linux.microsoft.com
> 抄送: Andrew Fish <afish@apple.com>; Gao, Kang <kang.gao@intel.com>;
> Kinney, Michael D <michael.d.kinney@intel.com>; Kubacki, Michael
> <michael.kubacki@microsoft.com>; Leif Lindholm <leif@nuviainc.com>; You,
> Benjamin <benjamin.you@intel.com>; Liu, Yun Y <yun.y.liu@intel.com>;
> Desimone, Nathaniel L <nathaniel.l.desimone@intel.com>
> 主题: Re: [edk2-devel] [PATCH v1 00/41] Add PrmPkg
> 
> Reviewed-by: Ankit Sinha <ankit.sinha@intel.com>
> 
> > -----Original Message-----
> > From: devel@edk2.groups.io <devel@edk2.groups.io> On Behalf Of Michael
> > Kubacki
> > Sent: Tuesday, March 22, 2022 9:19 AM
> > To: devel@edk2.groups.io
> > Cc: Andrew Fish <afish@apple.com>; Gao, Kang <kang.gao@intel.com>;
> > Kinney, Michael D <michael.d.kinney@intel.com>; Kubacki, Michael
> > <michael.kubacki@microsoft.com>; Leif Lindholm <leif@nuviainc.com>;
> You,
> > Benjamin <benjamin.you@intel.com>; Liu, Yun Y <yun.y.liu@intel.com>;
> > Sinha, Ankit <ankit.sinha@intel.com>; Desimone, Nathaniel L
> > <nathaniel.l.desimone@intel.com>
> > Subject: [edk2-devel] [PATCH v1 00/41] Add PrmPkg
> >
> > From: Michael Kubacki <michael.kubacki@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%20Mec
> > hanism%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/cefc7ca46235f01d5233e3abd4b79
> > 452af01d9e9
> >
> > 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@linux.microsoft.com>
> > * Nate DeSimone <nathaniel.l.desimone@intel.com>
> >
> > The proposed reviewers of PrmPkg are:
> > * Ankit Sinha <ankit.sinha@intel.com>
> >
> > Cc: Andrew Fish <afish@apple.com>
> > Cc: Kang Gao <kang.gao@intel.com>
> > Cc: Michael D Kinney <michael.d.kinney@intel.com>
> > Cc: Michael Kubacki <michael.kubacki@microsoft.com>
> > Cc: Leif Lindholm <leif@nuviainc.com>
> > Cc: Benjamin You <benjamin.you@intel.com>
> > Cc: Liu Yun <yun.y.liu@intel.com>
> > Cc: Ankit Sinha <ankit.sinha@intel.com>
> > Cc: Nate DeSimone <nathaniel.l.desimone@intel.com>
> > Signed-off-by: Michael Kubacki <michael.kubacki@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/DxePrmContextBufferLi
> > bUnitTest.c
> |  649 ++++++++
> >
> PrmPkg/Library/DxePrmModuleDiscoveryLib/DxePrmModuleDiscoveryLib.c
> > |  386 +++++
> >
> > PrmPkg/Library/DxePrmModuleDiscoveryLib/UnitTest/DxePrmModuleDisco
> > veryLibUnitTest.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/DxeAcpiP
> > arameterBufferModuleConfigLib/DxeAcpiParameterBufferModuleConfigLib.
> > c   |  127 ++
> >
> > PrmPkg/Samples/PrmSampleAcpiParameterBufferModule/PrmSampleAcpiP
> > arameterBufferModule.c
> |   78 +
> >
> > PrmPkg/Samples/PrmSampleContextBufferModule/Library/DxeContextBuff
> > erModuleConfigLib/DxeContextBufferModuleConfigLib.c
> |  218
> > +++
> >
> > PrmPkg/Samples/PrmSampleContextBufferModule/PrmSampleContextBuff
> > erModule.c
> |   84 +
> >
> >
> PrmPkg/Samples/PrmSampleHardwareAccessModule/Library/DxeHardware
> > AccessModuleConfigLib/DxeHardwareAccessModuleConfigLib.c
> |
> > 108 ++
> >
> > PrmPkg/Samples/PrmSampleHardwareAccessModule/PrmSampleHardware
> > AccessModule.c
> |  335 ++++
> >
> > PrmPkg/Test/UnitTest/Library/UefiBootServicesTableLibUnitTest/UefiBootS
> > ervicesTableLibUnitTest.c
> |  119 ++
> >
> > PrmPkg/Test/UnitTest/Library/UefiBootServicesTableLibUnitTest/UefiBootS
> > ervicesTableLibUnitTestEventTimer.c
> |  180 +++
> >
> > PrmPkg/Test/UnitTest/Library/UefiBootServicesTableLibUnitTest/UefiBootS
> > ervicesTableLibUnitTestImage.c
> |  163 ++
> >
> > PrmPkg/Test/UnitTest/Library/UefiBootServicesTableLibUnitTest/UefiBootS
> > ervicesTableLibUnitTestMemory.c
> |  145 ++
> >
> > PrmPkg/Test/UnitTest/Library/UefiBootServicesTableLibUnitTest/UefiBootS
> > ervicesTableLibUnitTestMisc.c
> |  198 +++
> >
> > PrmPkg/Test/UnitTest/Library/UefiBootServicesTableLibUnitTest/UefiBootS
> > ervicesTableLibUnitTestProtocol.c
> | 1650
> > ++++++++++++++++++++
> >
> > PrmPkg/Test/UnitTest/Library/UefiBootServicesTableLibUnitTest/UefiBootS
> > ervicesTableLibUnitTestTpl.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/DxePrmContextBufferLi
> > bUnitTestHost.inf
> |   46 +
> >
> > PrmPkg/Library/DxePrmModuleDiscoveryLib/DxePrmModuleDiscoveryLib.in
> > f
> |   41 +
> >  PrmPkg/Library/DxePrmModuleDiscoveryLib/PrmModuleDiscovery.h
> > |   39 +
> >
> > PrmPkg/Library/DxePrmModuleDiscoveryLib/UnitTest/DxePrmModuleDisco
> > veryLibUnitTestHost.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/DxeAcpiP
> > arameterBufferModuleConfigLib/DxeAcpiParameterBufferModuleConfigLib.
> > inf |   39 +
> >
> > PrmPkg/Samples/PrmSampleAcpiParameterBufferModule/PrmSampleAcpiP
> > arameterBufferModule.inf
> |   41 +
> >  PrmPkg/Samples/PrmSampleContextBufferModule/Include/StaticData.h
> > |   24 +
> >
> > PrmPkg/Samples/PrmSampleContextBufferModule/Library/DxeContextBuff
> > erModuleConfigLib/DxeContextBufferModuleConfigLib.inf
> |   39 +
> >
> > PrmPkg/Samples/PrmSampleContextBufferModule/PrmSampleContextBuff
> > erModule.inf
> |   44 +
> >  PrmPkg/Samples/PrmSampleHardwareAccessModule/Hpet.h
> > |  108 ++
> >
> >
> PrmPkg/Samples/PrmSampleHardwareAccessModule/Library/DxeHardware
> > AccessModuleConfigLib/DxeHardwareAccessModuleConfigLib.inf
> |
> > 39 +
> >
> > PrmPkg/Samples/PrmSampleHardwareAccessModule/PrmSampleHardware
> > AccessModule.inf
> |   43 +
> >  PrmPkg/Samples/Readme.md
> > |  146 ++
> >  PrmPkg/Test/PrmPkgHostTest.dsc
> > |   39 +
> >
> > PrmPkg/Test/UnitTest/Library/UefiBootServicesTableLibUnitTest/UefiBootS
> > ervicesTableLibTest.uni
> |   12 +
> >
> > PrmPkg/Test/UnitTest/Library/UefiBootServicesTableLibUnitTest/UefiBootS
> > ervicesTableLibUnitTest.h
> | 1042 ++++++++++++
> >
> > PrmPkg/Test/UnitTest/Library/UefiBootServicesTableLibUnitTest/UefiBootS
> > ervicesTableLibUnitTest.inf
> |   46 +
> >
> > PrmPkg/Test/UnitTest/Library/UefiBootServicesTableLibUnitTest/UefiBootS
> > ervicesTableLibUnitTestProtocol.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/DxePrmContextBufferLi
> > bUnitTest.c
> >  create mode 100644
> > PrmPkg/Library/DxePrmModuleDiscoveryLib/DxePrmModuleDiscoveryLib.c
> >  create mode 100644
> > PrmPkg/Library/DxePrmModuleDiscoveryLib/UnitTest/DxePrmModuleDisco
> > veryLibUnitTest.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/DxeAcpiP
> > arameterBufferModuleConfigLib/DxeAcpiParameterBufferModuleConfigLib.
> > c
> >  create mode 100644
> > PrmPkg/Samples/PrmSampleAcpiParameterBufferModule/PrmSampleAcpiP
> > arameterBufferModule.c
> >  create mode 100644
> > PrmPkg/Samples/PrmSampleContextBufferModule/Library/DxeContextBuff
> > erModuleConfigLib/DxeContextBufferModuleConfigLib.c
> >  create mode 100644
> > PrmPkg/Samples/PrmSampleContextBufferModule/PrmSampleContextBuff
> > erModule.c
> >  create mode 100644
> >
> PrmPkg/Samples/PrmSampleHardwareAccessModule/Library/DxeHardware
> > AccessModuleConfigLib/DxeHardwareAccessModuleConfigLib.c
> >  create mode 100644
> > PrmPkg/Samples/PrmSampleHardwareAccessModule/PrmSampleHardware
> > AccessModule.c
> >  create mode 100644
> > PrmPkg/Test/UnitTest/Library/UefiBootServicesTableLibUnitTest/UefiBootS
> > ervicesTableLibUnitTest.c
> >  create mode 100644
> > PrmPkg/Test/UnitTest/Library/UefiBootServicesTableLibUnitTest/UefiBootS
> > ervicesTableLibUnitTestEventTimer.c
> >  create mode 100644
> > PrmPkg/Test/UnitTest/Library/UefiBootServicesTableLibUnitTest/UefiBootS
> > ervicesTableLibUnitTestImage.c
> >  create mode 100644
> > PrmPkg/Test/UnitTest/Library/UefiBootServicesTableLibUnitTest/UefiBootS
> > ervicesTableLibUnitTestMemory.c
> >  create mode 100644
> > PrmPkg/Test/UnitTest/Library/UefiBootServicesTableLibUnitTest/UefiBootS
> > ervicesTableLibUnitTestMisc.c
> >  create mode 100644
> > PrmPkg/Test/UnitTest/Library/UefiBootServicesTableLibUnitTest/UefiBootS
> > ervicesTableLibUnitTestProtocol.c
> >  create mode 100644
> > PrmPkg/Test/UnitTest/Library/UefiBootServicesTableLibUnitTest/UefiBootS
> > ervicesTableLibUnitTestTpl.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/DxePrmContextBufferLi
> > bUnitTestHost.inf
> >  create mode 100644
> > PrmPkg/Library/DxePrmModuleDiscoveryLib/DxePrmModuleDiscoveryLib.in
> > f
> >  create mode 100644
> > PrmPkg/Library/DxePrmModuleDiscoveryLib/PrmModuleDiscovery.h
> >  create mode 100644
> > PrmPkg/Library/DxePrmModuleDiscoveryLib/UnitTest/DxePrmModuleDisco
> > veryLibUnitTestHost.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/DxeAcpiP
> > arameterBufferModuleConfigLib/DxeAcpiParameterBufferModuleConfigLib.
> > inf
> >  create mode 100644
> > PrmPkg/Samples/PrmSampleAcpiParameterBufferModule/PrmSampleAcpiP
> > arameterBufferModule.inf
> >  create mode 100644
> > PrmPkg/Samples/PrmSampleContextBufferModule/Include/StaticData.h
> >  create mode 100644
> > PrmPkg/Samples/PrmSampleContextBufferModule/Library/DxeContextBuff
> > erModuleConfigLib/DxeContextBufferModuleConfigLib.inf
> >  create mode 100644
> > PrmPkg/Samples/PrmSampleContextBufferModule/PrmSampleContextBuff
> > erModule.inf
> >  create mode 100644
> > PrmPkg/Samples/PrmSampleHardwareAccessModule/Hpet.h
> >  create mode 100644
> >
> PrmPkg/Samples/PrmSampleHardwareAccessModule/Library/DxeHardware
> > AccessModuleConfigLib/DxeHardwareAccessModuleConfigLib.inf
> >  create mode 100644
> > PrmPkg/Samples/PrmSampleHardwareAccessModule/PrmSampleHardware
> > AccessModule.inf
> >  create mode 100644 PrmPkg/Samples/Readme.md  create mode
> 100644
> > PrmPkg/Test/PrmPkgHostTest.dsc  create mode 100644
> > PrmPkg/Test/UnitTest/Library/UefiBootServicesTableLibUnitTest/UefiBootS
> > ervicesTableLibTest.uni
> >  create mode 100644
> > PrmPkg/Test/UnitTest/Library/UefiBootServicesTableLibUnitTest/UefiBootS
> > ervicesTableLibUnitTest.h
> >  create mode 100644
> > PrmPkg/Test/UnitTest/Library/UefiBootServicesTableLibUnitTest/UefiBootS
> > ervicesTableLibUnitTest.inf
> >  create mode 100644
> > PrmPkg/Test/UnitTest/Library/UefiBootServicesTableLibUnitTest/UefiBootS
> > ervicesTableLibUnitTestProtocol.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/1772825
> > Group Owner: devel+owner@edk2.groups.io
> > Unsubscribe: https://edk2.groups.io/g/devel/unsub
> [ankit.sinha@intel.com]
> > -=-=-=-=-=-=
> >
> 
> 
> 
> 
> 





-=-=-=-=-=-=-=-=-=-=-=-
Groups.io Links: You receive all messages sent to this group.
View/Reply Online (#88280): https://edk2.groups.io/g/devel/message/88280
Mute This Topic: https://groups.io/mt/90146247/1787277
Group Owner: devel+owner@edk2.groups.io
Unsubscribe: https://edk2.groups.io/g/devel/unsub [importer@patchew.org]
-=-=-=-=-=-=-=-=-=-=-=-
回复: [edk2-devel] [PATCH v1 00/41] Add PrmPkg
Posted by gaoliming 2 years, 1 month ago
Michael:
  Please also update Maintainers.txt to specify maintainer for new PrmPkg. 

Thanks
Liming
> -----邮件原件-----
> 发件人: devel@edk2.groups.io <devel@edk2.groups.io> 代表 Michael
> Kubacki
> 发送时间: 2022年3月23日 0:19
> 收件人: devel@edk2.groups.io
> 抄送: Andrew Fish <afish@apple.com>; Kang Gao <kang.gao@intel.com>;
> Michael D Kinney <michael.d.kinney@intel.com>; Michael Kubacki
> <michael.kubacki@microsoft.com>; Leif Lindholm <leif@nuviainc.com>;
> Benjamin You <benjamin.you@intel.com>; Liu Yun <yun.y.liu@intel.com>;
> Ankit Sinha <ankit.sinha@intel.com>; Nate DeSimone
> <nathaniel.l.desimone@intel.com>
> 主题: [edk2-devel] [PATCH v1 00/41] Add PrmPkg
> 
> From: Michael Kubacki <michael.kubacki@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%20Mech
> anism%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/cefc7ca46235f01d5233e3abd4b79
> 452af01d9e9
> 
> 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@linux.microsoft.com>
> * Nate DeSimone <nathaniel.l.desimone@intel.com>
> 
> The proposed reviewers of PrmPkg are:
> * Ankit Sinha <ankit.sinha@intel.com>
> 
> Cc: Andrew Fish <afish@apple.com>
> Cc: Kang Gao <kang.gao@intel.com>
> Cc: Michael D Kinney <michael.d.kinney@intel.com>
> Cc: Michael Kubacki <michael.kubacki@microsoft.com>
> Cc: Leif Lindholm <leif@nuviainc.com>
> Cc: Benjamin You <benjamin.you@intel.com>
> Cc: Liu Yun <yun.y.liu@intel.com>
> Cc: Ankit Sinha <ankit.sinha@intel.com>
> Cc: Nate DeSimone <nathaniel.l.desimone@intel.com>
> Signed-off-by: Michael Kubacki <michael.kubacki@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/DxePrmContextBufferLibU
> nitTest.c
> |  649 ++++++++
>  PrmPkg/Library/DxePrmModuleDiscoveryLib/DxePrmModuleDiscoveryLib.c
> |  386 +++++
> 
> PrmPkg/Library/DxePrmModuleDiscoveryLib/UnitTest/DxePrmModuleDiscove
> ryLibUnitTest.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/DxeAcpiPa
> rameterBufferModuleConfigLib/DxeAcpiParameterBufferModuleConfigLib.c
> |  127 ++
> 
> PrmPkg/Samples/PrmSampleAcpiParameterBufferModule/PrmSampleAcpiPa
> rameterBufferModule.c
> |   78 +
> 
> PrmPkg/Samples/PrmSampleContextBufferModule/Library/DxeContextBuffer
> ModuleConfigLib/DxeContextBufferModuleConfigLib.c
> |  218 +++
> 
> PrmPkg/Samples/PrmSampleContextBufferModule/PrmSampleContextBuffer
> Module.c
> |   84 +
> 
> PrmPkg/Samples/PrmSampleHardwareAccessModule/Library/DxeHardwareA
> ccessModuleConfigLib/DxeHardwareAccessModuleConfigLib.c
> |  108 ++
> 
> PrmPkg/Samples/PrmSampleHardwareAccessModule/PrmSampleHardwareA
> ccessModule.c
> |  335 ++++
> 
> PrmPkg/Test/UnitTest/Library/UefiBootServicesTableLibUnitTest/UefiBootSer
> vicesTableLibUnitTest.c                                          |
> 119 ++
> 
> PrmPkg/Test/UnitTest/Library/UefiBootServicesTableLibUnitTest/UefiBootSer
> vicesTableLibUnitTestEventTimer.c                                |
> 180 +++
> 
> PrmPkg/Test/UnitTest/Library/UefiBootServicesTableLibUnitTest/UefiBootSer
> vicesTableLibUnitTestImage.c                                     |
> 163 ++
> 
> PrmPkg/Test/UnitTest/Library/UefiBootServicesTableLibUnitTest/UefiBootSer
> vicesTableLibUnitTestMemory.c                                    |
> 145 ++
> 
> PrmPkg/Test/UnitTest/Library/UefiBootServicesTableLibUnitTest/UefiBootSer
> vicesTableLibUnitTestMisc.c                                      |
> 198 +++
> 
> PrmPkg/Test/UnitTest/Library/UefiBootServicesTableLibUnitTest/UefiBootSer
> vicesTableLibUnitTestProtocol.c                                  |
> 1650 ++++++++++++++++++++
> 
> PrmPkg/Test/UnitTest/Library/UefiBootServicesTableLibUnitTest/UefiBootSer
> vicesTableLibUnitTestTpl.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/DxePrmContextBufferLibU
> nitTestHost.inf
> |   46 +
>  PrmPkg/Library/DxePrmModuleDiscoveryLib/DxePrmModuleDiscoveryLib.inf
> |   41 +
>  PrmPkg/Library/DxePrmModuleDiscoveryLib/PrmModuleDiscovery.h
> |   39 +
> 
> PrmPkg/Library/DxePrmModuleDiscoveryLib/UnitTest/DxePrmModuleDiscove
> ryLibUnitTestHost.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/DxeAcpiPa
> rameterBufferModuleConfigLib/DxeAcpiParameterBufferModuleConfigLib.inf
> |   39 +
> 
> PrmPkg/Samples/PrmSampleAcpiParameterBufferModule/PrmSampleAcpiPa
> rameterBufferModule.inf
> |   41 +
>  PrmPkg/Samples/PrmSampleContextBufferModule/Include/StaticData.h
> |   24 +
> 
> PrmPkg/Samples/PrmSampleContextBufferModule/Library/DxeContextBuffer
> ModuleConfigLib/DxeContextBufferModuleConfigLib.inf
> |   39 +
> 
> PrmPkg/Samples/PrmSampleContextBufferModule/PrmSampleContextBuffer
> Module.inf
> |   44 +
>  PrmPkg/Samples/PrmSampleHardwareAccessModule/Hpet.h
> |  108 ++
> 
> PrmPkg/Samples/PrmSampleHardwareAccessModule/Library/DxeHardwareA
> ccessModuleConfigLib/DxeHardwareAccessModuleConfigLib.inf
> |   39 +
> 
> PrmPkg/Samples/PrmSampleHardwareAccessModule/PrmSampleHardwareA
> ccessModule.inf
> |   43 +
>  PrmPkg/Samples/Readme.md
> |  146 ++
>  PrmPkg/Test/PrmPkgHostTest.dsc
> |   39 +
> 
> PrmPkg/Test/UnitTest/Library/UefiBootServicesTableLibUnitTest/UefiBootSer
> vicesTableLibTest.uni                                            |
> 12 +
> 
> PrmPkg/Test/UnitTest/Library/UefiBootServicesTableLibUnitTest/UefiBootSer
> vicesTableLibUnitTest.h                                          |
> 1042 ++++++++++++
> 
> PrmPkg/Test/UnitTest/Library/UefiBootServicesTableLibUnitTest/UefiBootSer
> vicesTableLibUnitTest.inf                                        |
> 46 +
> 
> PrmPkg/Test/UnitTest/Library/UefiBootServicesTableLibUnitTest/UefiBootSer
> vicesTableLibUnitTestProtocol.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/DxePrmContextBufferLibU
> nitTest.c
>  create mode 100644
> PrmPkg/Library/DxePrmModuleDiscoveryLib/DxePrmModuleDiscoveryLib.c
>  create mode 100644
> PrmPkg/Library/DxePrmModuleDiscoveryLib/UnitTest/DxePrmModuleDiscove
> ryLibUnitTest.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/DxeAcpiPa
> rameterBufferModuleConfigLib/DxeAcpiParameterBufferModuleConfigLib.c
>  create mode 100644
> PrmPkg/Samples/PrmSampleAcpiParameterBufferModule/PrmSampleAcpiPa
> rameterBufferModule.c
>  create mode 100644
> PrmPkg/Samples/PrmSampleContextBufferModule/Library/DxeContextBuffer
> ModuleConfigLib/DxeContextBufferModuleConfigLib.c
>  create mode 100644
> PrmPkg/Samples/PrmSampleContextBufferModule/PrmSampleContextBuffer
> Module.c
>  create mode 100644
> PrmPkg/Samples/PrmSampleHardwareAccessModule/Library/DxeHardwareA
> ccessModuleConfigLib/DxeHardwareAccessModuleConfigLib.c
>  create mode 100644
> PrmPkg/Samples/PrmSampleHardwareAccessModule/PrmSampleHardwareA
> ccessModule.c
>  create mode 100644
> PrmPkg/Test/UnitTest/Library/UefiBootServicesTableLibUnitTest/UefiBootSer
> vicesTableLibUnitTest.c
>  create mode 100644
> PrmPkg/Test/UnitTest/Library/UefiBootServicesTableLibUnitTest/UefiBootSer
> vicesTableLibUnitTestEventTimer.c
>  create mode 100644
> PrmPkg/Test/UnitTest/Library/UefiBootServicesTableLibUnitTest/UefiBootSer
> vicesTableLibUnitTestImage.c
>  create mode 100644
> PrmPkg/Test/UnitTest/Library/UefiBootServicesTableLibUnitTest/UefiBootSer
> vicesTableLibUnitTestMemory.c
>  create mode 100644
> PrmPkg/Test/UnitTest/Library/UefiBootServicesTableLibUnitTest/UefiBootSer
> vicesTableLibUnitTestMisc.c
>  create mode 100644
> PrmPkg/Test/UnitTest/Library/UefiBootServicesTableLibUnitTest/UefiBootSer
> vicesTableLibUnitTestProtocol.c
>  create mode 100644
> PrmPkg/Test/UnitTest/Library/UefiBootServicesTableLibUnitTest/UefiBootSer
> vicesTableLibUnitTestTpl.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/DxePrmContextBufferLibU
> nitTestHost.inf
>  create mode 100644
> PrmPkg/Library/DxePrmModuleDiscoveryLib/DxePrmModuleDiscoveryLib.inf
>  create mode 100644
> PrmPkg/Library/DxePrmModuleDiscoveryLib/PrmModuleDiscovery.h
>  create mode 100644
> PrmPkg/Library/DxePrmModuleDiscoveryLib/UnitTest/DxePrmModuleDiscove
> ryLibUnitTestHost.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/DxeAcpiPa
> rameterBufferModuleConfigLib/DxeAcpiParameterBufferModuleConfigLib.inf
>  create mode 100644
> PrmPkg/Samples/PrmSampleAcpiParameterBufferModule/PrmSampleAcpiPa
> rameterBufferModule.inf
>  create mode 100644
> PrmPkg/Samples/PrmSampleContextBufferModule/Include/StaticData.h
>  create mode 100644
> PrmPkg/Samples/PrmSampleContextBufferModule/Library/DxeContextBuffer
> ModuleConfigLib/DxeContextBufferModuleConfigLib.inf
>  create mode 100644
> PrmPkg/Samples/PrmSampleContextBufferModule/PrmSampleContextBuffer
> Module.inf
>  create mode 100644
> PrmPkg/Samples/PrmSampleHardwareAccessModule/Hpet.h
>  create mode 100644
> PrmPkg/Samples/PrmSampleHardwareAccessModule/Library/DxeHardwareA
> ccessModuleConfigLib/DxeHardwareAccessModuleConfigLib.inf
>  create mode 100644
> PrmPkg/Samples/PrmSampleHardwareAccessModule/PrmSampleHardwareA
> ccessModule.inf
>  create mode 100644 PrmPkg/Samples/Readme.md
>  create mode 100644 PrmPkg/Test/PrmPkgHostTest.dsc
>  create mode 100644
> PrmPkg/Test/UnitTest/Library/UefiBootServicesTableLibUnitTest/UefiBootSer
> vicesTableLibTest.uni
>  create mode 100644
> PrmPkg/Test/UnitTest/Library/UefiBootServicesTableLibUnitTest/UefiBootSer
> vicesTableLibUnitTest.h
>  create mode 100644
> PrmPkg/Test/UnitTest/Library/UefiBootServicesTableLibUnitTest/UefiBootSer
> vicesTableLibUnitTest.inf
>  create mode 100644
> PrmPkg/Test/UnitTest/Library/UefiBootServicesTableLibUnitTest/UefiBootSer
> vicesTableLibUnitTestProtocol.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/4905953
> Group Owner: devel+owner@edk2.groups.io
> Unsubscribe: https://edk2.groups.io/g/devel/unsub
> [gaoliming@byosoft.com.cn]
> -=-=-=-=-=-=
> 





-=-=-=-=-=-=-=-=-=-=-=-
Groups.io Links: You receive all messages sent to this group.
View/Reply Online (#88131): https://edk2.groups.io/g/devel/message/88131
Mute This Topic: https://groups.io/mt/90080300/1787277
Group Owner: devel+owner@edk2.groups.io
Unsubscribe: https://edk2.groups.io/g/devel/unsub [importer@patchew.org]
-=-=-=-=-=-=-=-=-=-=-=-
Re: 回复: [edk2-devel] [PATCH v1 00/41] Add PrmPkg
Posted by Michael Kubacki 2 years, 1 month ago
Hi Liming,

I updated Maintainers.txt in patch [40/41].
https://edk2.groups.io/g/devel/message/87882

Due to the email limit on the mailing list the last few patches had to 
be sent shortly after the initial series.

Regards,
Michael

On 3/28/2022 4:48 AM, gaoliming wrote:
> Michael:
>    Please also update Maintainers.txt to specify maintainer for new PrmPkg.
> 
> Thanks
> Liming
>> -----邮件原件-----
>> 发件人: devel@edk2.groups.io <devel@edk2.groups.io> 代表 Michael
>> Kubacki
>> 发送时间: 2022年3月23日 0:19
>> 收件人: devel@edk2.groups.io
>> 抄送: Andrew Fish <afish@apple.com>; Kang Gao <kang.gao@intel.com>;
>> Michael D Kinney <michael.d.kinney@intel.com>; Michael Kubacki
>> <michael.kubacki@microsoft.com>; Leif Lindholm <leif@nuviainc.com>;
>> Benjamin You <benjamin.you@intel.com>; Liu Yun <yun.y.liu@intel.com>;
>> Ankit Sinha <ankit.sinha@intel.com>; Nate DeSimone
>> <nathaniel.l.desimone@intel.com>
>> 主题: [edk2-devel] [PATCH v1 00/41] Add PrmPkg
>>
>> From: Michael Kubacki <michael.kubacki@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%20Mech
>> anism%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/cefc7ca46235f01d5233e3abd4b79
>> 452af01d9e9
>>
>> 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@linux.microsoft.com>
>> * Nate DeSimone <nathaniel.l.desimone@intel.com>
>>
>> The proposed reviewers of PrmPkg are:
>> * Ankit Sinha <ankit.sinha@intel.com>
>>
>> Cc: Andrew Fish <afish@apple.com>
>> Cc: Kang Gao <kang.gao@intel.com>
>> Cc: Michael D Kinney <michael.d.kinney@intel.com>
>> Cc: Michael Kubacki <michael.kubacki@microsoft.com>
>> Cc: Leif Lindholm <leif@nuviainc.com>
>> Cc: Benjamin You <benjamin.you@intel.com>
>> Cc: Liu Yun <yun.y.liu@intel.com>
>> Cc: Ankit Sinha <ankit.sinha@intel.com>
>> Cc: Nate DeSimone <nathaniel.l.desimone@intel.com>
>> Signed-off-by: Michael Kubacki <michael.kubacki@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/DxePrmContextBufferLibU
>> nitTest.c
>> |  649 ++++++++
>>   PrmPkg/Library/DxePrmModuleDiscoveryLib/DxePrmModuleDiscoveryLib.c
>> |  386 +++++
>>
>> PrmPkg/Library/DxePrmModuleDiscoveryLib/UnitTest/DxePrmModuleDiscove
>> ryLibUnitTest.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/DxeAcpiPa
>> rameterBufferModuleConfigLib/DxeAcpiParameterBufferModuleConfigLib.c
>> |  127 ++
>>
>> PrmPkg/Samples/PrmSampleAcpiParameterBufferModule/PrmSampleAcpiPa
>> rameterBufferModule.c
>> |   78 +
>>
>> PrmPkg/Samples/PrmSampleContextBufferModule/Library/DxeContextBuffer
>> ModuleConfigLib/DxeContextBufferModuleConfigLib.c
>> |  218 +++
>>
>> PrmPkg/Samples/PrmSampleContextBufferModule/PrmSampleContextBuffer
>> Module.c
>> |   84 +
>>
>> PrmPkg/Samples/PrmSampleHardwareAccessModule/Library/DxeHardwareA
>> ccessModuleConfigLib/DxeHardwareAccessModuleConfigLib.c
>> |  108 ++
>>
>> PrmPkg/Samples/PrmSampleHardwareAccessModule/PrmSampleHardwareA
>> ccessModule.c
>> |  335 ++++
>>
>> PrmPkg/Test/UnitTest/Library/UefiBootServicesTableLibUnitTest/UefiBootSer
>> vicesTableLibUnitTest.c                                          |
>> 119 ++
>>
>> PrmPkg/Test/UnitTest/Library/UefiBootServicesTableLibUnitTest/UefiBootSer
>> vicesTableLibUnitTestEventTimer.c                                |
>> 180 +++
>>
>> PrmPkg/Test/UnitTest/Library/UefiBootServicesTableLibUnitTest/UefiBootSer
>> vicesTableLibUnitTestImage.c                                     |
>> 163 ++
>>
>> PrmPkg/Test/UnitTest/Library/UefiBootServicesTableLibUnitTest/UefiBootSer
>> vicesTableLibUnitTestMemory.c                                    |
>> 145 ++
>>
>> PrmPkg/Test/UnitTest/Library/UefiBootServicesTableLibUnitTest/UefiBootSer
>> vicesTableLibUnitTestMisc.c                                      |
>> 198 +++
>>
>> PrmPkg/Test/UnitTest/Library/UefiBootServicesTableLibUnitTest/UefiBootSer
>> vicesTableLibUnitTestProtocol.c                                  |
>> 1650 ++++++++++++++++++++
>>
>> PrmPkg/Test/UnitTest/Library/UefiBootServicesTableLibUnitTest/UefiBootSer
>> vicesTableLibUnitTestTpl.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/DxePrmContextBufferLibU
>> nitTestHost.inf
>> |   46 +
>>   PrmPkg/Library/DxePrmModuleDiscoveryLib/DxePrmModuleDiscoveryLib.inf
>> |   41 +
>>   PrmPkg/Library/DxePrmModuleDiscoveryLib/PrmModuleDiscovery.h
>> |   39 +
>>
>> PrmPkg/Library/DxePrmModuleDiscoveryLib/UnitTest/DxePrmModuleDiscove
>> ryLibUnitTestHost.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/DxeAcpiPa
>> rameterBufferModuleConfigLib/DxeAcpiParameterBufferModuleConfigLib.inf
>> |   39 +
>>
>> PrmPkg/Samples/PrmSampleAcpiParameterBufferModule/PrmSampleAcpiPa
>> rameterBufferModule.inf
>> |   41 +
>>   PrmPkg/Samples/PrmSampleContextBufferModule/Include/StaticData.h
>> |   24 +
>>
>> PrmPkg/Samples/PrmSampleContextBufferModule/Library/DxeContextBuffer
>> ModuleConfigLib/DxeContextBufferModuleConfigLib.inf
>> |   39 +
>>
>> PrmPkg/Samples/PrmSampleContextBufferModule/PrmSampleContextBuffer
>> Module.inf
>> |   44 +
>>   PrmPkg/Samples/PrmSampleHardwareAccessModule/Hpet.h
>> |  108 ++
>>
>> PrmPkg/Samples/PrmSampleHardwareAccessModule/Library/DxeHardwareA
>> ccessModuleConfigLib/DxeHardwareAccessModuleConfigLib.inf
>> |   39 +
>>
>> PrmPkg/Samples/PrmSampleHardwareAccessModule/PrmSampleHardwareA
>> ccessModule.inf
>> |   43 +
>>   PrmPkg/Samples/Readme.md
>> |  146 ++
>>   PrmPkg/Test/PrmPkgHostTest.dsc
>> |   39 +
>>
>> PrmPkg/Test/UnitTest/Library/UefiBootServicesTableLibUnitTest/UefiBootSer
>> vicesTableLibTest.uni                                            |
>> 12 +
>>
>> PrmPkg/Test/UnitTest/Library/UefiBootServicesTableLibUnitTest/UefiBootSer
>> vicesTableLibUnitTest.h                                          |
>> 1042 ++++++++++++
>>
>> PrmPkg/Test/UnitTest/Library/UefiBootServicesTableLibUnitTest/UefiBootSer
>> vicesTableLibUnitTest.inf                                        |
>> 46 +
>>
>> PrmPkg/Test/UnitTest/Library/UefiBootServicesTableLibUnitTest/UefiBootSer
>> vicesTableLibUnitTestProtocol.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/DxePrmContextBufferLibU
>> nitTest.c
>>   create mode 100644
>> PrmPkg/Library/DxePrmModuleDiscoveryLib/DxePrmModuleDiscoveryLib.c
>>   create mode 100644
>> PrmPkg/Library/DxePrmModuleDiscoveryLib/UnitTest/DxePrmModuleDiscove
>> ryLibUnitTest.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/DxeAcpiPa
>> rameterBufferModuleConfigLib/DxeAcpiParameterBufferModuleConfigLib.c
>>   create mode 100644
>> PrmPkg/Samples/PrmSampleAcpiParameterBufferModule/PrmSampleAcpiPa
>> rameterBufferModule.c
>>   create mode 100644
>> PrmPkg/Samples/PrmSampleContextBufferModule/Library/DxeContextBuffer
>> ModuleConfigLib/DxeContextBufferModuleConfigLib.c
>>   create mode 100644
>> PrmPkg/Samples/PrmSampleContextBufferModule/PrmSampleContextBuffer
>> Module.c
>>   create mode 100644
>> PrmPkg/Samples/PrmSampleHardwareAccessModule/Library/DxeHardwareA
>> ccessModuleConfigLib/DxeHardwareAccessModuleConfigLib.c
>>   create mode 100644
>> PrmPkg/Samples/PrmSampleHardwareAccessModule/PrmSampleHardwareA
>> ccessModule.c
>>   create mode 100644
>> PrmPkg/Test/UnitTest/Library/UefiBootServicesTableLibUnitTest/UefiBootSer
>> vicesTableLibUnitTest.c
>>   create mode 100644
>> PrmPkg/Test/UnitTest/Library/UefiBootServicesTableLibUnitTest/UefiBootSer
>> vicesTableLibUnitTestEventTimer.c
>>   create mode 100644
>> PrmPkg/Test/UnitTest/Library/UefiBootServicesTableLibUnitTest/UefiBootSer
>> vicesTableLibUnitTestImage.c
>>   create mode 100644
>> PrmPkg/Test/UnitTest/Library/UefiBootServicesTableLibUnitTest/UefiBootSer
>> vicesTableLibUnitTestMemory.c
>>   create mode 100644
>> PrmPkg/Test/UnitTest/Library/UefiBootServicesTableLibUnitTest/UefiBootSer
>> vicesTableLibUnitTestMisc.c
>>   create mode 100644
>> PrmPkg/Test/UnitTest/Library/UefiBootServicesTableLibUnitTest/UefiBootSer
>> vicesTableLibUnitTestProtocol.c
>>   create mode 100644
>> PrmPkg/Test/UnitTest/Library/UefiBootServicesTableLibUnitTest/UefiBootSer
>> vicesTableLibUnitTestTpl.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/DxePrmContextBufferLibU
>> nitTestHost.inf
>>   create mode 100644
>> PrmPkg/Library/DxePrmModuleDiscoveryLib/DxePrmModuleDiscoveryLib.inf
>>   create mode 100644
>> PrmPkg/Library/DxePrmModuleDiscoveryLib/PrmModuleDiscovery.h
>>   create mode 100644
>> PrmPkg/Library/DxePrmModuleDiscoveryLib/UnitTest/DxePrmModuleDiscove
>> ryLibUnitTestHost.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/DxeAcpiPa
>> rameterBufferModuleConfigLib/DxeAcpiParameterBufferModuleConfigLib.inf
>>   create mode 100644
>> PrmPkg/Samples/PrmSampleAcpiParameterBufferModule/PrmSampleAcpiPa
>> rameterBufferModule.inf
>>   create mode 100644
>> PrmPkg/Samples/PrmSampleContextBufferModule/Include/StaticData.h
>>   create mode 100644
>> PrmPkg/Samples/PrmSampleContextBufferModule/Library/DxeContextBuffer
>> ModuleConfigLib/DxeContextBufferModuleConfigLib.inf
>>   create mode 100644
>> PrmPkg/Samples/PrmSampleContextBufferModule/PrmSampleContextBuffer
>> Module.inf
>>   create mode 100644
>> PrmPkg/Samples/PrmSampleHardwareAccessModule/Hpet.h
>>   create mode 100644
>> PrmPkg/Samples/PrmSampleHardwareAccessModule/Library/DxeHardwareA
>> ccessModuleConfigLib/DxeHardwareAccessModuleConfigLib.inf
>>   create mode 100644
>> PrmPkg/Samples/PrmSampleHardwareAccessModule/PrmSampleHardwareA
>> ccessModule.inf
>>   create mode 100644 PrmPkg/Samples/Readme.md
>>   create mode 100644 PrmPkg/Test/PrmPkgHostTest.dsc
>>   create mode 100644
>> PrmPkg/Test/UnitTest/Library/UefiBootServicesTableLibUnitTest/UefiBootSer
>> vicesTableLibTest.uni
>>   create mode 100644
>> PrmPkg/Test/UnitTest/Library/UefiBootServicesTableLibUnitTest/UefiBootSer
>> vicesTableLibUnitTest.h
>>   create mode 100644
>> PrmPkg/Test/UnitTest/Library/UefiBootServicesTableLibUnitTest/UefiBootSer
>> vicesTableLibUnitTest.inf
>>   create mode 100644
>> PrmPkg/Test/UnitTest/Library/UefiBootServicesTableLibUnitTest/UefiBootSer
>> vicesTableLibUnitTestProtocol.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/4905953
>> Group Owner: devel+owner@edk2.groups.io
>> Unsubscribe: https://edk2.groups.io/g/devel/unsub
>> [gaoliming@byosoft.com.cn]
>> -=-=-=-=-=-=
>>
> 
> 
> 
> 
> 
> 
> 


-=-=-=-=-=-=-=-=-=-=-=-
Groups.io Links: You receive all messages sent to this group.
View/Reply Online (#88135): https://edk2.groups.io/g/devel/message/88135
Mute This Topic: https://groups.io/mt/90080300/1787277
Group Owner: devel+owner@edk2.groups.io
Unsubscribe: https://edk2.groups.io/g/devel/unsub [importer@patchew.org]
-=-=-=-=-=-=-=-=-=-=-=-