public inbox for devel@edk2.groups.io
 help / color / mirror / Atom feed
* Re: [edk2-devel] [PATCH v1 00/41] Add PrmPkg
  2022-03-22 16:19 Michael Kubacki
@ 2022-03-29 16:28 ` Sinha, Ankit
  0 siblings, 0 replies; 4+ messages in thread
From: Sinha, Ankit @ 2022-03-29 16:28 UTC (permalink / raw)
  To: devel@edk2.groups.io, mikuback@linux.microsoft.com
  Cc: Andrew Fish, Gao, Kang, Kinney, Michael D, Kubacki, Michael,
	Leif Lindholm, You, Benjamin, Liu, Yun Y, Desimone, Nathaniel L

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]
> -=-=-=-=-=-=
> 


^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: [edk2-devel] [PATCH v1 00/41] Add PrmPkg
       [not found] <16DEC05BD9907002.3991@groups.io>
@ 2022-04-01 14:10 ` Michael Kubacki
  2022-04-01 15:24   ` Michael D Kinney
  0 siblings, 1 reply; 4+ messages in thread
From: Michael Kubacki @ 2022-04-01 14:10 UTC (permalink / raw)
  To: devel@edk2.groups.io; +Cc: Andrew Fish, Michael D Kinney, Leif Lindholm

Since this is a new package, I am waiting for a steward to approve.

Please let me know if you have any questions.

Thanks,
Michael

On 3/22/2022 12:19 PM, Michael Kubacki wrote:
> 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
> 

^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: [edk2-devel] [PATCH v1 00/41] Add PrmPkg
  2022-04-01 14:10 ` [edk2-devel] [PATCH v1 00/41] Add PrmPkg Michael Kubacki
@ 2022-04-01 15:24   ` Michael D Kinney
  2022-04-04 22:40     ` Leif Lindholm
  0 siblings, 1 reply; 4+ messages in thread
From: Michael D Kinney @ 2022-04-01 15:24 UTC (permalink / raw)
  To: devel@edk2.groups.io, mikuback@linux.microsoft.com,
	Kinney, Michael D
  Cc: Andrew Fish, Leif Lindholm

Acked-by: Michael D Kinney <michael.d.kinney@intel.com>

> -----Original Message-----
> From: Michael Kubacki <mikuback@linux.microsoft.com>
> Sent: Friday, April 1, 2022 7:11 AM
> To: devel@edk2.groups.io
> Cc: Andrew Fish <afish@apple.com>; Kinney, Michael D <michael.d.kinney@intel.com>; Leif Lindholm <leif@nuviainc.com>
> Subject: Re: [edk2-devel] [PATCH v1 00/41] Add PrmPkg
> 
> Since this is a new package, I am waiting for a steward to approve.
> 
> Please let me know if you have any questions.
> 
> Thanks,
> Michael
> 
> On 3/22/2022 12:19 PM, Michael Kubacki wrote:
> > 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/DxeAcpiParameterBufferModule
> ConfigLib.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/DxeAcpiParameterBufferModule
> ConfigLib.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/DxeAcpiParameterBufferModule
> ConfigLib.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/DxeAcpiParameterBufferModule
> ConfigLib.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
> >

^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: [edk2-devel] [PATCH v1 00/41] Add PrmPkg
  2022-04-01 15:24   ` Michael D Kinney
@ 2022-04-04 22:40     ` Leif Lindholm
  0 siblings, 0 replies; 4+ messages in thread
From: Leif Lindholm @ 2022-04-04 22:40 UTC (permalink / raw)
  To: devel, michael.d.kinney
  Cc: mikuback@linux.microsoft.com, Andrew Fish, Leif Lindholm

Acked-by: Leif Lindholm <quic_llindhol@quicinc.com>

On Fri, Apr 01, 2022 at 15:24:39 +0000, Michael D Kinney wrote:
> Acked-by: Michael D Kinney <michael.d.kinney@intel.com>
> 
> > -----Original Message-----
> > From: Michael Kubacki <mikuback@linux.microsoft.com>
> > Sent: Friday, April 1, 2022 7:11 AM
> > To: devel@edk2.groups.io
> > Cc: Andrew Fish <afish@apple.com>; Kinney, Michael D <michael.d.kinney@intel.com>; Leif Lindholm <leif@nuviainc.com>
> > Subject: Re: [edk2-devel] [PATCH v1 00/41] Add PrmPkg
> > 
> > Since this is a new package, I am waiting for a steward to approve.
> > 
> > Please let me know if you have any questions.
> > 
> > Thanks,
> > Michael
> > 
> > On 3/22/2022 12:19 PM, Michael Kubacki wrote:
> > > 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/DxeAcpiParameterBufferModule
> > ConfigLib.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/DxeAcpiParameterBufferModule
> > ConfigLib.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/DxeAcpiParameterBufferModule
> > ConfigLib.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/DxeAcpiParameterBufferModule
> > ConfigLib.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
> > >
> 
> 
> 
> 
> 

^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2022-04-04 22:40 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
     [not found] <16DEC05BD9907002.3991@groups.io>
2022-04-01 14:10 ` [edk2-devel] [PATCH v1 00/41] Add PrmPkg Michael Kubacki
2022-04-01 15:24   ` Michael D Kinney
2022-04-04 22:40     ` Leif Lindholm
2022-03-22 16:19 Michael Kubacki
2022-03-29 16:28 ` [edk2-devel] " Sinha, Ankit

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox