From: Michael Kubacki <michael.kuba...@microsoft.com>

Adds a new type ACPI_PARAMETER_BUFFER_DESCRIPTOR that can be
used by PRM module configuration code to associate a PRM handler
GUID with an ACPI parameter buffer allocated by the PRM module
configuration code.

The ACPI parameter buffer descriptors for a given PRM module
are tracked in the firmware internal structure
PRM_MODULE_CONTEXT_BUFFERS produced by the module configuration
code.

Cc: Andrew Fish <af...@apple.com>
Cc: Kang Gao <kang....@intel.com>
Cc: Michael D Kinney <michael.d.kin...@intel.com>
Cc: Michael Kubacki <michael.kuba...@microsoft.com>
Cc: Leif Lindholm <l...@nuviainc.com>
Cc: Benjamin You <benjamin....@intel.com>
Cc: Liu Yun <yun.y....@intel.com>
Cc: Ankit Sinha <ankit.si...@intel.com>
Cc: Nate DeSimone <nathaniel.l.desim...@intel.com>
Signed-off-by: Michael Kubacki <michael.kuba...@microsoft.com>
---
 PrmPkg/Include/PrmContextBuffer.h | 41 ++++++++++++++++++++
 1 file changed, 41 insertions(+)

diff --git a/PrmPkg/Include/PrmContextBuffer.h 
b/PrmPkg/Include/PrmContextBuffer.h
index 8f8144545e64..869480101773 100644
--- a/PrmPkg/Include/PrmContextBuffer.h
+++ b/PrmPkg/Include/PrmContextBuffer.h
@@ -19,6 +19,18 @@
 
 #pragma pack(push, 1)
 
+//
+// Associates an ACPI parameter buffer with a particular PRM handler in
+// a PRM module.
+//
+// If either the GUID or address are zero then neither value is used to
+// copy the ACPI parameter buffer address to the PRMT ACPI table.
+//
+typedef struct {
+  EFI_GUID                              HandlerGuid;
+  UINT64                                AcpiParameterBufferAddress;
+} ACPI_PARAMETER_BUFFER_DESCRIPTOR;
+
 //
 // This is the context buffer structure that is passed to a PRM handler.
 //
@@ -124,6 +136,35 @@ typedef struct
   /// This pointer may be NULL if runtime memory ranges are not needed.
   ///
   PRM_RUNTIME_MMIO_RANGES                 *RuntimeMmioRanges;
+
+  ///
+  /// The number of ACPI parameter buffer descriptors in the array
+  /// AcpiParameterBufferDescriptors
+  ///
+  UINTN                                   AcpiParameterBufferDescriptorCount;
+
+  ///
+  /// A pointer to an array of ACPI parameter buffer descriptors. PRM module
+  /// configuration code uses this structure to associate a specific PRM
+  /// handler with an ACPI parameter buffer.
+  ///
+  /// An ACPI parameter buffer is a parameter buffer allocated by the PRM
+  /// module configuration code to be used by ACPI as a parameter buffer
+  /// to the associated PRM handler at OS runtime.
+  ///
+  /// This buffer is not required if:
+  /// 1. A parameter buffer is not used by a PRM handler at all
+  /// 2. A parameter buffer is used but the PRM handler is never invoked
+  ///    from ACPI (it is directly called by an OS device driver for example)
+  ///
+  /// In case #2 above, the direct PRM handler is responsible for allocating
+  /// a parameter buffer and passing that buffer to the PRM handler.
+  ///
+  /// A PRM module only needs to provide an ACPI_PARAMETER_BUFFER_DESCRIPTOR
+  /// for each PRM handler that actually uses an ACPI parameter buffer. If
+  /// no handlers use an ACPI parameter buffer this pointer should be NULL.
+  ///
+  ACPI_PARAMETER_BUFFER_DESCRIPTOR        *AcpiParameterBufferDescriptors;
 } PRM_MODULE_CONTEXT_BUFFERS;
 
 #pragma pack(pop)
-- 
2.28.0.windows.1



-=-=-=-=-=-=-=-=-=-=-=-
Groups.io Links: You receive all messages sent to this group.
View/Reply Online (#87860): https://edk2.groups.io/g/devel/message/87860
Mute This Topic: https://groups.io/mt/89956000/21656
Group Owner: devel+ow...@edk2.groups.io
Unsubscribe: https://edk2.groups.io/g/devel/unsub [arch...@mail-archive.com]
-=-=-=-=-=-=-=-=-=-=-=-


Reply via email to