Skip to content

Commit

Permalink
ShellPkg/AcpiView: RASF Parser
Browse files Browse the repository at this point in the history
Add a new parser for the RASF Table as specified in ACPI6.5

Signed-off-by: Carsten Haitzler <[email protected]>
  • Loading branch information
Carsten Haitzler committed Oct 2, 2024
1 parent 4f46738 commit 5aaa564
Show file tree
Hide file tree
Showing 4 changed files with 86 additions and 0 deletions.
23 changes: 23 additions & 0 deletions ShellPkg/Library/UefiShellAcpiViewCommandLib/AcpiParser.h
Original file line number Diff line number Diff line change
Expand Up @@ -1029,6 +1029,29 @@ ParseAcpiRas2 (
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 RSDP table.
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,61 @@
/** @file
RASF table parser
Copyright (c) 2024, Arm Limited. All rights reserved.
SPDX-License-Identifier: BSD-2-Clause-Patent
@par Reference(s):
- ACPI 6.5 Specification - August 2022
**/

#include <Library/PrintLib.h>
#include <Library/BaseLib.h>
#include <Library/UefiLib.h>
#include "AcpiParser.h"
#include "AcpiView.h"

STATIC ACPI_DESCRIPTION_HEADER_INFO AcpiHdrInfo;

/**
An ACPI_PARSER array describing the ACPI RASF Table.
**/
STATIC CONST ACPI_PARSER RasfParser[] = {
PARSE_ACPI_HEADER (&AcpiHdrInfo),
{ L"RASF PCC Identifier", 12,36, L"%02X %02X %02X %02X - %02X %02X %02X %02X - %02X %02X %02X %02X", Dump12Chars, NULL, NULL, NULL }
};

/**
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 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
)
{
if (!Trace) {
return;
}

// Parse ACPI Header + RASF "fixed" fields
ParseAcpi (
Trace,
0,
"RASF",
Ptr,
AcpiTableLength,
PARSER_PARAMS (RasfParser)
);
}
Original file line number Diff line number Diff line change
Expand Up @@ -72,6 +72,7 @@ ACPI_TABLE_PARSER ParserList[] = {
{ EFI_ACPI_6_4_PROCESSOR_PROPERTIES_TOPOLOGY_TABLE_STRUCTURE_SIGNATURE,
ParseAcpiPptt },
{ EFI_ACPI_6_5_ACPI_RAS2_FEATURE_TABLE_SIGNATURE, ParseAcpiRas2 },
{ EFI_ACPI_6_5_ACPI_RAS_FEATURE_TABLE_SIGNATURE, ParseAcpiRasf },
{ RSDP_TABLE_INFO, ParseAcpiRsdp },
{ EFI_ACPI_6_2_SYSTEM_LOCALITY_INFORMATION_TABLE_SIGNATURE, ParseAcpiSlit },
{ EFI_ACPI_6_2_SERIAL_PORT_CONSOLE_REDIRECTION_TABLE_SIGNATURE, ParseAcpiSpcr },
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -51,6 +51,7 @@
Parsers/Pptt/PpttParser.c
Parsers/Pptt/PpttParser.h
Parsers/Ras2/Ras2Parser.c
Parsers/Rasf/RasfParser.c
Parsers/Rsdp/RsdpParser.c
Parsers/Slit/SlitParser.c
Parsers/Spcr/SpcrParser.c
Expand Down

0 comments on commit 5aaa564

Please sign in to comment.