From 0b469caff6ba9553def05b95f12078e2ad86bcff Mon Sep 17 00:00:00 2001 From: Michael Kubacki Date: Mon, 8 Jun 2020 16:32:34 -0700 Subject: PrmPkg/PrmContextBuffer.h: Add ACPI parameter support structures 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 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 Acked-by: Michael D Kinney Acked-by: Liming Gao Acked-by: Leif Lindholm Reviewed-by: Ankit Sinha --- PrmPkg/Include/PrmContextBuffer.h | 41 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 41 insertions(+) (limited to 'PrmPkg') diff --git a/PrmPkg/Include/PrmContextBuffer.h b/PrmPkg/Include/PrmContextBuffer.h index 8f8144545e..8694801017 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) -- cgit