123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900 |
- /** @file
- Header file for ACPI parser
- Copyright (c) 2016 - 2020, Arm Limited. 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.
- **/
- VOID
- EFIAPI
- Dump3Chars (
- IN CONST CHAR16 *Format OPTIONAL,
- IN UINT8 *Ptr
- );
- /**
- 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.
- **/
- VOID
- EFIAPI
- Dump4Chars (
- IN CONST CHAR16 *Format OPTIONAL,
- IN UINT8 *Ptr
- );
- /**
- 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.
- **/
- VOID
- EFIAPI
- Dump6Chars (
- IN CONST CHAR16 *Format OPTIONAL,
- IN UINT8 *Ptr
- );
- /**
- 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.
- **/
- VOID
- EFIAPI
- Dump8Chars (
- IN CONST CHAR16 *Format OPTIONAL,
- IN UINT8 *Ptr
- );
- /**
- 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.
- **/
- VOID
- EFIAPI
- Dump12Chars (
- IN CONST CHAR16 *Format OPTIONAL,
- IN UINT8 *Ptr
- );
- /**
- 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.
- **/
- typedef VOID (EFIAPI *FNPTR_PRINT_FORMATTER)(CONST CHAR16 *Format, UINT8 *Ptr);
- /**
- 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] 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, 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'.
- 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)
- UINT32 Length;
- /// The offset of the field from the start of the table.
- /// (Byte Offset column from ACPI table spec)
- 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.
- 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 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.
- **/
- VOID
- EFIAPI
- DumpGas (
- IN CONST CHAR16 *Format OPTIONAL,
- IN UINT8 *Ptr
- );
- /**
- 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 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 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 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 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 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 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 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_
|