From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from linux.microsoft.com (linux.microsoft.com [13.77.154.182]) by mx.groups.io with SMTP id smtpd.web10.11201.1648822259749985989 for ; Fri, 01 Apr 2022 07:11:00 -0700 Authentication-Results: mx.groups.io; dkim=pass header.i=@linux.microsoft.com header.s=default header.b=BA+dX31z; spf=pass (domain: linux.microsoft.com, ip: 13.77.154.182, mailfrom: mikuback@linux.microsoft.com) Received: from [192.168.4.22] (unknown [47.202.59.224]) by linux.microsoft.com (Postfix) with ESMTPSA id 8638320DEEC6; Fri, 1 Apr 2022 07:10:58 -0700 (PDT) DKIM-Filter: OpenDKIM Filter v2.11.0 linux.microsoft.com 8638320DEEC6 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linux.microsoft.com; s=default; t=1648822259; bh=uaRvrWpaKSRFP1tH2iWb6SrSMPSvdB4U9Xp8XENJVGA=; h=Date:Subject:From:To:Cc:Reply-To:References:In-Reply-To:From; b=BA+dX31zj4+nyANmQuUAg17C9DQMEeHSlb7/gWENrfzUOmwaduhGQFe9OcNC8Iwhr aqJOThqas0oTqETbhVeGCpAGJccZq4gCXX8Djwldh6GynFVTU6TulurBdaohjx3RvD /0LPx4aXXQQMIPSpnm578hkKsewMRwjW5U+gKqKE= Message-ID: <0bcd50d7-1c9b-f503-d0c1-23f60c76ea2f@linux.microsoft.com> Date: Fri, 1 Apr 2022 10:10:57 -0400 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:91.0) Gecko/20100101 Thunderbird/91.7.0 Subject: Re: [edk2-devel] [PATCH v1 00/41] Add PrmPkg From: "Michael Kubacki" To: "devel@edk2.groups.io" Cc: Andrew Fish , Michael D Kinney , Leif Lindholm Reply-To: devel@edk2.groups.io, mikuback@linux.microsoft.com References: <16DEC05BD9907002.3991@groups.io> In-Reply-To: <16DEC05BD9907002.3991@groups.io> Content-Language: en-US Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit 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 > > 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 > * Nate DeSimone > > The proposed reviewers of PrmPkg are: > * Ankit Sinha > > Cc: Andrew Fish > Cc: Kang Gao > Cc: Michael D Kinney > Cc: Michael Kubacki > Cc: Leif Lindholm > Cc: Benjamin You > Cc: Liu Yun > Cc: Ankit Sinha > Cc: Nate DeSimone > Signed-off-by: Michael Kubacki > > 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 >