Jose Marinho 21200d9fe6 PrmPkg: Build Prm Samples with GCC for AARCH64 | 2 years ago | |
---|---|---|
.. | ||
PrmSampleAcpiParameterBufferModule | 1 year ago | |
PrmSampleContextBufferModule | 1 year ago | |
PrmSampleHardwareAccessModule | 2 years ago | |
Readme.md | 2 years ago |
The PRM module samples provided here serve as focused examples of how to perform various tasks in a PRM module. The samples can also be used to verify the basic infrastructure needed in your firmware implementation is working as expected by checking that the sample modules are found properly and the handlers perform their tasks as noted.
The sample modules have currently only been tested on the Visual Studio compiler tool chain. Sample module build may fail on other tool chains. A future work item is to enable broader build support.
The sample modules are built as part of the normal PrmPkg
build so you can follow the
package build instructions and then find the PRM sample binaries in your
workspace build output directory. For example, if your build workspace is called «edk2» and you build
64-bit binaries on the Visual Studio 2017 tool chain, your sample module binaries will be in the following
location: \
edk2/Build/Prm/DEBUG_VS2017/X64/PrmPkg/Samples
Note that the build command does provide the option to build a specific module in a package which can result in
faster build time. If you would like to just build a single PRM module that can be done by specifying the path to
the module INF file with the «-m» argument to build
. For example, this command builds 32-bit and 64-bit binaries
with Visual Studio 2019: \
build -p PrmPkg/PrmPkg.dsc -m PrmPkg/Samples/PrmSampleContextBufferModule/PrmSampleContextBufferModule.inf -a IA32 -a X64 -t VS2019
The following table provides an overview of each sample module provided. By nature, different PRM handlers have different requirements. The information here is summarized for a user to understand how to use a given sample PRM handler along with GUID/name information to identify the sample PRM modules and their PRM handlers.
It is recommended that all PRM authors write a similar set of documentation for their users to better understand and interact with their PRM modules.
- Name:
PrmSampleAcpiParameterBufferModule
- GUID:
dc2a58a6-5927-4776-b995-d118a27335a2
- Purpose:
- Provides an example of how to configure an ACPI parameter buffer
Handlers:
CheckParamBufferPrmHandler
2e4f2d13-6240-4ed0-a401-c723fbdc34e8
Actions:
Parameter Buffer Required: Yes
Parameter Buffer Contents:
Context Buffer Required: No
Runtime MMIO Range(s) Required: No
- Name:
PrmSampleContextBufferModule
- GUID:
5a6cf42b-8bb4-472c-a233-5c4dc4033dc7
- Purpose:
- Provides an example of how to configure a static data buffer (which is pointed to in a context buffer) in firmware and consume the buffer contents at runtime
Handlers:
CheckStaticDataBufferPrmHandler
e1466081-7562-430f-896b-b0e523dc335a
Actions:
Parameter Buffer Required: No
Context Buffer Required: Yes
#define SOME_VALUE_ARRAY_MAX_VALUES 16
typedef struct {
BOOLEAN Policy1Enabled;
BOOLEAN Policy2Enabled;
UINT8 SomeValueArray[SOME_VALUE_ARRAY_MAX_VALUES];
} STATIC_DATA_SAMPLE_CONTEXT_BUFFER_MODULE;
- Name:
PrmSampleHardwareAccessModule
- GUID:
0ef93ed7-14ae-425b-928f-b85a6213b57e
- Purpose:
- Demonstrate access of several types of hardware resources from a PRM module
Handlers:
MsrAccessMicrocodeSignaturePrmHandler
2120cd3c-848b-4d8f-abbb-4b74ce64ac89
Actions:
Parameter Buffer Required: No
Context Buffer Required: No
Runtime MMIO Range(s) Required: No
MsrAccessMtrrDumpPrmHandler
ea0935a7-506b-4159-bbbb-48deeecb6f58
Actions:
Parameter Buffer Required: No
Context Buffer Required: No
Runtime MMIO Range(s) Required: No
MmioAccessHpetPrmHandler
1bd1bda9-909a-4614-9699-25ec0c2783f7
Actions:
Parameter Buffer Required: No
Context Buffer Required: No
Runtime MMIO Range(s) Required: Yes