summaryrefslogtreecommitdiff
path: root/ShellPkg/Library/UefiShellAcpiViewCommandLib/AcpiTableParser.c
diff options
context:
space:
mode:
authorkx <kx@radix.pro>2024-06-04 06:43:08 +0300
committerkx <kx@radix.pro>2024-06-04 06:43:08 +0300
commit7e2ccccace24636f29ddc210b94606abd4c7e42b (patch)
tree545d43ea12671048956cafeb12303e84d601e571 /ShellPkg/Library/UefiShellAcpiViewCommandLib/AcpiTableParser.c
parent27b044605cd5f6b33a3d231576003850b3fe305b (diff)
downloadedk2-trunk.tar.xz
Renormalized end-of-lines from master@27b044605cd5f6b33a3d231576003850b3fe305btrunk
Diffstat (limited to 'ShellPkg/Library/UefiShellAcpiViewCommandLib/AcpiTableParser.c')
-rw-r--r--ShellPkg/Library/UefiShellAcpiViewCommandLib/AcpiTableParser.c506
1 files changed, 253 insertions, 253 deletions
diff --git a/ShellPkg/Library/UefiShellAcpiViewCommandLib/AcpiTableParser.c b/ShellPkg/Library/UefiShellAcpiViewCommandLib/AcpiTableParser.c
index 75b949429e..7d674bfbe7 100644
--- a/ShellPkg/Library/UefiShellAcpiViewCommandLib/AcpiTableParser.c
+++ b/ShellPkg/Library/UefiShellAcpiViewCommandLib/AcpiTableParser.c
@@ -1,253 +1,253 @@
-/** @file
- ACPI table parser
-
- Copyright (c) 2016 - 2020, ARM Limited. All rights reserved.
- SPDX-License-Identifier: BSD-2-Clause-Patent
-
- @par Glossary:
- - Sbbr or SBBR - Server Base Boot Requirements
-
- @par Reference(s):
- - Arm Server Base Boot Requirements 1.2, September 2019
-**/
-
-#include <Uefi.h>
-#include <IndustryStandard/Acpi.h>
-#include <Library/UefiLib.h>
-#include "AcpiParser.h"
-#include "AcpiTableParser.h"
-#include "AcpiView.h"
-#include "AcpiViewConfig.h"
-
-#if defined (MDE_CPU_ARM) || defined (MDE_CPU_AARCH64)
- #include "Arm/SbbrValidator.h"
-#endif
-
-/**
- A list of registered ACPI table parsers.
-**/
-STATIC ACPI_TABLE_PARSER mTableParserList[MAX_ACPI_TABLE_PARSERS];
-
-/**
- Register the ACPI table Parser
-
- This function registers the ACPI table parser.
-
- @param [in] Signature The ACPI table signature.
- @param [in] ParserProc The ACPI table parser.
-
- @retval EFI_SUCCESS The parser is registered.
- @retval EFI_INVALID_PARAMETER A parameter is invalid.
- @retval EFI_ALREADY_STARTED The parser for the Table
- was already registered.
- @retval EFI_OUT_OF_RESOURCES No space to register the
- parser.
-**/
-EFI_STATUS
-EFIAPI
-RegisterParser (
- IN UINT32 Signature,
- IN PARSE_ACPI_TABLE_PROC ParserProc
- )
-{
- UINT32 Index;
-
- if ((ParserProc == NULL) || (Signature == ACPI_PARSER_SIGNATURE_NULL)) {
- return EFI_INVALID_PARAMETER;
- }
-
- // Search if a parser is already installed
- for (Index = 0;
- Index < (sizeof (mTableParserList) / sizeof (mTableParserList[0]));
- Index++)
- {
- if (Signature == mTableParserList[Index].Signature) {
- if (mTableParserList[Index].Parser != NULL) {
- return EFI_ALREADY_STARTED;
- }
- }
- }
-
- // Find the first free slot and register the parser
- for (Index = 0;
- Index < (sizeof (mTableParserList) / sizeof (mTableParserList[0]));
- Index++)
- {
- if (mTableParserList[Index].Signature == ACPI_PARSER_SIGNATURE_NULL) {
- mTableParserList[Index].Signature = Signature;
- mTableParserList[Index].Parser = ParserProc;
- return EFI_SUCCESS;
- }
- }
-
- // No free slot found
- return EFI_OUT_OF_RESOURCES;
-}
-
-/**
- Deregister the ACPI table Parser
-
- This function deregisters the ACPI table parser.
-
- @param [in] Signature The ACPI table signature.
-
- @retval EFI_SUCCESS The parser was deregistered.
- @retval EFI_INVALID_PARAMETER A parameter is invalid.
- @retval EFI_NOT_FOUND A registered parser was not found.
-**/
-EFI_STATUS
-EFIAPI
-DeregisterParser (
- IN UINT32 Signature
- )
-{
- UINT32 Index;
-
- if (Signature == ACPI_PARSER_SIGNATURE_NULL) {
- return EFI_INVALID_PARAMETER;
- }
-
- for (Index = 0;
- Index < (sizeof (mTableParserList) / sizeof (mTableParserList[0]));
- Index++)
- {
- if (Signature == mTableParserList[Index].Signature) {
- mTableParserList[Index].Signature = ACPI_PARSER_SIGNATURE_NULL;
- mTableParserList[Index].Parser = NULL;
- return EFI_SUCCESS;
- }
- }
-
- // No matching registered parser found.
- return EFI_NOT_FOUND;
-}
-
-/**
- Get the ACPI table Parser
-
- This function returns the ACPI table parser proc from the list of
- registered parsers.
-
- @param [in] Signature The ACPI table signature.
- @param [out] ParserProc Pointer to a ACPI table parser proc.
-
- @retval EFI_SUCCESS The parser was returned successfully.
- @retval EFI_INVALID_PARAMETER A parameter is invalid.
- @retval EFI_NOT_FOUND A registered parser was not found.
-**/
-EFI_STATUS
-EFIAPI
-GetParser (
- IN UINT32 Signature,
- OUT PARSE_ACPI_TABLE_PROC *ParserProc
- )
-{
- UINT32 Index;
-
- if ((ParserProc == NULL) || (Signature == ACPI_PARSER_SIGNATURE_NULL)) {
- return EFI_INVALID_PARAMETER;
- }
-
- for (Index = 0;
- Index < (sizeof (mTableParserList) / sizeof (mTableParserList[0]));
- Index++)
- {
- if (Signature == mTableParserList[Index].Signature) {
- *ParserProc = mTableParserList[Index].Parser;
- return EFI_SUCCESS;
- }
- }
-
- // No matching registered parser found.
- return EFI_NOT_FOUND;
-}
-
-/**
- This function processes the ACPI tables.
- This function calls ProcessTableReportOptions() to list the ACPI
- tables, perform binary dump of the tables and determine if the
- ACPI fields should be traced.
-
- This function also invokes the parser for the ACPI tables.
-
- This function also performs a RAW dump of the ACPI table including
- the unknown/unparsed ACPI tables and validates the checksum.
-
- @param [in] Ptr Pointer to the start of the ACPI
- table data buffer.
-**/
-VOID
-EFIAPI
-ProcessAcpiTable (
- IN UINT8 *Ptr
- )
-{
- EFI_STATUS Status;
- BOOLEAN Trace;
- CONST UINT32 *AcpiTableSignature;
- CONST UINT32 *AcpiTableLength;
- CONST UINT8 *AcpiTableRevision;
- CONST UINT8 *SignaturePtr;
- PARSE_ACPI_TABLE_PROC ParserProc;
-
- ParseAcpiHeader (
- Ptr,
- &AcpiTableSignature,
- &AcpiTableLength,
- &AcpiTableRevision
- );
-
- Trace = ProcessTableReportOptions (
- *AcpiTableSignature,
- Ptr,
- *AcpiTableLength
- );
-
- if (Trace) {
- DumpRaw (Ptr, *AcpiTableLength);
-
- // Do not process the ACPI table any further if the table length read
- // is invalid. The ACPI table should at least contain the table header.
- if (*AcpiTableLength < sizeof (EFI_ACPI_DESCRIPTION_HEADER)) {
- SignaturePtr = (CONST UINT8 *)AcpiTableSignature;
- IncrementErrorCount ();
- Print (
- L"ERROR: Invalid %c%c%c%c table length. Length = %d\n",
- SignaturePtr[0],
- SignaturePtr[1],
- SignaturePtr[2],
- SignaturePtr[3],
- *AcpiTableLength
- );
- return;
- }
-
- if (GetConsistencyChecking ()) {
- VerifyChecksum (TRUE, Ptr, *AcpiTableLength);
- }
- }
-
- #if defined (MDE_CPU_ARM) || defined (MDE_CPU_AARCH64)
- if (GetMandatoryTableValidate ()) {
- ArmSbbrIncrementTableCount (*AcpiTableSignature);
- }
-
- #endif
-
- Status = GetParser (*AcpiTableSignature, &ParserProc);
- if (EFI_ERROR (Status)) {
- // No registered parser found, do default handling.
- if (Trace) {
- DumpAcpiHeader (Ptr);
- }
-
- return;
- }
-
- ParserProc (
- Trace,
- Ptr,
- *AcpiTableLength,
- *AcpiTableRevision
- );
-}
+/** @file
+ ACPI table parser
+
+ Copyright (c) 2016 - 2020, ARM Limited. All rights reserved.
+ SPDX-License-Identifier: BSD-2-Clause-Patent
+
+ @par Glossary:
+ - Sbbr or SBBR - Server Base Boot Requirements
+
+ @par Reference(s):
+ - Arm Server Base Boot Requirements 1.2, September 2019
+**/
+
+#include <Uefi.h>
+#include <IndustryStandard/Acpi.h>
+#include <Library/UefiLib.h>
+#include "AcpiParser.h"
+#include "AcpiTableParser.h"
+#include "AcpiView.h"
+#include "AcpiViewConfig.h"
+
+#if defined (MDE_CPU_ARM) || defined (MDE_CPU_AARCH64)
+ #include "Arm/SbbrValidator.h"
+#endif
+
+/**
+ A list of registered ACPI table parsers.
+**/
+STATIC ACPI_TABLE_PARSER mTableParserList[MAX_ACPI_TABLE_PARSERS];
+
+/**
+ Register the ACPI table Parser
+
+ This function registers the ACPI table parser.
+
+ @param [in] Signature The ACPI table signature.
+ @param [in] ParserProc The ACPI table parser.
+
+ @retval EFI_SUCCESS The parser is registered.
+ @retval EFI_INVALID_PARAMETER A parameter is invalid.
+ @retval EFI_ALREADY_STARTED The parser for the Table
+ was already registered.
+ @retval EFI_OUT_OF_RESOURCES No space to register the
+ parser.
+**/
+EFI_STATUS
+EFIAPI
+RegisterParser (
+ IN UINT32 Signature,
+ IN PARSE_ACPI_TABLE_PROC ParserProc
+ )
+{
+ UINT32 Index;
+
+ if ((ParserProc == NULL) || (Signature == ACPI_PARSER_SIGNATURE_NULL)) {
+ return EFI_INVALID_PARAMETER;
+ }
+
+ // Search if a parser is already installed
+ for (Index = 0;
+ Index < (sizeof (mTableParserList) / sizeof (mTableParserList[0]));
+ Index++)
+ {
+ if (Signature == mTableParserList[Index].Signature) {
+ if (mTableParserList[Index].Parser != NULL) {
+ return EFI_ALREADY_STARTED;
+ }
+ }
+ }
+
+ // Find the first free slot and register the parser
+ for (Index = 0;
+ Index < (sizeof (mTableParserList) / sizeof (mTableParserList[0]));
+ Index++)
+ {
+ if (mTableParserList[Index].Signature == ACPI_PARSER_SIGNATURE_NULL) {
+ mTableParserList[Index].Signature = Signature;
+ mTableParserList[Index].Parser = ParserProc;
+ return EFI_SUCCESS;
+ }
+ }
+
+ // No free slot found
+ return EFI_OUT_OF_RESOURCES;
+}
+
+/**
+ Deregister the ACPI table Parser
+
+ This function deregisters the ACPI table parser.
+
+ @param [in] Signature The ACPI table signature.
+
+ @retval EFI_SUCCESS The parser was deregistered.
+ @retval EFI_INVALID_PARAMETER A parameter is invalid.
+ @retval EFI_NOT_FOUND A registered parser was not found.
+**/
+EFI_STATUS
+EFIAPI
+DeregisterParser (
+ IN UINT32 Signature
+ )
+{
+ UINT32 Index;
+
+ if (Signature == ACPI_PARSER_SIGNATURE_NULL) {
+ return EFI_INVALID_PARAMETER;
+ }
+
+ for (Index = 0;
+ Index < (sizeof (mTableParserList) / sizeof (mTableParserList[0]));
+ Index++)
+ {
+ if (Signature == mTableParserList[Index].Signature) {
+ mTableParserList[Index].Signature = ACPI_PARSER_SIGNATURE_NULL;
+ mTableParserList[Index].Parser = NULL;
+ return EFI_SUCCESS;
+ }
+ }
+
+ // No matching registered parser found.
+ return EFI_NOT_FOUND;
+}
+
+/**
+ Get the ACPI table Parser
+
+ This function returns the ACPI table parser proc from the list of
+ registered parsers.
+
+ @param [in] Signature The ACPI table signature.
+ @param [out] ParserProc Pointer to a ACPI table parser proc.
+
+ @retval EFI_SUCCESS The parser was returned successfully.
+ @retval EFI_INVALID_PARAMETER A parameter is invalid.
+ @retval EFI_NOT_FOUND A registered parser was not found.
+**/
+EFI_STATUS
+EFIAPI
+GetParser (
+ IN UINT32 Signature,
+ OUT PARSE_ACPI_TABLE_PROC *ParserProc
+ )
+{
+ UINT32 Index;
+
+ if ((ParserProc == NULL) || (Signature == ACPI_PARSER_SIGNATURE_NULL)) {
+ return EFI_INVALID_PARAMETER;
+ }
+
+ for (Index = 0;
+ Index < (sizeof (mTableParserList) / sizeof (mTableParserList[0]));
+ Index++)
+ {
+ if (Signature == mTableParserList[Index].Signature) {
+ *ParserProc = mTableParserList[Index].Parser;
+ return EFI_SUCCESS;
+ }
+ }
+
+ // No matching registered parser found.
+ return EFI_NOT_FOUND;
+}
+
+/**
+ This function processes the ACPI tables.
+ This function calls ProcessTableReportOptions() to list the ACPI
+ tables, perform binary dump of the tables and determine if the
+ ACPI fields should be traced.
+
+ This function also invokes the parser for the ACPI tables.
+
+ This function also performs a RAW dump of the ACPI table including
+ the unknown/unparsed ACPI tables and validates the checksum.
+
+ @param [in] Ptr Pointer to the start of the ACPI
+ table data buffer.
+**/
+VOID
+EFIAPI
+ProcessAcpiTable (
+ IN UINT8 *Ptr
+ )
+{
+ EFI_STATUS Status;
+ BOOLEAN Trace;
+ CONST UINT32 *AcpiTableSignature;
+ CONST UINT32 *AcpiTableLength;
+ CONST UINT8 *AcpiTableRevision;
+ CONST UINT8 *SignaturePtr;
+ PARSE_ACPI_TABLE_PROC ParserProc;
+
+ ParseAcpiHeader (
+ Ptr,
+ &AcpiTableSignature,
+ &AcpiTableLength,
+ &AcpiTableRevision
+ );
+
+ Trace = ProcessTableReportOptions (
+ *AcpiTableSignature,
+ Ptr,
+ *AcpiTableLength
+ );
+
+ if (Trace) {
+ DumpRaw (Ptr, *AcpiTableLength);
+
+ // Do not process the ACPI table any further if the table length read
+ // is invalid. The ACPI table should at least contain the table header.
+ if (*AcpiTableLength < sizeof (EFI_ACPI_DESCRIPTION_HEADER)) {
+ SignaturePtr = (CONST UINT8 *)AcpiTableSignature;
+ IncrementErrorCount ();
+ Print (
+ L"ERROR: Invalid %c%c%c%c table length. Length = %d\n",
+ SignaturePtr[0],
+ SignaturePtr[1],
+ SignaturePtr[2],
+ SignaturePtr[3],
+ *AcpiTableLength
+ );
+ return;
+ }
+
+ if (GetConsistencyChecking ()) {
+ VerifyChecksum (TRUE, Ptr, *AcpiTableLength);
+ }
+ }
+
+ #if defined (MDE_CPU_ARM) || defined (MDE_CPU_AARCH64)
+ if (GetMandatoryTableValidate ()) {
+ ArmSbbrIncrementTableCount (*AcpiTableSignature);
+ }
+
+ #endif
+
+ Status = GetParser (*AcpiTableSignature, &ParserProc);
+ if (EFI_ERROR (Status)) {
+ // No registered parser found, do default handling.
+ if (Trace) {
+ DumpAcpiHeader (Ptr);
+ }
+
+ return;
+ }
+
+ ParserProc (
+ Trace,
+ Ptr,
+ *AcpiTableLength,
+ *AcpiTableRevision
+ );
+}