PrmPkg: Add package and include headers
REF:https://bugzilla.tianocore.org/show_bug.cgi?id=3812 Adds a new package to maintain Platform Runtime Mechanism (PRM) support. This package is intended to include generic code that provides a common infrastructure to support PRM in firmware and a collection of sample PRM modules that demonstrate how to use the interfaces and other package resources to author a PRM module. The following initial headers are included in this commit: * Prm.h - Includes common content for PRM with no dependencies on other PRM header files. * PrmContextBuffer.h - Includes definitions for PRM context buffers. Context buffers are standardized structures that point to various resources available to a PRM handler during its execution. * PrmDataBuffer.h - Includes definitions for PRM data buffers. Within the context of PRM, these data buffers are composed of a generic header followed by a variable length blob of arbitrary data. * PrmExportDescriptor.h - Includes definitions for creating PRM export descriptors. A PRM export descriptor is a structure referenced in the export table of PRM module that contains PRM-specific metadata about the module. * PrmMmio.h - Includes definitions for describing MMIO ranges uses by PRM modules. * PrmModule.h - Includes definitions commonly used by PRM module authors. This file is provided to serve as a convenient include for PRM module authors. * PrmOsServices.h - Includes content specific to PRM OS services. OS Services will not planned to be present in the final version of PRM. The OS Services have been reduced to a simple debug print function. So this is currently planned to be a temporary file to support debugging during PRM development. Note: Modules built for the UEFI environment can be built by Visual Studio and non-Visual Studio toolchains. However, PRM modules are currently only supported on Visual Studio toolchain due to usage of export tables. 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> Acked-by: Michael D Kinney <michael.d.kinney@intel.com> Acked-by: Liming Gao <gaoliming@byosoft.com.cn> Acked-by: Leif Lindholm <quic_llindhol@quicinc.com> Reviewed-by: Ankit Sinha <ankit.sinha@intel.com>
This commit is contained in:
committed by
mergify[bot]
parent
ad6816c319
commit
d2998af211
49
PrmPkg/PrmPkg.dec
Normal file
49
PrmPkg/PrmPkg.dec
Normal file
@@ -0,0 +1,49 @@
|
||||
## @file PrmPkg.dec
|
||||
# This package provides support for the Platform Runtime Mechanism (PRM).
|
||||
#
|
||||
# The following key elements of PRM are maintained in this package:
|
||||
#
|
||||
# 1. PRM interfaces - Comprised of interfaces shared with the operating system such as ACPI table structures
|
||||
# in addition to internal firmware interfaces such as protocols and library interfaces.
|
||||
#
|
||||
# 2. PRM generic drivers - EDK II drivers that implement generic functionality such that a platform can quickly
|
||||
# and reliably adopt PRM.
|
||||
#
|
||||
# 3. PRM module - An independently updatable PE/COFF binary that conforms to the unique requirements of a PRM module.
|
||||
# PRM modules expose functions for operating system invocation referred to as PRM handlers.
|
||||
#
|
||||
# 4. PRM handler - A function in a PRM module. The function is identified through PRM interfaces in the OS by a GUID.
|
||||
#
|
||||
# Copyright (c) Microsoft Corporation<BR>
|
||||
## SPDX-License-Identifier: BSD-2-Clause-Patent
|
||||
##
|
||||
|
||||
[Defines]
|
||||
DEC_SPECIFICATION = 0x00010005
|
||||
PACKAGE_NAME = PrmPkg
|
||||
PACKAGE_UNI_FILE = PrmPkg.uni
|
||||
PACKAGE_GUID = 3D22F66E-9090-46CE-B260-1836070AFA5E
|
||||
PACKAGE_VERSION = 0.1
|
||||
|
||||
[Includes]
|
||||
Include
|
||||
|
||||
[Guids]
|
||||
gPrmPkgTokenSpaceGuid = { 0x46f56acc, 0x600b, 0x450f, { 0xa5, 0x9c, 0x3a, 0x1a, 0x4a, 0xd4, 0x35, 0x3e }}
|
||||
|
||||
[LibraryClasses]
|
||||
## @libraryclass Provides a general abstraction for PRM context buffer management
|
||||
#
|
||||
PrmContextBufferLib|Include/Library/PrmContextBufferLib.h
|
||||
|
||||
[Protocols]
|
||||
## PRM Configuration Protocol
|
||||
#
|
||||
gPrmConfigProtocolGuid = { 0x4e5b4fea, 0x936a, 0x45bc, { 0xac, 0x6a, 0x2f, 0x8f, 0x14, 0xa6, 0xc2, 0x9e }}
|
||||
|
||||
[PcdsFixedAtBuild]
|
||||
## Flash base address of a PRM firmware volume
|
||||
gPrmPkgTokenSpaceGuid.PcdFlashFvPrmBase|0x00000000|UINT32|0x00000001
|
||||
|
||||
## Size in bytes of a PRM firmware volume
|
||||
gPrmPkgTokenSpaceGuid.PcdFlashFvPrmSize|0x00000000|UINT32|0x00000002
|
Reference in New Issue
Block a user