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