| /** @file | |
| Header file for ACPI parser | |
| Copyright (c) 2022, NVIDIA CORPORATION. All rights reserved. | |
| Copyright (c) 2016 - 2024, Arm Limited. All rights reserved. | |
| Copyright (c) 2022, AMD Incorporated. All rights reserved. | |
| SPDX-License-Identifier: BSD-2-Clause-Patent | |
| **/ | |
| #ifndef ACPIPARSER_H_ | |
| #define ACPIPARSER_H_ | |
| #define OUTPUT_FIELD_COLUMN_WIDTH 36 | |
| /// The RSDP table signature is "RSD PTR " (8 bytes) | |
| /// However The signature for ACPI tables is 4 bytes. | |
| /// To work around this oddity define a signature type | |
| /// that allows us to process the log options. | |
| #define RSDP_TABLE_INFO SIGNATURE_32('R', 'S', 'D', 'P') | |
| /** | |
| This function increments the ACPI table error counter. | |
| **/ | |
| VOID | |
| EFIAPI | |
| IncrementErrorCount ( | |
| VOID | |
| ); | |
| /** | |
| This function increments the ACPI table warning counter. | |
| **/ | |
| VOID | |
| EFIAPI | |
| IncrementWarningCount ( | |
| VOID | |
| ); | |
| /** | |
| This function verifies the ACPI table checksum. | |
| This function verifies the checksum for the ACPI table and optionally | |
| prints the status. | |
| @param [in] Log If TRUE log the status of the checksum. | |
| @param [in] Ptr Pointer to the start of the table buffer. | |
| @param [in] Length The length of the buffer. | |
| @retval TRUE The checksum is OK. | |
| @retval FALSE The checksum failed. | |
| **/ | |
| BOOLEAN | |
| EFIAPI | |
| VerifyChecksum ( | |
| IN BOOLEAN Log, | |
| IN UINT8 *Ptr, | |
| IN UINT32 Length | |
| ); | |
| /** | |
| This function performs a raw data dump of the ACPI table. | |
| @param [in] Ptr Pointer to the start of the table buffer. | |
| @param [in] Length The length of the buffer. | |
| **/ | |
| VOID | |
| EFIAPI | |
| DumpRaw ( | |
| IN UINT8 *Ptr, | |
| IN UINT32 Length | |
| ); | |
| /** | |
| This function traces 1 byte of datum as specified in the format string. | |
| @param [in] Format The format string for tracing the data. | |
| @param [in] Ptr Pointer to the start of the buffer. | |
| **/ | |
| VOID | |
| EFIAPI | |
| DumpUint8 ( | |
| IN CONST CHAR16 *Format, | |
| IN UINT8 *Ptr | |
| ); | |
| /** | |
| This function traces 2 bytes of data as specified in the format string. | |
| @param [in] Format The format string for tracing the data. | |
| @param [in] Ptr Pointer to the start of the buffer. | |
| **/ | |
| VOID | |
| EFIAPI | |
| DumpUint16 ( | |
| IN CONST CHAR16 *Format, | |
| IN UINT8 *Ptr | |
| ); | |
| /** | |
| This function traces 4 bytes of data as specified in the format string. | |
| @param [in] Format The format string for tracing the data. | |
| @param [in] Ptr Pointer to the start of the buffer. | |
| **/ | |
| VOID | |
| EFIAPI | |
| DumpUint32 ( | |
| IN CONST CHAR16 *Format, | |
| IN UINT8 *Ptr | |
| ); | |
| /** | |
| This function traces 8 bytes of data as specified by the format string. | |
| @param [in] Format The format string for tracing the data. | |
| @param [in] Ptr Pointer to the start of the buffer. | |
| **/ | |
| VOID | |
| EFIAPI | |
| DumpUint64 ( | |
| IN CONST CHAR16 *Format, | |
| IN UINT8 *Ptr | |
| ); | |
| /** | |
| This function traces 3 characters which can be optionally | |
| formated using the format string if specified. | |
| If no format string is specified the Format must be NULL. | |
| @param [in] Format Optional format string for tracing the data. | |
| @param [in] Ptr Pointer to the start of the buffer. | |
| @param [in] Length Length of the field. | |
| **/ | |
| VOID | |
| EFIAPI | |
| Dump3Chars ( | |
| IN CONST CHAR16 *Format OPTIONAL, | |
| IN UINT8 *Ptr, | |
| IN UINT32 Length | |
| ); | |
| /** | |
| This function traces 4 characters which can be optionally | |
| formated using the format string if specified. | |
| If no format string is specified the Format must be NULL. | |
| @param [in] Format Optional format string for tracing the data. | |
| @param [in] Ptr Pointer to the start of the buffer. | |
| @param [in] Length Length of the field. | |
| **/ | |
| VOID | |
| EFIAPI | |
| Dump4Chars ( | |
| IN CONST CHAR16 *Format OPTIONAL, | |
| IN UINT8 *Ptr, | |
| IN UINT32 Length | |
| ); | |
| /** | |
| This function traces 6 characters which can be optionally | |
| formated using the format string if specified. | |
| If no format string is specified the Format must be NULL. | |
| @param [in] Format Optional format string for tracing the data. | |
| @param [in] Ptr Pointer to the start of the buffer. | |
| @param [in] Length Length of the field. | |
| **/ | |
| VOID | |
| EFIAPI | |
| Dump6Chars ( | |
| IN CONST CHAR16 *Format OPTIONAL, | |
| IN UINT8 *Ptr, | |
| IN UINT32 Length | |
| ); | |
| /** | |
| This function traces 8 characters which can be optionally | |
| formated using the format string if specified. | |
| If no format string is specified the Format must be NULL. | |
| @param [in] Format Optional format string for tracing the data. | |
| @param [in] Ptr Pointer to the start of the buffer. | |
| @param [in] Length Length of the field. | |
| **/ | |
| VOID | |
| EFIAPI | |
| Dump8Chars ( | |
| IN CONST CHAR16 *Format OPTIONAL, | |
| IN UINT8 *Ptr, | |
| IN UINT32 Length | |
| ); | |
| /** | |
| This function traces 12 characters which can be optionally | |
| formated using the format string if specified. | |
| If no format string is specified the Format must be NULL. | |
| @param [in] Format Optional format string for tracing the data. | |
| @param [in] Ptr Pointer to the start of the buffer. | |
| @param [in] Length Length of the field. | |
| **/ | |
| VOID | |
| EFIAPI | |
| Dump12Chars ( | |
| IN CONST CHAR16 *Format OPTIONAL, | |
| IN UINT8 *Ptr, | |
| IN UINT32 Length | |
| ); | |
| /** | |
| This function traces 16 characters which can be optionally | |
| formated using the format string if specified. | |
| If no format string is specified the Format must be NULL. | |
| @param [in] Format Optional format string for tracing the data. | |
| @param [in] Ptr Pointer to the start of the buffer. | |
| @param [in] Length Length of the field. | |
| **/ | |
| VOID | |
| EFIAPI | |
| Dump16Chars ( | |
| IN CONST CHAR16 *Format OPTIONAL, | |
| IN UINT8 *Ptr, | |
| IN UINT32 Length | |
| ); | |
| /** | |
| This function traces reserved fields up to 8 bytes in length. | |
| Format string is ignored by this function as the reserved field is printed | |
| byte by byte with intermittent spacing <eg: 0 0 0 0>. Use DumpxChars for any | |
| other use case. | |
| @param [in] Format Optional format string for tracing the data. | |
| @param [in] Ptr Pointer to the start of the buffer. | |
| @param [in] Length Length of the field. | |
| **/ | |
| VOID | |
| EFIAPI | |
| DumpReserved ( | |
| IN CONST CHAR16 *Format OPTIONAL, | |
| IN UINT8 *Ptr, | |
| IN UINT32 Length | |
| ); | |
| /** | |
| This function traces reserved fields up to 64 bits in length. | |
| Format string is ignored by this function as the reserved field is printed | |
| byte by byte with intermittent spacing. eg: <0 0 0 0>. When the field length | |
| isn't a multiple of 8, the number of bytes are "ceil"-ed by one. eg for 27 | |
| bits <0 0 0 0> | |
| @param [in] Format Optional format string for tracing the data. | |
| @param [in] Ptr Pointer to the start of the buffer. | |
| @param [in] Length Length of the field as number of bits. | |
| **/ | |
| VOID | |
| EFIAPI | |
| DumpReservedBits ( | |
| IN CONST CHAR16 *Format OPTIONAL, | |
| IN UINT8 *Ptr, | |
| IN UINT32 Length | |
| ); | |
| /** | |
| This function indents and prints the ACPI table Field Name. | |
| @param [in] Indent Number of spaces to add to the global table | |
| indent. The global table indent is 0 by default; | |
| however this value is updated on entry to the | |
| ParseAcpi() by adding the indent value provided to | |
| ParseAcpi() and restored back on exit. Therefore | |
| the total indent in the output is dependent on from | |
| where this function is called. | |
| @param [in] FieldName Pointer to the Field Name. | |
| **/ | |
| VOID | |
| EFIAPI | |
| PrintFieldName ( | |
| IN UINT32 Indent, | |
| IN CONST CHAR16 *FieldName | |
| ); | |
| /** | |
| This function pointer is the template for customizing the trace output | |
| @param [in] Format Format string for tracing the data as specified by | |
| the 'Format' member of ACPI_PARSER. | |
| @param [in] Ptr Pointer to the start of the buffer. | |
| @param [in] Length Length of the field. | |
| **/ | |
| typedef VOID (EFIAPI *FNPTR_PRINT_FORMATTER)(CONST CHAR16 *Format, UINT8 *Ptr, UINT32 Length); | |
| /** | |
| This function pointer is the template for validating an ACPI table field. | |
| @param [in] Ptr Pointer to the start of the field data. | |
| @param [in] Length Length of the field. | |
| @param [in] Context Pointer to context specific information as specified by | |
| the 'Context' member of the ACPI_PARSER. | |
| e.g. this could be a pointer to the ACPI table header. | |
| **/ | |
| typedef VOID (EFIAPI *FNPTR_FIELD_VALIDATOR)( | |
| UINT8 *Ptr, | |
| UINT32 Length, | |
| VOID *Context | |
| ); | |
| /** | |
| The ACPI_PARSER structure describes the fields of an ACPI table and | |
| provides means for the parser to interpret and trace appropriately. | |
| The first three members are populated based on information present in | |
| in the ACPI table specifications. The remaining members describe how | |
| the parser should report the field information, validate the field data | |
| and/or update an external pointer to the field (ItemPtr). | |
| ParseAcpi() uses the format string specified by 'Format' for tracing | |
| the field data. If the field is more complex and requires additional | |
| processing for formatting and representation a print formatter function | |
| can be specified in 'PrintFormatter'. | |
| ParseAcpiBitFields() uses AcpiParser structure to parse the bit fields. | |
| It considers Length as a number of bits that need to be parsed. | |
| Also, the Offset field will be considered as starting offset of the bitfield. | |
| The PrintFormatter function may choose to use the format string | |
| specified by 'Format' or use its own internal format string. | |
| The 'Format' and 'PrintFormatter' members allow flexibility for | |
| representing the field data. | |
| **/ | |
| typedef struct AcpiParser { | |
| /// String describing the ACPI table field | |
| /// (Field column from ACPI table spec) | |
| CONST CHAR16 *NameStr; | |
| /// The length of the field. | |
| /// (Byte Length column from ACPI table spec) | |
| /// Length(in bits) of the bitfield if used with ParseAcpiBitFields(). | |
| UINT32 Length; | |
| /// The offset of the field from the start of the table. | |
| /// (Byte Offset column from ACPI table spec) | |
| /// The Bit offset of the field if used with ParseAcpiBitFields(). | |
| UINT32 Offset; | |
| /// Optional Print() style format string for tracing the data. If not | |
| /// used this must be set to NULL. | |
| CONST CHAR16 *Format; | |
| /// Optional pointer to a print formatter function which | |
| /// is typically used to trace complex field information. | |
| /// If not used this must be set to NULL. | |
| /// The Format string is passed to the PrintFormatter function | |
| /// but may be ignored by the implementation code. | |
| FNPTR_PRINT_FORMATTER PrintFormatter; | |
| /// Optional pointer which may be set to request the parser to update | |
| /// a pointer to the field data. This value is set after the FieldValidator | |
| /// has been called and therefore should not be used by the FieldValidator. | |
| /// If unused this must be set to NULL. | |
| /// ItemPtr is not supported with ParseAcpiBitFields(). | |
| VOID **ItemPtr; | |
| /// Optional pointer to a field validator function. | |
| /// The function should directly report any appropriate error or warning | |
| /// and invoke the appropriate counter update function. | |
| /// If not used this parameter must be set to NULL. | |
| FNPTR_FIELD_VALIDATOR FieldValidator; | |
| /// Optional pointer to context specific information, | |
| /// which the Field Validator function can use to determine | |
| /// additional information about the ACPI table and make | |
| /// decisions about the field being validated. | |
| /// e.g. this could be a pointer to the ACPI table header | |
| VOID *Context; | |
| } ACPI_PARSER; | |
| /** | |
| A structure used to store the pointers to the members of the | |
| ACPI description header structure that was parsed. | |
| **/ | |
| typedef struct AcpiDescriptionHeaderInfo { | |
| /// ACPI table signature | |
| UINT32 *Signature; | |
| /// Length of the ACPI table | |
| UINT32 *Length; | |
| /// Revision | |
| UINT8 *Revision; | |
| /// Checksum | |
| UINT8 *Checksum; | |
| /// OEM Id - length is 6 bytes | |
| UINT8 *OemId; | |
| /// OEM table Id | |
| UINT64 *OemTableId; | |
| /// OEM revision Id | |
| UINT32 *OemRevision; | |
| /// Creator Id | |
| UINT32 *CreatorId; | |
| /// Creator revision | |
| UINT32 *CreatorRevision; | |
| } ACPI_DESCRIPTION_HEADER_INFO; | |
| /** | |
| This function is used to parse an ACPI table buffer. | |
| The ACPI table buffer is parsed using the ACPI table parser information | |
| specified by a pointer to an array of ACPI_PARSER elements. This parser | |
| function iterates through each item on the ACPI_PARSER array and logs the | |
| ACPI table fields. | |
| This function can optionally be used to parse ACPI tables and fetch specific | |
| field values. The ItemPtr member of the ACPI_PARSER structure (where used) | |
| is updated by this parser function to point to the selected field data | |
| (e.g. useful for variable length nested fields). | |
| @param [in] Trace Trace the ACPI fields TRUE else only parse the | |
| table. | |
| @param [in] Indent Number of spaces to indent the output. | |
| @param [in] AsciiName Optional pointer to an ASCII string that describes | |
| the table being parsed. | |
| @param [in] Ptr Pointer to the start of the buffer. | |
| @param [in] Length Length of the buffer pointed by Ptr. | |
| @param [in] Parser Pointer to an array of ACPI_PARSER structure that | |
| describes the table being parsed. | |
| @param [in] ParserItems Number of items in the ACPI_PARSER array. | |
| @retval Number of bytes parsed. | |
| **/ | |
| UINT32 | |
| EFIAPI | |
| ParseAcpi ( | |
| IN BOOLEAN Trace, | |
| IN UINT32 Indent, | |
| IN CONST CHAR8 *AsciiName OPTIONAL, | |
| IN UINT8 *Ptr, | |
| IN UINT32 Length, | |
| IN CONST ACPI_PARSER *Parser, | |
| IN UINT32 ParserItems | |
| ); | |
| /** | |
| This function is used to parse an ACPI table bitfield buffer. | |
| The ACPI table buffer is parsed using the ACPI table parser information | |
| specified by a pointer to an array of ACPI_PARSER elements. This parser | |
| function iterates through each item on the ACPI_PARSER array and logs the ACPI table bitfields. | |
| This function can optionally be used to parse ACPI tables and fetch specific | |
| field values. The ItemPtr member of the ACPI_PARSER structure (where used) | |
| is updated by this parser function to point to the selected field data | |
| (e.g. useful for variable length nested fields). | |
| ItemPtr member of ACPI_PARSER is not supported with this function. | |
| @param [in] Trace Trace the ACPI fields TRUE else only parse the | |
| table. | |
| @param [in] Indent Number of spaces to indent the output. | |
| @param [in] AsciiName Optional pointer to an ASCII string that describes | |
| the table being parsed. | |
| @param [in] Ptr Pointer to the start of the buffer. | |
| @param [in] Length Length of the buffer pointed by Ptr. | |
| @param [in] Parser Pointer to an array of ACPI_PARSER structure that | |
| describes the table being parsed. | |
| @param [in] ParserItems Number of items in the ACPI_PARSER array. | |
| @retval Number of bits parsed. | |
| **/ | |
| UINT32 | |
| EFIAPI | |
| ParseAcpiBitFields ( | |
| IN BOOLEAN Trace, | |
| IN UINT32 Indent, | |
| IN CONST CHAR8 *AsciiName OPTIONAL, | |
| IN UINT8 *Ptr, | |
| IN UINT32 Length, | |
| IN CONST ACPI_PARSER *Parser, | |
| IN UINT32 ParserItems | |
| ); | |
| /** | |
| This is a helper macro to pass parameters to the Parser functions. | |
| @param [in] Parser The name of the ACPI_PARSER array describing the | |
| ACPI table fields. | |
| **/ | |
| #define PARSER_PARAMS(Parser) Parser, sizeof (Parser) / sizeof (Parser[0]) | |
| /** | |
| This is a helper macro for describing the ACPI header fields. | |
| @param [out] Info Pointer to retrieve the ACPI table header information. | |
| **/ | |
| #define PARSE_ACPI_HEADER(Info) \ | |
| { L"Signature", 4, 0, NULL, Dump4Chars, \ | |
| (VOID**)&(Info)->Signature , NULL, NULL }, \ | |
| { L"Length", 4, 4, L"%d", NULL, \ | |
| (VOID**)&(Info)->Length, NULL, NULL }, \ | |
| { L"Revision", 1, 8, L"%d", NULL, \ | |
| (VOID**)&(Info)->Revision, NULL, NULL }, \ | |
| { L"Checksum", 1, 9, L"0x%X", NULL, \ | |
| (VOID**)&(Info)->Checksum, NULL, NULL }, \ | |
| { L"Oem ID", 6, 10, NULL, Dump6Chars, \ | |
| (VOID**)&(Info)->OemId, NULL, NULL }, \ | |
| { L"Oem Table ID", 8, 16, NULL, Dump8Chars, \ | |
| (VOID**)&(Info)->OemTableId, NULL, NULL }, \ | |
| { L"Oem Revision", 4, 24, L"0x%X", NULL, \ | |
| (VOID**)&(Info)->OemRevision, NULL, NULL }, \ | |
| { L"Creator ID", 4, 28, NULL, Dump4Chars, \ | |
| (VOID**)&(Info)->CreatorId, NULL, NULL }, \ | |
| { L"Creator Revision", 4, 32, L"0x%X", NULL, \ | |
| (VOID**)&(Info)->CreatorRevision, NULL, NULL } | |
| /** | |
| This function indents and traces the GAS structure as described by the GasParser. | |
| @param [in] Ptr Pointer to the start of the buffer. | |
| @param [in] Indent Number of spaces to indent the output. | |
| @param [in] Length Length of the GAS structure buffer. | |
| @retval Number of bytes parsed. | |
| **/ | |
| UINT32 | |
| EFIAPI | |
| DumpGasStruct ( | |
| IN UINT8 *Ptr, | |
| IN UINT32 Indent, | |
| IN UINT32 Length | |
| ); | |
| /** | |
| This function traces the GAS structure as described by the GasParser. | |
| @param [in] Format Optional format string for tracing the data. | |
| @param [in] Ptr Pointer to the start of the buffer. | |
| @param [in] Length Length of the field. | |
| **/ | |
| VOID | |
| EFIAPI | |
| DumpGas ( | |
| IN CONST CHAR16 *Format OPTIONAL, | |
| IN UINT8 *Ptr, | |
| IN UINT32 Length | |
| ); | |
| /** | |
| This function traces the ACPI header as described by the AcpiHeaderParser. | |
| @param [in] Ptr Pointer to the start of the buffer. | |
| @retval Number of bytes parsed. | |
| **/ | |
| UINT32 | |
| EFIAPI | |
| DumpAcpiHeader ( | |
| IN UINT8 *Ptr | |
| ); | |
| /** | |
| This function parses the ACPI header as described by the AcpiHeaderParser. | |
| This function optionally returns the Signature, Length and revision of the | |
| ACPI table. | |
| @param [in] Ptr Pointer to the start of the buffer. | |
| @param [out] Signature Gets location of the ACPI table signature. | |
| @param [out] Length Gets location of the length of the ACPI table. | |
| @param [out] Revision Gets location of the revision of the ACPI table. | |
| @retval Number of bytes parsed. | |
| **/ | |
| UINT32 | |
| EFIAPI | |
| ParseAcpiHeader ( | |
| IN UINT8 *Ptr, | |
| OUT CONST UINT32 **Signature, | |
| OUT CONST UINT32 **Length, | |
| OUT CONST UINT8 **Revision | |
| ); | |
| /** | |
| This function parses the ACPI AEST table. | |
| When trace is enabled this function parses the AEST table and | |
| traces the ACPI table fields. | |
| This function also performs validation of the ACPI table fields. | |
| @param [in] Trace If TRUE, trace the ACPI fields. | |
| @param [in] Ptr Pointer to the start of the buffer. | |
| @param [in] AcpiTableLength Length of the ACPI table. | |
| @param [in] AcpiTableRevision Revision of the ACPI table. | |
| **/ | |
| VOID | |
| EFIAPI | |
| ParseAcpiAest ( | |
| IN BOOLEAN Trace, | |
| IN UINT8 *Ptr, | |
| IN UINT32 AcpiTableLength, | |
| IN UINT8 AcpiTableRevision | |
| ); | |
| /** | |
| This function parses the ACPI AGDI table. | |
| When trace is enabled this function parses the AGDI table and | |
| traces the ACPI table fields. | |
| This function also performs validation of the ACPI table fields. | |
| @param [in] Trace If TRUE, trace the ACPI fields. | |
| @param [in] Ptr Pointer to the start of the buffer. | |
| @param [in] AcpiTableLength Length of the ACPI table. | |
| @param [in] AcpiTableRevision Revision of the ACPI table. | |
| **/ | |
| VOID | |
| EFIAPI | |
| ParseAcpiAgdi ( | |
| IN BOOLEAN Trace, | |
| IN UINT8 *Ptr, | |
| IN UINT32 AcpiTableLength, | |
| IN UINT8 AcpiTableRevision | |
| ); | |
| /** | |
| This function parses the ACPI APMT table. | |
| When trace is enabled this function parses the APMT table and | |
| traces the ACPI table fields. | |
| This function also performs validation of the ACPI table fields. | |
| @param [in] Trace If TRUE, trace the ACPI fields. | |
| @param [in] Ptr Pointer to the start of the buffer. | |
| @param [in] AcpiTableLength Length of the ACPI table. | |
| @param [in] AcpiTableRevision Revision of the ACPI table. | |
| **/ | |
| VOID | |
| EFIAPI | |
| ParseAcpiApmt ( | |
| IN BOOLEAN Trace, | |
| IN UINT8 *Ptr, | |
| IN UINT32 AcpiTableLength, | |
| IN UINT8 AcpiTableRevision | |
| ); | |
| /** | |
| This function parses the ACPI BGRT table. | |
| When trace is enabled this function parses the BGRT table and | |
| traces the ACPI table fields. | |
| This function also performs validation of the ACPI table fields. | |
| @param [in] Trace If TRUE, trace the ACPI fields. | |
| @param [in] Ptr Pointer to the start of the buffer. | |
| @param [in] AcpiTableLength Length of the ACPI table. | |
| @param [in] AcpiTableRevision Revision of the ACPI table. | |
| **/ | |
| VOID | |
| EFIAPI | |
| ParseAcpiBgrt ( | |
| IN BOOLEAN Trace, | |
| IN UINT8 *Ptr, | |
| IN UINT32 AcpiTableLength, | |
| IN UINT8 AcpiTableRevision | |
| ); | |
| /** | |
| This function parses the ACPI DBG2 table. | |
| When trace is enabled this function parses the DBG2 table and | |
| traces the ACPI table fields. | |
| This function also performs validation of the ACPI table fields. | |
| @param [in] Trace If TRUE, trace the ACPI fields. | |
| @param [in] Ptr Pointer to the start of the buffer. | |
| @param [in] AcpiTableLength Length of the ACPI table. | |
| @param [in] AcpiTableRevision Revision of the ACPI table. | |
| **/ | |
| VOID | |
| EFIAPI | |
| ParseAcpiDbg2 ( | |
| IN BOOLEAN Trace, | |
| IN UINT8 *Ptr, | |
| IN UINT32 AcpiTableLength, | |
| IN UINT8 AcpiTableRevision | |
| ); | |
| /** | |
| This function parses the ACPI DSDT table. | |
| When trace is enabled this function parses the DSDT table and | |
| traces the ACPI table fields. | |
| For the DSDT table only the ACPI header fields are parsed and | |
| traced. | |
| @param [in] Trace If TRUE, trace the ACPI fields. | |
| @param [in] Ptr Pointer to the start of the buffer. | |
| @param [in] AcpiTableLength Length of the ACPI table. | |
| @param [in] AcpiTableRevision Revision of the ACPI table. | |
| **/ | |
| VOID | |
| EFIAPI | |
| ParseAcpiDsdt ( | |
| IN BOOLEAN Trace, | |
| IN UINT8 *Ptr, | |
| IN UINT32 AcpiTableLength, | |
| IN UINT8 AcpiTableRevision | |
| ); | |
| /** | |
| This function parses the EINJ table. | |
| When trace is enabled this function parses the EINJ table and | |
| traces the ACPI table fields. | |
| This function also performs validation of the ACPI table fields. | |
| @param [in] Trace If TRUE, trace the ACPI fields. | |
| @param [in] Ptr Pointer to the start of the buffer. | |
| @param [in] AcpiTableLength Length of the ACPI table. | |
| @param [in] AcpiTableRevision Revision of the ACPI table. | |
| **/ | |
| VOID | |
| EFIAPI | |
| ParseAcpiEinj ( | |
| IN BOOLEAN Trace, | |
| IN UINT8 *Ptr, | |
| IN UINT32 AcpiTableLength, | |
| IN UINT8 AcpiTableRevision | |
| ); | |
| /** | |
| This function parses the ACPI ERST table. | |
| When trace is enabled this function parses the ERST table and | |
| traces the ACPI table fields. | |
| This function also performs validation of the ACPI table fields. | |
| @param [in] Trace If TRUE, trace the ACPI fields. | |
| @param [in] Ptr Pointer to the start of the buffer. | |
| @param [in] AcpiTableLength Length of the ACPI table. | |
| @param [in] AcpiTableRevision Revision of the ACPI table. | |
| **/ | |
| VOID | |
| EFIAPI | |
| ParseAcpiErst ( | |
| IN BOOLEAN Trace, | |
| IN UINT8 *Ptr, | |
| IN UINT32 AcpiTableLength, | |
| IN UINT8 AcpiTableRevision | |
| ); | |
| /** | |
| This function parses the ACPI FACS table. | |
| When trace is enabled this function parses the FACS table and | |
| traces the ACPI table fields. | |
| This function also performs validation of the ACPI table fields. | |
| @param [in] Trace If TRUE, trace the ACPI fields. | |
| @param [in] Ptr Pointer to the start of the buffer. | |
| @param [in] AcpiTableLength Length of the ACPI table. | |
| @param [in] AcpiTableRevision Revision of the ACPI table. | |
| **/ | |
| VOID | |
| EFIAPI | |
| ParseAcpiFacs ( | |
| IN BOOLEAN Trace, | |
| IN UINT8 *Ptr, | |
| IN UINT32 AcpiTableLength, | |
| IN UINT8 AcpiTableRevision | |
| ); | |
| /** | |
| This function parses the ACPI FADT table. | |
| This function parses the FADT table and optionally traces the ACPI | |
| table fields. | |
| This function also performs validation of the ACPI table fields. | |
| @param [in] Trace If TRUE, trace the ACPI fields. | |
| @param [in] Ptr Pointer to the start of the buffer. | |
| @param [in] AcpiTableLength Length of the ACPI table. | |
| @param [in] AcpiTableRevision Revision of the ACPI table. | |
| **/ | |
| VOID | |
| EFIAPI | |
| ParseAcpiFadt ( | |
| IN BOOLEAN Trace, | |
| IN UINT8 *Ptr, | |
| IN UINT32 AcpiTableLength, | |
| IN UINT8 AcpiTableRevision | |
| ); | |
| /** | |
| This function parses the ACPI GTDT table. | |
| When trace is enabled this function parses the GTDT table and | |
| traces the ACPI table fields. | |
| This function also parses the following platform timer structures: | |
| - GT Block timer | |
| - Watchdog timer | |
| This function also performs validation of the ACPI table fields. | |
| @param [in] Trace If TRUE, trace the ACPI fields. | |
| @param [in] Ptr Pointer to the start of the buffer. | |
| @param [in] AcpiTableLength Length of the ACPI table. | |
| @param [in] AcpiTableRevision Revision of the ACPI table. | |
| **/ | |
| VOID | |
| EFIAPI | |
| ParseAcpiGtdt ( | |
| IN BOOLEAN Trace, | |
| IN UINT8 *Ptr, | |
| IN UINT32 AcpiTableLength, | |
| IN UINT8 AcpiTableRevision | |
| ); | |
| /** | |
| This function parses the ACPI HEST table. | |
| When trace is enabled this function parses the HEST table and | |
| traces the ACPI table fields. | |
| This function also performs validation of the ACPI table fields. | |
| @param [in] Trace If TRUE, trace the ACPI fields. | |
| @param [in] Ptr Pointer to the start of the buffer. | |
| @param [in] AcpiTableLength Length of the ACPI table. | |
| @param [in] AcpiTableRevision Revision of the ACPI table. | |
| **/ | |
| VOID | |
| EFIAPI | |
| ParseAcpiHest ( | |
| IN BOOLEAN Trace, | |
| IN UINT8 *Ptr, | |
| IN UINT32 AcpiTableLength, | |
| IN UINT8 AcpiTableRevision | |
| ); | |
| /** | |
| This function parses the ACPI HMAT table. | |
| When trace is enabled this function parses the HMAT table and | |
| traces the ACPI table fields. | |
| This function parses the following HMAT structures: | |
| - Memory Proximity Domain Attributes Structure (Type 0) | |
| - System Locality Latency and Bandwidth Info Structure (Type 1) | |
| - Memory Side Cache Info structure (Type 2) | |
| This function also performs validation of the ACPI table fields. | |
| @param [in] Trace If TRUE, trace the ACPI fields. | |
| @param [in] Ptr Pointer to the start of the buffer. | |
| @param [in] AcpiTableLength Length of the ACPI table. | |
| @param [in] AcpiTableRevision Revision of the ACPI table. | |
| **/ | |
| VOID | |
| EFIAPI | |
| ParseAcpiHmat ( | |
| IN BOOLEAN Trace, | |
| IN UINT8 *Ptr, | |
| IN UINT32 AcpiTableLength, | |
| IN UINT8 AcpiTableRevision | |
| ); | |
| /** | |
| This function parses the ACPI HPET table. | |
| @param [in] Trace If TRUE, trace the ACPI fields. | |
| @param [in] Ptr Pointer to the start of the buffer. | |
| @param [in] AcpiTableLength Length of the ACPI table. | |
| @param [in] AcpiTableRevision Revision of the ACPI table. | |
| **/ | |
| VOID | |
| EFIAPI | |
| ParseAcpiHpet ( | |
| IN BOOLEAN Trace, | |
| IN UINT8 *Ptr, | |
| IN UINT32 AcpiTableLength, | |
| IN UINT8 AcpiTableRevision | |
| ); | |
| /** | |
| This function parses the ACPI IORT table. | |
| When trace is enabled this function parses the IORT table and | |
| traces the ACPI fields. | |
| This function also parses the following nodes: | |
| - ITS Group | |
| - Named Component | |
| - Root Complex | |
| - SMMUv1/2 | |
| - SMMUv3 | |
| - PMCG | |
| This function also performs validation of the ACPI table fields. | |
| @param [in] Trace If TRUE, trace the ACPI fields. | |
| @param [in] Ptr Pointer to the start of the buffer. | |
| @param [in] AcpiTableLength Length of the ACPI table. | |
| @param [in] AcpiTableRevision Revision of the ACPI table. | |
| **/ | |
| VOID | |
| EFIAPI | |
| ParseAcpiIort ( | |
| IN BOOLEAN Trace, | |
| IN UINT8 *Ptr, | |
| IN UINT32 AcpiTableLength, | |
| IN UINT8 AcpiTableRevision | |
| ); | |
| /** | |
| This function parses the ACPI MADT table. | |
| When trace is enabled this function parses the MADT table and | |
| traces the ACPI table fields. | |
| This function currently parses the following Interrupt Controller | |
| Structures: | |
| - GICC | |
| - GICD | |
| - GIC MSI Frame | |
| - GICR | |
| - GIC ITS | |
| This function also performs validation of the ACPI table fields. | |
| @param [in] Trace If TRUE, trace the ACPI fields. | |
| @param [in] Ptr Pointer to the start of the buffer. | |
| @param [in] AcpiTableLength Length of the ACPI table. | |
| @param [in] AcpiTableRevision Revision of the ACPI table. | |
| **/ | |
| VOID | |
| EFIAPI | |
| ParseAcpiMadt ( | |
| IN BOOLEAN Trace, | |
| IN UINT8 *Ptr, | |
| IN UINT32 AcpiTableLength, | |
| IN UINT8 AcpiTableRevision | |
| ); | |
| /** | |
| This function parses the ACPI MCFG table. | |
| When trace is enabled this function parses the MCFG table and | |
| traces the ACPI table fields. | |
| This function also performs validation of the ACPI table fields. | |
| @param [in] Trace If TRUE, trace the ACPI fields. | |
| @param [in] Ptr Pointer to the start of the buffer. | |
| @param [in] AcpiTableLength Length of the ACPI table. | |
| @param [in] AcpiTableRevision Revision of the ACPI table. | |
| **/ | |
| VOID | |
| EFIAPI | |
| ParseAcpiMcfg ( | |
| IN BOOLEAN Trace, | |
| IN UINT8 *Ptr, | |
| IN UINT32 AcpiTableLength, | |
| IN UINT8 AcpiTableRevision | |
| ); | |
| /** | |
| This function parses the ACPI MPAM table. | |
| When trace is enabled this function parses the MPAM table and | |
| traces the ACPI table fields. | |
| This function also performs validation of the ACPI table fields. | |
| @param [in] Trace If TRUE, trace the ACPI fields. | |
| @param [in] Ptr Pointer to the start of the buffer. | |
| @param [in] AcpiTableLength Length of the ACPI table. | |
| @param [in] AcpiTableRevision Revision of the ACPI table. | |
| **/ | |
| VOID | |
| EFIAPI | |
| ParseAcpiMpam ( | |
| IN BOOLEAN Trace, | |
| IN UINT8 *Ptr, | |
| IN UINT32 AcpiTableLength, | |
| IN UINT8 AcpiTableRevision | |
| ); | |
| /** | |
| This function parses the ACPI PCCT table including its sub-structures | |
| of type 0 through 4. | |
| When trace is enabled this function parses the PCCT table and | |
| traces the ACPI table fields. | |
| This function also performs validation of the ACPI table fields. | |
| @param [in] Trace If TRUE, trace the ACPI fields. | |
| @param [in] Ptr Pointer to the start of the buffer. | |
| @param [in] AcpiTableLength Length of the ACPI table. | |
| @param [in] AcpiTableRevision Revision of the ACPI table. | |
| **/ | |
| VOID | |
| EFIAPI | |
| ParseAcpiPcct ( | |
| IN BOOLEAN Trace, | |
| IN UINT8 *Ptr, | |
| IN UINT32 AcpiTableLength, | |
| IN UINT8 AcpiTableRevision | |
| ); | |
| /** | |
| This function parses the ACPI PPTT table. | |
| When trace is enabled this function parses the PPTT table and | |
| traces the ACPI table fields. | |
| This function also performs validation of the ACPI table fields. | |
| @param [in] Trace If TRUE, trace the ACPI fields. | |
| @param [in] Ptr Pointer to the start of the buffer. | |
| @param [in] AcpiTableLength Length of the ACPI table. | |
| @param [in] AcpiTableRevision Revision of the ACPI table. | |
| **/ | |
| VOID | |
| EFIAPI | |
| ParseAcpiPptt ( | |
| IN BOOLEAN Trace, | |
| IN UINT8 *Ptr, | |
| IN UINT32 AcpiTableLength, | |
| IN UINT8 AcpiTableRevision | |
| ); | |
| /** | |
| This function parses the ACPI RAS2 table. | |
| When trace is enabled this function parses the RAS2 table and | |
| traces the ACPI table fields. | |
| This function parses the RAS2 ACPI table along with PCC Entries | |
| This function also performs validation of the ACPI table fields. | |
| @param [in] Trace If TRUE, trace the ACPI fields. | |
| @param [in] Ptr Pointer to the start of the buffer. | |
| @param [in] AcpiTableLength Length of the ACPI table. | |
| @param [in] AcpiTableRevision Revision of the ACPI table. | |
| **/ | |
| VOID | |
| EFIAPI | |
| ParseAcpiRas2 ( | |
| IN BOOLEAN Trace, | |
| IN UINT8 *Ptr, | |
| IN UINT32 AcpiTableLength, | |
| IN UINT8 AcpiTableRevision | |
| ); | |
| /** | |
| This function parses the ACPI RASF table. | |
| When trace is enabled this function parses the RASF table and | |
| traces the ACPI table fields. | |
| This function parses the RASF ACPI table | |
| This function also performs validation of the ACPI table fields. | |
| @param [in] Trace If TRUE, trace the ACPI fields. | |
| @param [in] Ptr Pointer to the start of the buffer. | |
| @param [in] AcpiTableLength Length of the ACPI table. | |
| @param [in] AcpiTableRevision Revision of the ACPI table. | |
| **/ | |
| VOID | |
| EFIAPI | |
| ParseAcpiRasf ( | |
| IN BOOLEAN Trace, | |
| IN UINT8 *Ptr, | |
| IN UINT32 AcpiTableLength, | |
| IN UINT8 AcpiTableRevision | |
| ); | |
| /** | |
| This function parses the ACPI RIMT table. | |
| When trace is enabled this function parses the RIMT table and | |
| traces the ACPI table fields. | |
| @param [in] Trace If TRUE, trace the ACPI fields. | |
| @param [in] Ptr Pointer to the start of the buffer. | |
| @param [in] AcpiTableLength Length of the ACPI table. | |
| @param [in] AcpiTableRevision Revision of the ACPI table. | |
| **/ | |
| VOID | |
| EFIAPI | |
| ParseAcpiRimt ( | |
| IN BOOLEAN Trace, | |
| IN UINT8 *Ptr, | |
| IN UINT32 AcpiTableLength, | |
| IN UINT8 AcpiTableRevision | |
| ); | |
| /** | |
| This function parses the ACPI RSDP table. | |
| This function invokes the parser for the XSDT table. | |
| * Note - This function does not support parsing of RSDT table. | |
| This function also performs a RAW dump of the ACPI table and | |
| validates the checksum. | |
| @param [in] Trace If TRUE, trace the ACPI fields. | |
| @param [in] Ptr Pointer to the start of the buffer. | |
| @param [in] AcpiTableLength Length of the ACPI table. | |
| @param [in] AcpiTableRevision Revision of the ACPI table. | |
| **/ | |
| VOID | |
| EFIAPI | |
| ParseAcpiRsdp ( | |
| IN BOOLEAN Trace, | |
| IN UINT8 *Ptr, | |
| IN UINT32 AcpiTableLength, | |
| IN UINT8 AcpiTableRevision | |
| ); | |
| /** | |
| This function parses the ACPI SLIT table. | |
| When trace is enabled this function parses the SLIT table and | |
| traces the ACPI table fields. | |
| This function also validates System Localities for the following: | |
| - Diagonal elements have a normalized value of 10 | |
| - Relative distance from System Locality at i*N+j is same as | |
| j*N+i | |
| @param [in] Trace If TRUE, trace the ACPI fields. | |
| @param [in] Ptr Pointer to the start of the buffer. | |
| @param [in] AcpiTableLength Length of the ACPI table. | |
| @param [in] AcpiTableRevision Revision of the ACPI table. | |
| **/ | |
| VOID | |
| EFIAPI | |
| ParseAcpiSlit ( | |
| IN BOOLEAN Trace, | |
| IN UINT8 *Ptr, | |
| IN UINT32 AcpiTableLength, | |
| IN UINT8 AcpiTableRevision | |
| ); | |
| /** | |
| This function parses the ACPI SPCR table. | |
| When trace is enabled this function parses the SPCR table and | |
| traces the ACPI table fields. | |
| This function also performs validations of the ACPI table fields. | |
| @param [in] Trace If TRUE, trace the ACPI fields. | |
| @param [in] Ptr Pointer to the start of the buffer. | |
| @param [in] AcpiTableLength Length of the ACPI table. | |
| @param [in] AcpiTableRevision Revision of the ACPI table. | |
| **/ | |
| VOID | |
| EFIAPI | |
| ParseAcpiSpcr ( | |
| IN BOOLEAN Trace, | |
| IN UINT8 *Ptr, | |
| IN UINT32 AcpiTableLength, | |
| IN UINT8 AcpiTableRevision | |
| ); | |
| /** | |
| This function parses the ACPI SRAT table. | |
| When trace is enabled this function parses the SRAT table and | |
| traces the ACPI table fields. | |
| This function parses the following Resource Allocation Structures: | |
| - Processor Local APIC/SAPIC Affinity Structure | |
| - Memory Affinity Structure | |
| - Processor Local x2APIC Affinity Structure | |
| - GICC Affinity Structure | |
| This function also performs validation of the ACPI table fields. | |
| @param [in] Trace If TRUE, trace the ACPI fields. | |
| @param [in] Ptr Pointer to the start of the buffer. | |
| @param [in] AcpiTableLength Length of the ACPI table. | |
| @param [in] AcpiTableRevision Revision of the ACPI table. | |
| **/ | |
| VOID | |
| EFIAPI | |
| ParseAcpiSrat ( | |
| IN BOOLEAN Trace, | |
| IN UINT8 *Ptr, | |
| IN UINT32 AcpiTableLength, | |
| IN UINT8 AcpiTableRevision | |
| ); | |
| /** | |
| This function parses the ACPI SSDT table. | |
| When trace is enabled this function parses the SSDT table and | |
| traces the ACPI table fields. | |
| For the SSDT table only the ACPI header fields are | |
| parsed and traced. | |
| @param [in] Trace If TRUE, trace the ACPI fields. | |
| @param [in] Ptr Pointer to the start of the buffer. | |
| @param [in] AcpiTableLength Length of the ACPI table. | |
| @param [in] AcpiTableRevision Revision of the ACPI table. | |
| **/ | |
| VOID | |
| EFIAPI | |
| ParseAcpiSsdt ( | |
| IN BOOLEAN Trace, | |
| IN UINT8 *Ptr, | |
| IN UINT32 AcpiTableLength, | |
| IN UINT8 AcpiTableRevision | |
| ); | |
| /** | |
| This function parses the ACPI TPM2 table. | |
| @param [in] Trace If TRUE, trace the ACPI fields. | |
| @param [in] Ptr Pointer to the start of the buffer. | |
| @param [in] AcpiTableLength Length of the ACPI table. | |
| @param [in] AcpiTableRevision Revision of the ACPI table. | |
| **/ | |
| VOID | |
| EFIAPI | |
| ParseAcpiTpm2 ( | |
| IN BOOLEAN Trace, | |
| IN UINT8 *Ptr, | |
| IN UINT32 AcpiTableLength, | |
| IN UINT8 AcpiTableRevision | |
| ); | |
| /** | |
| This function parses the ACPI WSMT table. | |
| @param [in] Trace If TRUE, trace the ACPI fields. | |
| @param [in] Ptr Pointer to the start of the buffer. | |
| @param [in] AcpiTableLength Length of the ACPI table. | |
| @param [in] AcpiTableRevision Revision of the ACPI table. | |
| **/ | |
| VOID | |
| EFIAPI | |
| ParseAcpiWsmt ( | |
| IN BOOLEAN Trace, | |
| IN UINT8 *Ptr, | |
| IN UINT32 AcpiTableLength, | |
| IN UINT8 AcpiTableRevision | |
| ); | |
| /** | |
| This function parses the ACPI XSDT table | |
| and optionally traces the ACPI table fields. | |
| This function also performs validation of the XSDT table. | |
| @param [in] Trace If TRUE, trace the ACPI fields. | |
| @param [in] Ptr Pointer to the start of the buffer. | |
| @param [in] AcpiTableLength Length of the ACPI table. | |
| @param [in] AcpiTableRevision Revision of the ACPI table. | |
| **/ | |
| VOID | |
| EFIAPI | |
| ParseAcpiXsdt ( | |
| IN BOOLEAN Trace, | |
| IN UINT8 *Ptr, | |
| IN UINT32 AcpiTableLength, | |
| IN UINT8 AcpiTableRevision | |
| ); | |
| #endif // ACPIPARSER_H_ |