* [PATCH v1 1/5] ShellPkg: Replace 'Trace' parameter with 'ParseFlags'
2021-05-07 10:37 [PATCH v1 0/5] Dot graph generator for PPTT Joey Gouly
@ 2021-05-07 10:38 ` Joey Gouly
2021-05-07 10:38 ` [PATCH v1 2/5] ShellPkg: add a helper function for getting a new file name Joey Gouly
` (4 subsequent siblings)
5 siblings, 0 replies; 7+ messages in thread
From: Joey Gouly @ 2021-05-07 10:38 UTC (permalink / raw)
To: devel; +Cc: joey.gouly, sami.mujawar, ray.ni, zhichao.gao, nd
From: Marc Moisson-Franckhauser <marc.moisson-franckhauser@arm.com>
Bugzilla: 3378 (https://bugzilla.tianocore.org/show_bug.cgi?id=3378)
This is preparation for adding a second flag to the parsers.
Signed-off-by: Marc Moisson-Franckhauser <marc.moisson-franckhauser@arm.com>
Signed-off-by: Joey Gouly <joey.gouly@arm.com>
---
ShellPkg/Library/UefiShellAcpiViewCommandLib/AcpiParser.h | 77 +++++++++++---------
ShellPkg/Library/UefiShellAcpiViewCommandLib/AcpiTableParser.h | 6 +-
ShellPkg/Library/UefiShellAcpiViewCommandLib/AcpiTableParser.c | 20 ++---
ShellPkg/Library/UefiShellAcpiViewCommandLib/AcpiView.c | 28 ++++---
ShellPkg/Library/UefiShellAcpiViewCommandLib/Parsers/Bgrt/BgrtParser.c | 10 +--
ShellPkg/Library/UefiShellAcpiViewCommandLib/Parsers/Dbg2/Dbg2Parser.c | 8 +-
ShellPkg/Library/UefiShellAcpiViewCommandLib/Parsers/Dsdt/DsdtParser.c | 8 +-
ShellPkg/Library/UefiShellAcpiViewCommandLib/Parsers/Facs/FacsParser.c | 10 +--
ShellPkg/Library/UefiShellAcpiViewCommandLib/Parsers/Fadt/FadtParser.c | 27 ++++---
ShellPkg/Library/UefiShellAcpiViewCommandLib/Parsers/Gtdt/GtdtParser.c | 8 +-
ShellPkg/Library/UefiShellAcpiViewCommandLib/Parsers/Iort/IortParser.c | 8 +-
ShellPkg/Library/UefiShellAcpiViewCommandLib/Parsers/Madt/MadtParser.c | 8 +-
ShellPkg/Library/UefiShellAcpiViewCommandLib/Parsers/Mcfg/McfgParser.c | 8 +-
ShellPkg/Library/UefiShellAcpiViewCommandLib/Parsers/Pptt/PpttParser.c | 47 +++++++-----
ShellPkg/Library/UefiShellAcpiViewCommandLib/Parsers/Rsdp/RsdpParser.c | 10 +--
ShellPkg/Library/UefiShellAcpiViewCommandLib/Parsers/Slit/SlitParser.c | 8 +-
ShellPkg/Library/UefiShellAcpiViewCommandLib/Parsers/Spcr/SpcrParser.c | 8 +-
ShellPkg/Library/UefiShellAcpiViewCommandLib/Parsers/Srat/SratParser.c | 8 +-
ShellPkg/Library/UefiShellAcpiViewCommandLib/Parsers/Ssdt/SsdtParser.c | 8 +-
ShellPkg/Library/UefiShellAcpiViewCommandLib/Parsers/Xsdt/XsdtParser.c | 10 +--
20 files changed, 179 insertions(+), 146 deletions(-)
diff --git a/ShellPkg/Library/UefiShellAcpiViewCommandLib/AcpiParser.h b/ShellPkg/Library/UefiShellAcpiViewCommandLib/AcpiParser.h
index 0b7726b9d5807ad2f5c5447408c4c5451718938b..b078c0b99335ba28f7589cac6b0a4190d9a6c3b5 100644
--- a/ShellPkg/Library/UefiShellAcpiViewCommandLib/AcpiParser.h
+++ b/ShellPkg/Library/UefiShellAcpiViewCommandLib/AcpiParser.h
@@ -1,7 +1,7 @@
/** @file
Header file for ACPI parser
- Copyright (c) 2016 - 2020, Arm Limited. All rights reserved.
+ Copyright (c) 2016 - 2021, Arm Limited. All rights reserved.
SPDX-License-Identifier: BSD-2-Clause-Patent
**/
@@ -16,6 +16,16 @@
/// that allows us to process the log options.
#define RSDP_TABLE_INFO SIGNATURE_32('R', 'S', 'D', 'P')
+/**
+ Flags for the parser.
+*/
+#define PARSE_FLAGS_TRACE BIT0
+
+/**
+ Helper macros to test parser flags.
+*/
+#define IS_TRACE_FLAG_SET(Flags) (((Flags) & PARSE_FLAGS_TRACE) != 0)
+
/**
This function increments the ACPI table error counter.
**/
@@ -489,7 +499,7 @@ ParseAcpiAest (
This function also performs validation of the ACPI table fields.
- @param [in] Trace If TRUE, trace the ACPI fields.
+ @param [in] ParseFlags Flags describing what the parser needs to do.
@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.
@@ -497,7 +507,7 @@ ParseAcpiAest (
VOID
EFIAPI
ParseAcpiBgrt (
- IN BOOLEAN Trace,
+ IN UINT8 ParseFlags,
IN UINT8* Ptr,
IN UINT32 AcpiTableLength,
IN UINT8 AcpiTableRevision
@@ -510,7 +520,7 @@ ParseAcpiBgrt (
This function also performs validation of the ACPI table fields.
- @param [in] Trace If TRUE, trace the ACPI fields.
+ @param [in] ParseFlags Flags describing what the parser needs to do.
@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.
@@ -518,7 +528,7 @@ ParseAcpiBgrt (
VOID
EFIAPI
ParseAcpiDbg2 (
- IN BOOLEAN Trace,
+ IN UINT8 ParseFlags,
IN UINT8* Ptr,
IN UINT32 AcpiTableLength,
IN UINT8 AcpiTableRevision
@@ -531,7 +541,7 @@ ParseAcpiDbg2 (
For the DSDT table only the ACPI header fields are parsed and
traced.
- @param [in] Trace If TRUE, trace the ACPI fields.
+ @param [in] ParseFlags Flags describing what the parser needs to do.
@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.
@@ -539,7 +549,7 @@ ParseAcpiDbg2 (
VOID
EFIAPI
ParseAcpiDsdt (
- IN BOOLEAN Trace,
+ IN UINT8 ParseFlags,
IN UINT8* Ptr,
IN UINT32 AcpiTableLength,
IN UINT8 AcpiTableRevision
@@ -552,7 +562,7 @@ ParseAcpiDsdt (
This function also performs validation of the ACPI table fields.
- @param [in] Trace If TRUE, trace the ACPI fields.
+ @param [in] ParseFlags Flags describing what the parser needs to do.
@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.
@@ -560,7 +570,7 @@ ParseAcpiDsdt (
VOID
EFIAPI
ParseAcpiFacs (
- IN BOOLEAN Trace,
+ IN UINT8 ParseFlags,
IN UINT8* Ptr,
IN UINT32 AcpiTableLength,
IN UINT8 AcpiTableRevision
@@ -573,7 +583,7 @@ ParseAcpiFacs (
This function also performs validation of the ACPI table fields.
- @param [in] Trace If TRUE, trace the ACPI fields.
+ @param [in] ParseFlags Flags describing what the parser needs to do.
@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.
@@ -581,7 +591,7 @@ ParseAcpiFacs (
VOID
EFIAPI
ParseAcpiFadt (
- IN BOOLEAN Trace,
+ IN UINT8 ParseFlags,
IN UINT8* Ptr,
IN UINT32 AcpiTableLength,
IN UINT8 AcpiTableRevision
@@ -598,7 +608,7 @@ ParseAcpiFadt (
This function also performs validation of the ACPI table fields.
- @param [in] Trace If TRUE, trace the ACPI fields.
+ @param [in] ParseFlags Flags describing what the parser needs to do.
@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.
@@ -606,7 +616,7 @@ ParseAcpiFadt (
VOID
EFIAPI
ParseAcpiGtdt (
- IN BOOLEAN Trace,
+ IN UINT8 ParseFlags,
IN UINT8* Ptr,
IN UINT32 AcpiTableLength,
IN UINT8 AcpiTableRevision
@@ -653,7 +663,7 @@ ParseAcpiHmat (
This function also performs validation of the ACPI table fields.
- @param [in] Trace If TRUE, trace the ACPI fields.
+ @param [in] ParseFlags Flags describing what the parser needs to do.
@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.
@@ -661,7 +671,7 @@ ParseAcpiHmat (
VOID
EFIAPI
ParseAcpiIort (
- IN BOOLEAN Trace,
+ IN UINT8 ParseFlags,
IN UINT8* Ptr,
IN UINT32 AcpiTableLength,
IN UINT8 AcpiTableRevision
@@ -682,7 +692,7 @@ ParseAcpiIort (
This function also performs validation of the ACPI table fields.
- @param [in] Trace If TRUE, trace the ACPI fields.
+ @param [in] ParseFlags Flags describing what the parser needs to do.
@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.
@@ -690,7 +700,7 @@ ParseAcpiIort (
VOID
EFIAPI
ParseAcpiMadt (
- IN BOOLEAN Trace,
+ IN UINT8 ParseFlags,
IN UINT8* Ptr,
IN UINT32 AcpiTableLength,
IN UINT8 AcpiTableRevision
@@ -703,7 +713,7 @@ ParseAcpiMadt (
This function also performs validation of the ACPI table fields.
- @param [in] Trace If TRUE, trace the ACPI fields.
+ @param [in] ParseFlags Flags describing what the parser needs to do.
@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.
@@ -711,7 +721,7 @@ ParseAcpiMadt (
VOID
EFIAPI
ParseAcpiMcfg (
- IN BOOLEAN Trace,
+ IN UINT8 ParseFlags,
IN UINT8* Ptr,
IN UINT32 AcpiTableLength,
IN UINT8 AcpiTableRevision
@@ -746,7 +756,7 @@ ParseAcpiPcct (
This function also performs validation of the ACPI table fields.
- @param [in] Trace If TRUE, trace the ACPI fields.
+ @param [in] ParseFlags Flags describing what the parser needs to do.
@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.
@@ -754,7 +764,7 @@ ParseAcpiPcct (
VOID
EFIAPI
ParseAcpiPptt (
- IN BOOLEAN Trace,
+ IN UINT8 ParseFlags,
IN UINT8* Ptr,
IN UINT32 AcpiTableLength,
IN UINT8 AcpiTableRevision
@@ -769,7 +779,7 @@ ParseAcpiPptt (
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] ParseFlags Flags describing what the parser needs to do.
@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.
@@ -777,7 +787,7 @@ ParseAcpiPptt (
VOID
EFIAPI
ParseAcpiRsdp (
- IN BOOLEAN Trace,
+ IN UINT8 ParseFlags,
IN UINT8* Ptr,
IN UINT32 AcpiTableLength,
IN UINT8 AcpiTableRevision
@@ -793,7 +803,8 @@ ParseAcpiRsdp (
- 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] ParseFlags Flags describing what the parser needs to
+ do.
@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.
@@ -801,7 +812,7 @@ ParseAcpiRsdp (
VOID
EFIAPI
ParseAcpiSlit (
- IN BOOLEAN Trace,
+ IN UINT8 ParseFlags,
IN UINT8* Ptr,
IN UINT32 AcpiTableLength,
IN UINT8 AcpiTableRevision
@@ -814,7 +825,7 @@ ParseAcpiSlit (
This function also performs validations of the ACPI table fields.
- @param [in] Trace If TRUE, trace the ACPI fields.
+ @param [in] ParseFlags Flags describing what the parser needs to do.
@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.
@@ -822,7 +833,7 @@ ParseAcpiSlit (
VOID
EFIAPI
ParseAcpiSpcr (
- IN BOOLEAN Trace,
+ IN UINT8 ParseFlags,
IN UINT8* Ptr,
IN UINT32 AcpiTableLength,
IN UINT8 AcpiTableRevision
@@ -841,7 +852,7 @@ ParseAcpiSpcr (
This function also performs validation of the ACPI table fields.
- @param [in] Trace If TRUE, trace the ACPI fields.
+ @param [in] ParseFlags Flags describing what the parser needs to do.
@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.
@@ -849,7 +860,7 @@ ParseAcpiSpcr (
VOID
EFIAPI
ParseAcpiSrat (
- IN BOOLEAN Trace,
+ IN UINT8 ParseFlags,
IN UINT8* Ptr,
IN UINT32 AcpiTableLength,
IN UINT8 AcpiTableRevision
@@ -862,7 +873,7 @@ ParseAcpiSrat (
For the SSDT table only the ACPI header fields are
parsed and traced.
- @param [in] Trace If TRUE, trace the ACPI fields.
+ @param [in] ParseFlags Flags describing what the parser needs to do.
@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.
@@ -870,7 +881,7 @@ ParseAcpiSrat (
VOID
EFIAPI
ParseAcpiSsdt (
- IN BOOLEAN Trace,
+ IN UINT8 ParseFlags,
IN UINT8* Ptr,
IN UINT32 AcpiTableLength,
IN UINT8 AcpiTableRevision
@@ -882,7 +893,7 @@ ParseAcpiSsdt (
This function also performs validation of the XSDT table.
- @param [in] Trace If TRUE, trace the ACPI fields.
+ @param [in] ParseFlags Flags describing what the parser needs to do.
@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.
@@ -890,7 +901,7 @@ ParseAcpiSsdt (
VOID
EFIAPI
ParseAcpiXsdt (
- IN BOOLEAN Trace,
+ IN UINT8 ParseFlags,
IN UINT8* Ptr,
IN UINT32 AcpiTableLength,
IN UINT8 AcpiTableRevision
diff --git a/ShellPkg/Library/UefiShellAcpiViewCommandLib/AcpiTableParser.h b/ShellPkg/Library/UefiShellAcpiViewCommandLib/AcpiTableParser.h
index 0ebf79fb653ae3a8190273aee452723c6213eb58..94ce0a4860e5296d99d398480655a8013ab0f240 100644
--- a/ShellPkg/Library/UefiShellAcpiViewCommandLib/AcpiTableParser.h
+++ b/ShellPkg/Library/UefiShellAcpiViewCommandLib/AcpiTableParser.h
@@ -1,7 +1,7 @@
/** @file
Header file for ACPI table parser
- Copyright (c) 2016 - 2020, Arm Limited. All rights reserved.
+ Copyright (c) 2016 - 2021, Arm Limited. All rights reserved.
SPDX-License-Identifier: BSD-2-Clause-Patent
**/
@@ -20,7 +20,7 @@
/**
A function that parses the ACPI table.
- @param [in] Trace If TRUE, trace the ACPI fields.
+ @param [in] ParseFlags Flags describing what the parser needs to do.
@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.
@@ -28,7 +28,7 @@
typedef
VOID
(EFIAPI * PARSE_ACPI_TABLE_PROC) (
- IN BOOLEAN Trace,
+ IN UINT8 ParseFlags,
IN UINT8* Ptr,
IN UINT32 AcpiTableLength,
IN UINT8 AcpiTableRevision
diff --git a/ShellPkg/Library/UefiShellAcpiViewCommandLib/AcpiTableParser.c b/ShellPkg/Library/UefiShellAcpiViewCommandLib/AcpiTableParser.c
index 4b618f131eac3957f4070a95e06c8cd157c3223c..ecb5d6339af37397c6ba1ba4c8f0d42a95811bf6 100644
--- a/ShellPkg/Library/UefiShellAcpiViewCommandLib/AcpiTableParser.c
+++ b/ShellPkg/Library/UefiShellAcpiViewCommandLib/AcpiTableParser.c
@@ -1,7 +1,7 @@
/** @file
ACPI table parser
- Copyright (c) 2016 - 2020, ARM Limited. All rights reserved.
+ Copyright (c) 2016 - 2021, Arm Limited. All rights reserved.
SPDX-License-Identifier: BSD-2-Clause-Patent
@par Glossary:
@@ -183,7 +183,7 @@ ProcessAcpiTable (
)
{
EFI_STATUS Status;
- BOOLEAN Trace;
+ UINT8 ParseFlags;
CONST UINT32* AcpiTableSignature;
CONST UINT32* AcpiTableLength;
CONST UINT8* AcpiTableRevision;
@@ -197,13 +197,13 @@ ProcessAcpiTable (
&AcpiTableRevision
);
- Trace = ProcessTableReportOptions (
- *AcpiTableSignature,
- Ptr,
- *AcpiTableLength
- );
+ ParseFlags = ProcessTableReportOptions (
+ *AcpiTableSignature,
+ Ptr,
+ *AcpiTableLength
+ );
- if (Trace) {
+ if (IS_TRACE_FLAG_SET (ParseFlags)) {
DumpRaw (Ptr, *AcpiTableLength);
// Do not process the ACPI table any further if the table length read
@@ -236,14 +236,14 @@ ProcessAcpiTable (
Status = GetParser (*AcpiTableSignature, &ParserProc);
if (EFI_ERROR (Status)) {
// No registered parser found, do default handling.
- if (Trace) {
+ if (IS_TRACE_FLAG_SET (ParseFlags)) {
DumpAcpiHeader (Ptr);
}
return;
}
ParserProc (
- Trace,
+ ParseFlags,
Ptr,
*AcpiTableLength,
*AcpiTableRevision
diff --git a/ShellPkg/Library/UefiShellAcpiViewCommandLib/AcpiView.c b/ShellPkg/Library/UefiShellAcpiViewCommandLib/AcpiView.c
index 9a5b013fb234e2a09a12a690607b5b871dffde72..a4242ba9d99b05d07c829520c4011439445aadb0 100644
--- a/ShellPkg/Library/UefiShellAcpiViewCommandLib/AcpiView.c
+++ b/ShellPkg/Library/UefiShellAcpiViewCommandLib/AcpiView.c
@@ -1,6 +1,6 @@
/** @file
- Copyright (c) 2016 - 2020, ARM Limited. All rights reserved.
+ Copyright (c) 2016 - 2021, Arm Limited. All rights reserved.
SPDX-License-Identifier: BSD-2-Clause-Patent
@par Glossary:
@@ -73,9 +73,9 @@ DumpAcpiTableToFile (
@param [in] TablePtr Pointer to the ACPI table data.
@param [in] Length The length fo the ACPI table.
- @retval Returns TRUE if the ACPI table should be traced.
+ @retval Returns the ParseFlags for the ACPI table.
**/
-BOOLEAN
+UINT8
ProcessTableReportOptions (
IN CONST UINT32 Signature,
IN CONST UINT8* TablePtr,
@@ -84,7 +84,7 @@ ProcessTableReportOptions (
{
UINTN OriginalAttribute;
UINT8 *SignaturePtr;
- BOOLEAN Log;
+ UINT8 ParseFlags;
BOOLEAN HighLight;
SELECTED_ACPI_TABLE *SelectedTable;
@@ -93,17 +93,17 @@ ProcessTableReportOptions (
//
OriginalAttribute = 0;
SignaturePtr = (UINT8*)(UINTN)&Signature;
- Log = FALSE;
+ ParseFlags = 0;
HighLight = GetColourHighlighting ();
GetSelectedAcpiTable (&SelectedTable);
switch (GetReportOption ()) {
case ReportAll:
- Log = TRUE;
+ ParseFlags |= PARSE_FLAGS_TRACE;
break;
case ReportSelected:
if (Signature == SelectedTable->Type) {
- Log = TRUE;
+ ParseFlags |= PARSE_FLAGS_TRACE;
SelectedTable->Found = TRUE;
}
break;
@@ -143,7 +143,7 @@ ProcessTableReportOptions (
break;
} // switch
- if (Log) {
+ if (IS_TRACE_FLAG_SET (ParseFlags)) {
if (HighLight) {
OriginalAttribute = gST->ConOut->Mode->Attribute;
gST->ConOut->SetAttribute (
@@ -164,7 +164,7 @@ ProcessTableReportOptions (
}
}
- return Log;
+ return ParseFlags;
}
@@ -196,7 +196,7 @@ AcpiView (
UINT32 RsdpLength;
UINT8 RsdpRevision;
PARSE_ACPI_TABLE_PROC RsdpParserProc;
- BOOLEAN Trace;
+ UINT8 ParseFlags;
SELECTED_ACPI_TABLE *SelectedTable;
//
@@ -249,7 +249,11 @@ AcpiView (
// The RSDP length is 4 bytes starting at offset 20
RsdpLength = *(UINT32*)(RsdpPtr + RSDP_LENGTH_OFFSET);
- Trace = ProcessTableReportOptions (RSDP_TABLE_INFO, RsdpPtr, RsdpLength);
+ ParseFlags = ProcessTableReportOptions (
+ RSDP_TABLE_INFO,
+ RsdpPtr,
+ RsdpLength
+ );
Status = GetParser (RSDP_TABLE_INFO, &RsdpParserProc);
if (EFI_ERROR (Status)) {
@@ -260,7 +264,7 @@ AcpiView (
}
RsdpParserProc (
- Trace,
+ ParseFlags,
RsdpPtr,
RsdpLength,
RsdpRevision
diff --git a/ShellPkg/Library/UefiShellAcpiViewCommandLib/Parsers/Bgrt/BgrtParser.c b/ShellPkg/Library/UefiShellAcpiViewCommandLib/Parsers/Bgrt/BgrtParser.c
index 1a180271a4ebe47948b7f0b56d1cb6f81b5fdf13..6bd4c35bec85e038875ce3d9548c9139b1de2755 100644
--- a/ShellPkg/Library/UefiShellAcpiViewCommandLib/Parsers/Bgrt/BgrtParser.c
+++ b/ShellPkg/Library/UefiShellAcpiViewCommandLib/Parsers/Bgrt/BgrtParser.c
@@ -1,7 +1,7 @@
/** @file
BGRT table parser
- Copyright (c) 2017 - 2018, ARM Limited. All rights reserved.
+ Copyright (c) 2017 - 2021, Arm Limited. All rights reserved.
SPDX-License-Identifier: BSD-2-Clause-Patent
@par Reference(s):
@@ -36,7 +36,7 @@ STATIC CONST ACPI_PARSER BgrtParser[] = {
This function also performs validation of the ACPI table fields.
- @param [in] Trace If TRUE, trace the ACPI fields.
+ @param [in] ParseFlags Flags describing what the parser needs to do.
@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.
@@ -44,18 +44,18 @@ STATIC CONST ACPI_PARSER BgrtParser[] = {
VOID
EFIAPI
ParseAcpiBgrt (
- IN BOOLEAN Trace,
+ IN UINT8 ParseFlags,
IN UINT8* Ptr,
IN UINT32 AcpiTableLength,
IN UINT8 AcpiTableRevision
)
{
- if (!Trace) {
+ if (!IS_TRACE_FLAG_SET (ParseFlags)) {
return;
}
ParseAcpi (
- Trace,
+ TRUE,
0,
"BGRT",
Ptr,
diff --git a/ShellPkg/Library/UefiShellAcpiViewCommandLib/Parsers/Dbg2/Dbg2Parser.c b/ShellPkg/Library/UefiShellAcpiViewCommandLib/Parsers/Dbg2/Dbg2Parser.c
index 9df111ecaa7d7a703a13a39c243ed78b9f12ee97..a22f8ab76b84432b2073bea6ca6d8245ea9df7fb 100644
--- a/ShellPkg/Library/UefiShellAcpiViewCommandLib/Parsers/Dbg2/Dbg2Parser.c
+++ b/ShellPkg/Library/UefiShellAcpiViewCommandLib/Parsers/Dbg2/Dbg2Parser.c
@@ -1,7 +1,7 @@
/** @file
DBG2 table parser
- Copyright (c) 2016 - 2020, ARM Limited. All rights reserved.
+ Copyright (c) 2016 - 2021, Arm Limited. All rights reserved.
SPDX-License-Identifier: BSD-2-Clause-Patent
@par Reference(s):
@@ -212,7 +212,7 @@ DumpDbgDeviceInfo (
This function also performs validation of the ACPI table fields.
- @param [in] Trace If TRUE, trace the ACPI fields.
+ @param [in] ParseFlags Flags describing what the parser needs to do.
@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.
@@ -220,7 +220,7 @@ DumpDbgDeviceInfo (
VOID
EFIAPI
ParseAcpiDbg2 (
- IN BOOLEAN Trace,
+ IN UINT8 ParseFlags,
IN UINT8* Ptr,
IN UINT32 AcpiTableLength,
IN UINT8 AcpiTableRevision
@@ -229,7 +229,7 @@ ParseAcpiDbg2 (
UINT32 Offset;
UINT32 Index;
- if (!Trace) {
+ if (!IS_TRACE_FLAG_SET (ParseFlags)) {
return;
}
diff --git a/ShellPkg/Library/UefiShellAcpiViewCommandLib/Parsers/Dsdt/DsdtParser.c b/ShellPkg/Library/UefiShellAcpiViewCommandLib/Parsers/Dsdt/DsdtParser.c
index 6d43974f54d23fd9990fa7af721c96518bb96a36..609c17ef02d460be66f0c390203cae55ece653e3 100644
--- a/ShellPkg/Library/UefiShellAcpiViewCommandLib/Parsers/Dsdt/DsdtParser.c
+++ b/ShellPkg/Library/UefiShellAcpiViewCommandLib/Parsers/Dsdt/DsdtParser.c
@@ -1,7 +1,7 @@
/** @file
DSDT table parser
- Copyright (c) 2016 - 2018, ARM Limited. All rights reserved.
+ Copyright (c) 2016 - 2021, Arm Limited. All rights reserved.
SPDX-License-Identifier: BSD-2-Clause-Patent
@par Reference(s):
@@ -20,7 +20,7 @@
For the DSDT table only the ACPI header fields are parsed and
traced.
- @param [in] Trace If TRUE, trace the ACPI fields.
+ @param [in] ParseFlags Flags describing what the parser needs to do.
@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.
@@ -28,13 +28,13 @@
VOID
EFIAPI
ParseAcpiDsdt (
- IN BOOLEAN Trace,
+ IN UINT8 ParseFlags,
IN UINT8* Ptr,
IN UINT32 AcpiTableLength,
IN UINT8 AcpiTableRevision
)
{
- if (!Trace) {
+ if (!IS_TRACE_FLAG_SET (ParseFlags)) {
return;
}
diff --git a/ShellPkg/Library/UefiShellAcpiViewCommandLib/Parsers/Facs/FacsParser.c b/ShellPkg/Library/UefiShellAcpiViewCommandLib/Parsers/Facs/FacsParser.c
index d6bea86bdbaa79aa35b86840c809394b3c7a3bf6..d7545b6161eadd24e986a7828910662f2f52b2ec 100644
--- a/ShellPkg/Library/UefiShellAcpiViewCommandLib/Parsers/Facs/FacsParser.c
+++ b/ShellPkg/Library/UefiShellAcpiViewCommandLib/Parsers/Facs/FacsParser.c
@@ -1,7 +1,7 @@
/** @file
FACS table parser
- Copyright (c) 2019, ARM Limited. All rights reserved.
+ Copyright (c) 2019 - 2021, Arm Limited. All rights reserved.
SPDX-License-Identifier: BSD-2-Clause-Patent
@par Reference(s):
@@ -42,7 +42,7 @@ STATIC CONST ACPI_PARSER FacsParser[] = {
This function also performs validation of the ACPI table fields.
- @param [in] Trace If TRUE, trace the ACPI fields.
+ @param [in] ParseFlags Flags describing what the parser needs to do.
@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.
@@ -50,18 +50,18 @@ STATIC CONST ACPI_PARSER FacsParser[] = {
VOID
EFIAPI
ParseAcpiFacs (
- IN BOOLEAN Trace,
+ IN UINT8 ParseFlags,
IN UINT8* Ptr,
IN UINT32 AcpiTableLength,
IN UINT8 AcpiTableRevision
)
{
- if (!Trace) {
+ if (!IS_TRACE_FLAG_SET (ParseFlags)) {
return;
}
ParseAcpi (
- Trace,
+ TRUE,
0,
"FACS",
Ptr,
diff --git a/ShellPkg/Library/UefiShellAcpiViewCommandLib/Parsers/Fadt/FadtParser.c b/ShellPkg/Library/UefiShellAcpiViewCommandLib/Parsers/Fadt/FadtParser.c
index d86718bab67d45fd612bb7ac725b5eb3eeb7dfdc..8d0eb42ec3b361c1727184c542a757e39ef3da5c 100644
--- a/ShellPkg/Library/UefiShellAcpiViewCommandLib/Parsers/Fadt/FadtParser.c
+++ b/ShellPkg/Library/UefiShellAcpiViewCommandLib/Parsers/Fadt/FadtParser.c
@@ -1,7 +1,7 @@
/** @file
FADT table parser
- Copyright (c) 2016 - 2020, ARM Limited. All rights reserved.
+ Copyright (c) 2016 - 2021, Arm Limited. All rights reserved.
SPDX-License-Identifier: BSD-2-Clause-Patent
@par Reference(s):
@@ -198,7 +198,7 @@ STATIC CONST ACPI_PARSER FadtParser[] = {
This function also performs validation of the ACPI table fields.
- @param [in] Trace If TRUE, trace the ACPI fields.
+ @param [in] ParseFlags Flags describing what the parser needs to do.
@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.
@@ -206,7 +206,7 @@ STATIC CONST ACPI_PARSER FadtParser[] = {
VOID
EFIAPI
ParseAcpiFadt (
- IN BOOLEAN Trace,
+ IN UINT8 ParseFlags,
IN UINT8* Ptr,
IN UINT32 AcpiTableLength,
IN UINT8 AcpiTableRevision
@@ -219,6 +219,9 @@ ParseAcpiFadt (
UINT32 FacsLength;
UINT8 FacsRevision;
PARSE_ACPI_TABLE_PROC FacsParserProc;
+ BOOLEAN Trace;
+
+ Trace = IS_TRACE_FLAG_SET (ParseFlags);
ParseAcpi (
Trace,
@@ -253,7 +256,7 @@ ParseAcpiFadt (
// if HW_REDUCED_ACPI flag is not set, both FIRMWARE_CTRL and
// X_FIRMWARE_CTRL cannot be zero, and the FACS Table must be
// present.
- if ((Trace) &&
+ if (Trace &&
(Flags != NULL) &&
((*Flags & EFI_ACPI_6_3_HW_REDUCED_ACPI) != EFI_ACPI_6_3_HW_REDUCED_ACPI)) {
IncrementErrorCount ();
@@ -274,11 +277,15 @@ ParseAcpiFadt (
// The FACS version is 1 byte starting at offset 32.
FacsRevision = *(UINT8*)(FirmwareCtrlPtr + FACS_VERSION_OFFSET);
- Trace = ProcessTableReportOptions (
- FacsSignature,
- FirmwareCtrlPtr,
- FacsLength
- );
+ if (ProcessTableReportOptions (
+ FacsSignature,
+ FirmwareCtrlPtr,
+ FacsLength
+ )) {
+ ParseFlags |= PARSE_FLAGS_TRACE;
+ } else {
+ ParseFlags &= ~PARSE_FLAGS_TRACE;
+ }
Status = GetParser (FacsSignature, &FacsParserProc);
if (EFI_ERROR (Status)) {
@@ -289,7 +296,7 @@ ParseAcpiFadt (
}
FacsParserProc (
- Trace,
+ ParseFlags,
FirmwareCtrlPtr,
FacsLength,
FacsRevision
diff --git a/ShellPkg/Library/UefiShellAcpiViewCommandLib/Parsers/Gtdt/GtdtParser.c b/ShellPkg/Library/UefiShellAcpiViewCommandLib/Parsers/Gtdt/GtdtParser.c
index d02fc4929d6fa5e04672276810b19d3f4c62efd2..da93938771bfcf0da146fd46a025addeb05e71cc 100644
--- a/ShellPkg/Library/UefiShellAcpiViewCommandLib/Parsers/Gtdt/GtdtParser.c
+++ b/ShellPkg/Library/UefiShellAcpiViewCommandLib/Parsers/Gtdt/GtdtParser.c
@@ -1,7 +1,7 @@
/** @file
GTDT table parser
- Copyright (c) 2016 - 2020, ARM Limited. All rights reserved.
+ Copyright (c) 2016 - 2021, Arm Limited. All rights reserved.
SPDX-License-Identifier: BSD-2-Clause-Patent
@par Reference(s):
@@ -254,7 +254,7 @@ DumpWatchdogTimer (
This function also performs validation of the ACPI table fields.
- @param [in] Trace If TRUE, trace the ACPI fields.
+ @param [in] ParseFlags Flags describing what the parser needs to do.
@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.
@@ -262,7 +262,7 @@ DumpWatchdogTimer (
VOID
EFIAPI
ParseAcpiGtdt (
- IN BOOLEAN Trace,
+ IN UINT8 ParseFlags,
IN UINT8* Ptr,
IN UINT32 AcpiTableLength,
IN UINT8 AcpiTableRevision
@@ -272,7 +272,7 @@ ParseAcpiGtdt (
UINT32 Offset;
UINT8* TimerPtr;
- if (!Trace) {
+ if (!IS_TRACE_FLAG_SET (ParseFlags)) {
return;
}
diff --git a/ShellPkg/Library/UefiShellAcpiViewCommandLib/Parsers/Iort/IortParser.c b/ShellPkg/Library/UefiShellAcpiViewCommandLib/Parsers/Iort/IortParser.c
index f7447947b2308d35d4d2890373778f0fd2f97f9e..2f659349499a02175820ee4faf3a84034c8ced76 100644
--- a/ShellPkg/Library/UefiShellAcpiViewCommandLib/Parsers/Iort/IortParser.c
+++ b/ShellPkg/Library/UefiShellAcpiViewCommandLib/Parsers/Iort/IortParser.c
@@ -1,7 +1,7 @@
/** @file
IORT table parser
- Copyright (c) 2016 - 2020, ARM Limited. All rights reserved.
+ Copyright (c) 2016 - 2021, Arm Limited. All rights reserved.
SPDX-License-Identifier: BSD-2-Clause-Patent
@par Reference(s):
@@ -612,7 +612,7 @@ DumpIortNodePmcg (
This function also performs validation of the ACPI table fields.
- @param [in] Trace If TRUE, trace the ACPI fields.
+ @param [in] ParseFlags Flags describing what the parser needs to do.
@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.
@@ -620,7 +620,7 @@ DumpIortNodePmcg (
VOID
EFIAPI
ParseAcpiIort (
- IN BOOLEAN Trace,
+ IN UINT8 ParseFlags,
IN UINT8* Ptr,
IN UINT32 AcpiTableLength,
IN UINT8 AcpiTableRevision
@@ -630,7 +630,7 @@ ParseAcpiIort (
UINT32 Index;
UINT8* NodePtr;
- if (!Trace) {
+ if (!IS_TRACE_FLAG_SET (ParseFlags)) {
return;
}
diff --git a/ShellPkg/Library/UefiShellAcpiViewCommandLib/Parsers/Madt/MadtParser.c b/ShellPkg/Library/UefiShellAcpiViewCommandLib/Parsers/Madt/MadtParser.c
index 15aa2392b60cee9e3843c7c560b0ab84e0be4174..a29bf97a3985a74ff888f225eb0e5cfbcbea72b0 100644
--- a/ShellPkg/Library/UefiShellAcpiViewCommandLib/Parsers/Madt/MadtParser.c
+++ b/ShellPkg/Library/UefiShellAcpiViewCommandLib/Parsers/Madt/MadtParser.c
@@ -1,7 +1,7 @@
/** @file
MADT table parser
- Copyright (c) 2016 - 2020, ARM Limited. All rights reserved.
+ Copyright (c) 2016 - 2021, Arm Limited. All rights reserved.
SPDX-License-Identifier: BSD-2-Clause-Patent
@par Reference(s):
@@ -216,7 +216,7 @@ STATIC CONST ACPI_PARSER MadtInterruptControllerHeaderParser[] = {
This function also performs validation of the ACPI table fields.
- @param [in] Trace If TRUE, trace the ACPI fields.
+ @param [in] ParseFlags Flags describing what the parser needs to do.
@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.
@@ -224,7 +224,7 @@ STATIC CONST ACPI_PARSER MadtInterruptControllerHeaderParser[] = {
VOID
EFIAPI
ParseAcpiMadt (
- IN BOOLEAN Trace,
+ IN UINT8 ParseFlags,
IN UINT8* Ptr,
IN UINT32 AcpiTableLength,
IN UINT8 AcpiTableRevision
@@ -236,7 +236,7 @@ ParseAcpiMadt (
GICDCount = 0;
- if (!Trace) {
+ if (!IS_TRACE_FLAG_SET (ParseFlags)) {
return;
}
diff --git a/ShellPkg/Library/UefiShellAcpiViewCommandLib/Parsers/Mcfg/McfgParser.c b/ShellPkg/Library/UefiShellAcpiViewCommandLib/Parsers/Mcfg/McfgParser.c
index 9da4d60e849721ed3b635bfff8a3bd76728c0ade..febf8a2bd92d8e38bdc59a3f97a8c4485cdba5a5 100644
--- a/ShellPkg/Library/UefiShellAcpiViewCommandLib/Parsers/Mcfg/McfgParser.c
+++ b/ShellPkg/Library/UefiShellAcpiViewCommandLib/Parsers/Mcfg/McfgParser.c
@@ -1,7 +1,7 @@
/** @file
MCFG table parser
- Copyright (c) 2016 - 2018, ARM Limited. All rights reserved.
+ Copyright (c) 2016 - 2021, Arm Limited. All rights reserved.
SPDX-License-Identifier: BSD-2-Clause-Patent
@par Reference(s):
@@ -42,7 +42,7 @@ STATIC CONST ACPI_PARSER PciCfgSpaceBaseAddrParser[] = {
This function also performs validation of the ACPI table fields.
- @param [in] Trace If TRUE, trace the ACPI fields.
+ @param [in] ParseFlags Flags describing what the parser needs to do.
@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.
@@ -50,7 +50,7 @@ STATIC CONST ACPI_PARSER PciCfgSpaceBaseAddrParser[] = {
VOID
EFIAPI
ParseAcpiMcfg (
- IN BOOLEAN Trace,
+ IN UINT8 ParseFlags,
IN UINT8* Ptr,
IN UINT32 AcpiTableLength,
IN UINT8 AcpiTableRevision
@@ -60,7 +60,7 @@ ParseAcpiMcfg (
UINT32 PciCfgOffset;
UINT8* PciCfgSpacePtr;
- if (!Trace) {
+ if (!IS_TRACE_FLAG_SET (ParseFlags)) {
return;
}
diff --git a/ShellPkg/Library/UefiShellAcpiViewCommandLib/Parsers/Pptt/PpttParser.c b/ShellPkg/Library/UefiShellAcpiViewCommandLib/Parsers/Pptt/PpttParser.c
index acd2b81bb3258c7322aa10d2c0e0d842d89e358b..538b6a69350d75ccbf36b86fff115255e77437c7 100644
--- a/ShellPkg/Library/UefiShellAcpiViewCommandLib/Parsers/Pptt/PpttParser.c
+++ b/ShellPkg/Library/UefiShellAcpiViewCommandLib/Parsers/Pptt/PpttParser.c
@@ -1,7 +1,7 @@
/** @file
PPTT table parser
- Copyright (c) 2019 - 2020, ARM Limited. All rights reserved.
+ Copyright (c) 2019 - 2021, Arm Limited. All rights reserved.
SPDX-License-Identifier: BSD-2-Clause-Patent
@par Reference(s):
@@ -241,13 +241,15 @@ STATIC CONST ACPI_PARSER IdStructureParser[] = {
/**
This function parses the Processor Hierarchy Node Structure (Type 0).
- @param [in] Ptr Pointer to the start of the Processor Hierarchy Node
- Structure data.
- @param [in] Length Length of the Processor Hierarchy Node Structure.
+ @param [in] ParseFlags Flags describing what the parser needs to do.
+ @param [in] Ptr Pointer to the start of the Processor Hierarchy Node
+ Structure data.
+ @param [in] Length Length of the Processor Hierarchy Node Structure.
**/
STATIC
VOID
DumpProcessorHierarchyNodeStructure (
+ IN UINT8 ParseFlags,
IN UINT8* Ptr,
IN UINT8 Length
)
@@ -257,7 +259,7 @@ DumpProcessorHierarchyNodeStructure (
CHAR16 Buffer[OUTPUT_FIELD_COLUMN_WIDTH];
Offset = ParseAcpi (
- TRUE,
+ IS_TRACE_FLAG_SET (ParseFlags),
2,
"Processor Hierarchy Node Structure",
Ptr,
@@ -315,18 +317,20 @@ DumpProcessorHierarchyNodeStructure (
/**
This function parses the Cache Type Structure (Type 1).
- @param [in] Ptr Pointer to the start of the Cache Type Structure data.
- @param [in] Length Length of the Cache Type Structure.
+ @param [in] ParseFlags Flags describing what the parser needs to do.
+ @param [in] Ptr Pointer to the start of the Cache Type Structure data.
+ @param [in] Length Length of the Cache Type Structure.
**/
STATIC
VOID
DumpCacheTypeStructure (
+ IN UINT8 ParseFlags,
IN UINT8* Ptr,
IN UINT8 Length
)
{
ParseAcpi (
- TRUE,
+ IS_TRACE_FLAG_SET (ParseFlags),
2,
"Cache Type Structure",
Ptr,
@@ -338,18 +342,20 @@ DumpCacheTypeStructure (
/**
This function parses the ID Structure (Type 2).
- @param [in] Ptr Pointer to the start of the ID Structure data.
- @param [in] Length Length of the ID Structure.
+ @param [in] ParseFlags Flags describing what the parser needs to do.
+ @param [in] Ptr Pointer to the start of the ID Structure data.
+ @param [in] Length Length of the ID Structure.
**/
STATIC
VOID
DumpIDStructure (
+ IN UINT8 ParseFlags,
IN UINT8* Ptr,
- IN UINT8 Length
+ IN UINT8 Length
)
{
ParseAcpi (
- TRUE,
+ IS_TRACE_FLAG_SET (ParseFlags),
2,
"ID Structure",
Ptr,
@@ -370,7 +376,7 @@ DumpIDStructure (
This function also performs validation of the ACPI table fields.
- @param [in] Trace If TRUE, trace the ACPI fields.
+ @param [in] ParseFlags Flags describing what the parser needs to do.
@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.
@@ -378,7 +384,7 @@ DumpIDStructure (
VOID
EFIAPI
ParseAcpiPptt (
- IN BOOLEAN Trace,
+ IN UINT8 ParseFlags,
IN UINT8* Ptr,
IN UINT32 AcpiTableLength,
IN UINT8 AcpiTableRevision
@@ -387,12 +393,12 @@ ParseAcpiPptt (
UINT32 Offset;
UINT8* ProcessorTopologyStructurePtr;
- if (!Trace) {
+ if (!IS_TRACE_FLAG_SET (ParseFlags)) {
return;
}
Offset = ParseAcpi (
- TRUE,
+ IS_TRACE_FLAG_SET (ParseFlags),
0,
"PPTT",
Ptr,
@@ -440,24 +446,29 @@ ParseAcpiPptt (
return;
}
- PrintFieldName (2, L"* Structure Offset *");
- Print (L"0x%x\n", Offset);
+ if (IS_TRACE_FLAG_SET (ParseFlags)) {
+ PrintFieldName (2, L"* Structure Offset *");
+ Print (L"0x%x\n", Offset);
+ }
switch (*ProcessorTopologyStructureType) {
case EFI_ACPI_6_2_PPTT_TYPE_PROCESSOR:
DumpProcessorHierarchyNodeStructure (
+ ParseFlags,
ProcessorTopologyStructurePtr,
*ProcessorTopologyStructureLength
);
break;
case EFI_ACPI_6_2_PPTT_TYPE_CACHE:
DumpCacheTypeStructure (
+ ParseFlags,
ProcessorTopologyStructurePtr,
*ProcessorTopologyStructureLength
);
break;
case EFI_ACPI_6_2_PPTT_TYPE_ID:
DumpIDStructure (
+ ParseFlags,
ProcessorTopologyStructurePtr,
*ProcessorTopologyStructureLength
);
diff --git a/ShellPkg/Library/UefiShellAcpiViewCommandLib/Parsers/Rsdp/RsdpParser.c b/ShellPkg/Library/UefiShellAcpiViewCommandLib/Parsers/Rsdp/RsdpParser.c
index f4a8732a7db7c437031f2a3d2f266b80eff17b4b..c98bc62719c3aef3381152ff2436cb1a29f98362 100644
--- a/ShellPkg/Library/UefiShellAcpiViewCommandLib/Parsers/Rsdp/RsdpParser.c
+++ b/ShellPkg/Library/UefiShellAcpiViewCommandLib/Parsers/Rsdp/RsdpParser.c
@@ -1,7 +1,7 @@
/** @file
RSDP table parser
- Copyright (c) 2016 - 2019, ARM Limited. All rights reserved.
+ Copyright (c) 2016 - 2021, Arm Limited. All rights reserved.
SPDX-License-Identifier: BSD-2-Clause-Patent
@par Reference(s):
@@ -110,7 +110,7 @@ STATIC CONST ACPI_PARSER RsdpParser[] = {
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] ParseFlags Flags describing what the parser needs to do.
@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.
@@ -118,19 +118,19 @@ STATIC CONST ACPI_PARSER RsdpParser[] = {
VOID
EFIAPI
ParseAcpiRsdp (
- IN BOOLEAN Trace,
+ IN UINT8 ParseFlags,
IN UINT8* Ptr,
IN UINT32 AcpiTableLength,
IN UINT8 AcpiTableRevision
)
{
- if (Trace) {
+ if (IS_TRACE_FLAG_SET (ParseFlags)) {
DumpRaw (Ptr, AcpiTableLength);
VerifyChecksum (TRUE, Ptr, AcpiTableLength);
}
ParseAcpi (
- Trace,
+ IS_TRACE_FLAG_SET (ParseFlags),
0,
"RSDP",
Ptr,
diff --git a/ShellPkg/Library/UefiShellAcpiViewCommandLib/Parsers/Slit/SlitParser.c b/ShellPkg/Library/UefiShellAcpiViewCommandLib/Parsers/Slit/SlitParser.c
index e4625ee8b13907893a9b6990ecb956baf91cc3b9..20d2fb79a8ea6251b0e31b5370cc400be9e1478f 100644
--- a/ShellPkg/Library/UefiShellAcpiViewCommandLib/Parsers/Slit/SlitParser.c
+++ b/ShellPkg/Library/UefiShellAcpiViewCommandLib/Parsers/Slit/SlitParser.c
@@ -1,7 +1,7 @@
/** @file
SLIT table parser
- Copyright (c) 2016 - 2019, ARM Limited. All rights reserved.
+ Copyright (c) 2016 - 2021, Arm Limited. All rights reserved.
SPDX-License-Identifier: BSD-2-Clause-Patent
@par Reference(s):
@@ -42,7 +42,7 @@ STATIC CONST ACPI_PARSER SlitParser[] = {
- 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] ParseFlags Flags describing what the parser needs to do.
@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.
@@ -50,7 +50,7 @@ STATIC CONST ACPI_PARSER SlitParser[] = {
VOID
EFIAPI
ParseAcpiSlit (
- IN BOOLEAN Trace,
+ IN UINT8 ParseFlags,
IN UINT8* Ptr,
IN UINT32 AcpiTableLength,
IN UINT8 AcpiTableRevision
@@ -63,7 +63,7 @@ ParseAcpiSlit (
UINT8* LocalityPtr;
CHAR16 Buffer[80]; // Used for AsciiName param of ParseAcpi
- if (!Trace) {
+ if (!IS_TRACE_FLAG_SET (ParseFlags)) {
return;
}
diff --git a/ShellPkg/Library/UefiShellAcpiViewCommandLib/Parsers/Spcr/SpcrParser.c b/ShellPkg/Library/UefiShellAcpiViewCommandLib/Parsers/Spcr/SpcrParser.c
index 3b06b05dee8c056c6e009b9e485ccd35d4194e95..99cffafa946979b79a06cd28f14257beaa6cafec 100644
--- a/ShellPkg/Library/UefiShellAcpiViewCommandLib/Parsers/Spcr/SpcrParser.c
+++ b/ShellPkg/Library/UefiShellAcpiViewCommandLib/Parsers/Spcr/SpcrParser.c
@@ -1,7 +1,7 @@
/** @file
SPCR table parser
- Copyright (c) 2016 - 2019, ARM Limited. All rights reserved.
+ Copyright (c) 2016 - 2021, Arm Limited. All rights reserved.
SPDX-License-Identifier: BSD-2-Clause-Patent
@par Reference(s):
@@ -114,7 +114,7 @@ STATIC CONST ACPI_PARSER SpcrParser[] = {
This function also performs validations of the ACPI table fields.
- @param [in] Trace If TRUE, trace the ACPI fields.
+ @param [in] ParseFlags Flags describing what the parser needs to do.
@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.
@@ -122,13 +122,13 @@ STATIC CONST ACPI_PARSER SpcrParser[] = {
VOID
EFIAPI
ParseAcpiSpcr (
- IN BOOLEAN Trace,
+ IN UINT8 ParseFlags,
IN UINT8* Ptr,
IN UINT32 AcpiTableLength,
IN UINT8 AcpiTableRevision
)
{
- if (!Trace) {
+ if (!IS_TRACE_FLAG_SET (ParseFlags)) {
return;
}
diff --git a/ShellPkg/Library/UefiShellAcpiViewCommandLib/Parsers/Srat/SratParser.c b/ShellPkg/Library/UefiShellAcpiViewCommandLib/Parsers/Srat/SratParser.c
index b9b67820b89f7fc5560a1022e976663db7d9df2d..907856368fbe0ad9f140d8f27e51bd9460f35b1a 100644
--- a/ShellPkg/Library/UefiShellAcpiViewCommandLib/Parsers/Srat/SratParser.c
+++ b/ShellPkg/Library/UefiShellAcpiViewCommandLib/Parsers/Srat/SratParser.c
@@ -1,7 +1,7 @@
/** @file
SRAT table parser
- Copyright (c) 2016 - 2020, ARM Limited. All rights reserved.
+ Copyright (c) 2016 - 2021, Arm Limited. All rights reserved.
SPDX-License-Identifier: BSD-2-Clause-Patent
@par Reference(s):
@@ -344,7 +344,7 @@ STATIC CONST ACPI_PARSER SratX2ApciAffinityParser[] = {
This function also performs validation of the ACPI table fields.
- @param [in] Trace If TRUE, trace the ACPI fields.
+ @param [in] ParseFlags Flags describing what the parser needs to do.
@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.
@@ -352,7 +352,7 @@ STATIC CONST ACPI_PARSER SratX2ApciAffinityParser[] = {
VOID
EFIAPI
ParseAcpiSrat (
- IN BOOLEAN Trace,
+ IN UINT8 ParseFlags,
IN UINT8* Ptr,
IN UINT32 AcpiTableLength,
IN UINT8 AcpiTableRevision
@@ -375,7 +375,7 @@ ParseAcpiSrat (
ApicSapicAffinityIndex = 0;
X2ApicAffinityIndex = 0;
- if (!Trace) {
+ if (!IS_TRACE_FLAG_SET (ParseFlags)) {
return;
}
diff --git a/ShellPkg/Library/UefiShellAcpiViewCommandLib/Parsers/Ssdt/SsdtParser.c b/ShellPkg/Library/UefiShellAcpiViewCommandLib/Parsers/Ssdt/SsdtParser.c
index f18664b8a6879b82dc9c55d9979ca21e01c4fc99..138a3159fb1a6121387f832621d23960c688ce30 100644
--- a/ShellPkg/Library/UefiShellAcpiViewCommandLib/Parsers/Ssdt/SsdtParser.c
+++ b/ShellPkg/Library/UefiShellAcpiViewCommandLib/Parsers/Ssdt/SsdtParser.c
@@ -1,7 +1,7 @@
/** @file
SSDT table parser
- Copyright (c) 2016 - 2018, ARM Limited. All rights reserved.
+ Copyright (c) 2016 - 2021, Arm Limited. All rights reserved.
SPDX-License-Identifier: BSD-2-Clause-Patent
@par Reference(s):
@@ -20,7 +20,7 @@
For the SSDT table only the ACPI header fields are
parsed and traced.
- @param [in] Trace If TRUE, trace the ACPI fields.
+ @param [in] ParseFlags Flags describing what the parser needs to do.
@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.
@@ -28,13 +28,13 @@
VOID
EFIAPI
ParseAcpiSsdt (
- IN BOOLEAN Trace,
+ IN UINT8 ParseFlags,
IN UINT8* Ptr,
IN UINT32 AcpiTableLength,
IN UINT8 AcpiTableRevision
)
{
- if (!Trace) {
+ if (!IS_TRACE_FLAG_SET (ParseFlags)) {
return;
}
diff --git a/ShellPkg/Library/UefiShellAcpiViewCommandLib/Parsers/Xsdt/XsdtParser.c b/ShellPkg/Library/UefiShellAcpiViewCommandLib/Parsers/Xsdt/XsdtParser.c
index e39061f8e2612f2cce4aebf51a511b63b703662b..bbd58d72ad9c676b4843d3b4f1d7c554a5abbd3f 100644
--- a/ShellPkg/Library/UefiShellAcpiViewCommandLib/Parsers/Xsdt/XsdtParser.c
+++ b/ShellPkg/Library/UefiShellAcpiViewCommandLib/Parsers/Xsdt/XsdtParser.c
@@ -1,7 +1,7 @@
/** @file
XSDT table parser
- Copyright (c) 2016 - 2019, ARM Limited. All rights reserved.
+ Copyright (c) 2016 - 2021, Arm Limited. All rights reserved.
SPDX-License-Identifier: BSD-2-Clause-Patent
@par Reference(s):
@@ -40,7 +40,7 @@ GetAcpiXsdtHeaderInfo (
This function also performs validation of the XSDT table.
- @param [in] Trace If TRUE, trace the ACPI fields.
+ @param [in] ParseFlags Flags describing what the parser needs to do.
@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.
@@ -48,7 +48,7 @@ GetAcpiXsdtHeaderInfo (
VOID
EFIAPI
ParseAcpiXsdt (
- IN BOOLEAN Trace,
+ IN UINT8 ParseFlags,
IN UINT8* Ptr,
IN UINT32 AcpiTableLength,
IN UINT8 AcpiTableRevision
@@ -61,7 +61,7 @@ ParseAcpiXsdt (
CHAR16 Buffer[32];
Offset = ParseAcpi (
- Trace,
+ IS_TRACE_FLAG_SET (ParseFlags),
0,
"XSDT",
Ptr,
@@ -71,7 +71,7 @@ ParseAcpiXsdt (
TableOffset = Offset;
- if (Trace) {
+ if (IS_TRACE_FLAG_SET (ParseFlags)) {
EntryIndex = 0;
TablePointer = (UINT64*)(Ptr + TableOffset);
while (Offset < AcpiTableLength) {
--
Guid("CE165669-3EF3-493F-B85D-6190EE5B9759")
^ permalink raw reply related [flat|nested] 7+ messages in thread
* [PATCH v1 5/5] ShellPkg: add PPTT dot file genration
2021-05-07 10:37 [PATCH v1 0/5] Dot graph generator for PPTT Joey Gouly
` (3 preceding siblings ...)
2021-05-07 10:38 ` [PATCH v1 4/5] ShellPkg: add dot file generator functions Joey Gouly
@ 2021-05-07 10:38 ` Joey Gouly
2021-05-07 11:47 ` [PATCH v1 0/5] Dot graph generator for PPTT Joey Gouly
5 siblings, 0 replies; 7+ messages in thread
From: Joey Gouly @ 2021-05-07 10:38 UTC (permalink / raw)
To: devel; +Cc: joey.gouly, sami.mujawar, ray.ni, zhichao.gao, nd
From: Marc Moisson-Franckhauser <marc.moisson-franckhauser@arm.com>
Bugzilla: 3378 (https://bugzilla.tianocore.org/show_bug.cgi?id=3378)
This generates a dot file from the PPTT table that can be used to
visualise the topology of the CPUs and Caches.
Signed-off-by: Marc Moisson-Franckhauser <marc.moisson-franckhauser@arm.com>
Signed-off-by: Joey Gouly <joey.gouly@arm.com>
---
ShellPkg/Library/UefiShellAcpiViewCommandLib/Parsers/Pptt/PpttParser.c | 240 ++++++++++++++++++--
1 file changed, 218 insertions(+), 22 deletions(-)
diff --git a/ShellPkg/Library/UefiShellAcpiViewCommandLib/Parsers/Pptt/PpttParser.c b/ShellPkg/Library/UefiShellAcpiViewCommandLib/Parsers/Pptt/PpttParser.c
index 538b6a69350d75ccbf36b86fff115255e77437c7..b52bd532b846b9cec0ca315b043beff95df40bd5 100644
--- a/ShellPkg/Library/UefiShellAcpiViewCommandLib/Parsers/Pptt/PpttParser.c
+++ b/ShellPkg/Library/UefiShellAcpiViewCommandLib/Parsers/Pptt/PpttParser.c
@@ -15,11 +15,23 @@
#include "AcpiView.h"
#include "AcpiViewConfig.h"
#include "PpttParser.h"
+#include "DotGenerator.h"
// Local variables
STATIC CONST UINT8* ProcessorTopologyStructureType;
STATIC CONST UINT8* ProcessorTopologyStructureLength;
+
STATIC CONST UINT32* NumberOfPrivateResources;
+STATIC CONST UINT32* ProcessorHierarchyParent;
+STATIC CONST EFI_ACPI_6_3_PPTT_STRUCTURE_PROCESSOR_FLAGS* ProcStructFlags;
+STATIC CONST UINT32* NextLevelOfCache;
+STATIC CONST EFI_ACPI_6_3_PPTT_STRUCTURE_CACHE_ATTRIBUTES* CacheAttributes;
+STATIC CONST UINT32* CacheSize;
+
+STATIC CONST UINT8* PpttStartPointer;
+
+STATIC SHELL_FILE_HANDLE mDotFileHandle;
+
STATIC ACPI_DESCRIPTION_HEADER_INFO AcpiHdrInfo;
/**
@@ -198,8 +210,9 @@ STATIC CONST ACPI_PARSER ProcessorHierarchyNodeStructureParser[] = {
{L"Length", 1, 1, L"%d", NULL, NULL, NULL, NULL},
{L"Reserved", 2, 2, L"0x%x", NULL, NULL, NULL, NULL},
- {L"Flags", 4, 4, L"0x%x", NULL, NULL, NULL, NULL},
- {L"Parent", 4, 8, L"0x%x", NULL, NULL, NULL, NULL},
+ {L"Flags", 4, 4, L"0x%x", NULL, (VOID**)&ProcStructFlags, NULL, NULL},
+ {L"Parent", 4, 8, L"0x%x", NULL,
+ (VOID**)&ProcessorHierarchyParent, NULL, NULL},
{L"ACPI Processor ID", 4, 12, L"0x%x", NULL, NULL, NULL, NULL},
{L"Number of private resources", 4, 16, L"%d", NULL,
(VOID**)&NumberOfPrivateResources, NULL, NULL}
@@ -214,11 +227,13 @@ STATIC CONST ACPI_PARSER CacheTypeStructureParser[] = {
{L"Reserved", 2, 2, L"0x%x", NULL, NULL, NULL, NULL},
{L"Flags", 4, 4, L"0x%x", NULL, NULL, NULL, NULL},
- {L"Next Level of Cache", 4, 8, L"0x%x", NULL, NULL, NULL, NULL},
- {L"Size", 4, 12, L"0x%x", NULL, NULL, NULL, NULL},
+ {L"Next Level of Cache", 4, 8, L"0x%x", NULL,
+ (VOID**)&NextLevelOfCache, NULL, NULL},
+ {L"Size", 4, 12, L"0x%x", NULL, (VOID**)&CacheSize, NULL, NULL},
{L"Number of sets", 4, 16, L"%d", NULL, NULL, ValidateCacheNumberOfSets, NULL},
{L"Associativity", 1, 20, L"%d", NULL, NULL, ValidateCacheAssociativity, NULL},
- {L"Attributes", 1, 21, L"0x%x", NULL, NULL, ValidateCacheAttributes, NULL},
+ {L"Attributes", 1, 21, L"0x%x", NULL, (VOID**)&CacheAttributes,
+ ValidateCacheAttributes, NULL},
{L"Line size", 2, 22, L"%d", NULL, NULL, ValidateCacheLineSize, NULL}
};
@@ -257,6 +272,7 @@ DumpProcessorHierarchyNodeStructure (
UINT32 Offset;
UINT32 Index;
CHAR16 Buffer[OUTPUT_FIELD_COLUMN_WIDTH];
+ CONST UINT8* TypePtr;
Offset = ParseAcpi (
IS_TRACE_FLAG_SET (ParseFlags),
@@ -291,26 +307,67 @@ DumpProcessorHierarchyNodeStructure (
return;
}
- Index = 0;
+ if (IS_GRAPH_FLAG_SET (ParseFlags)) {
+ if (ProcStructFlags->ProcessorIsAThread) {
+ UnicodeSPrint(Buffer, sizeof (Buffer), L"Thread");
+ } else if (ProcStructFlags->NodeIsALeaf) {
+ UnicodeSPrint(Buffer, sizeof (Buffer), L"Core");
+ } else if (ProcStructFlags->PhysicalPackage) {
+ UnicodeSPrint(Buffer, sizeof (Buffer), L"Physical\\nPackage");
+ } else {
+ UnicodeSPrint(Buffer, sizeof (Buffer), L"Cluster");
+ }
+
+ DotAddNode (
+ mDotFileHandle,
+ (UINT32)(Ptr - PpttStartPointer),
+ DOT_BOX_SQUARE | DOT_COLOR_BLUE | DOT_BOX_ADD_ID_TO_LABEL,
+ Buffer
+ );
+
+ // Add link to parent node.
+ if (*ProcessorHierarchyParent != 0) {
+ DotAddLink (
+ mDotFileHandle,
+ (UINT32)(Ptr - PpttStartPointer),
+ *ProcessorHierarchyParent,
+ 0x0
+ );
+ }
+ }
// Parse the specified number of private resource references or the Processor
// Hierarchy Node length. Whichever is minimum.
- while (Index < *NumberOfPrivateResources) {
- UnicodeSPrint (
- Buffer,
- sizeof (Buffer),
- L"Private resources [%d]",
- Index
- );
+ for (Index = 0; Index < *NumberOfPrivateResources; Index++) {
+ if (IS_TRACE_FLAG_SET (ParseFlags)) {
+ UnicodeSPrint (
+ Buffer,
+ sizeof (Buffer),
+ L"Private resources [%d]",
+ Index
+ );
- PrintFieldName (4, Buffer);
- Print (
- L"0x%x\n",
- *((UINT32*)(Ptr + Offset))
- );
+ PrintFieldName (4, Buffer);
+ Print (
+ L"0x%x\n",
+ *((UINT32*)(Ptr + Offset))
+ );
+ }
+
+ if (IS_GRAPH_FLAG_SET (ParseFlags)) {
+ TypePtr = PpttStartPointer + *((UINT32*)(Ptr + Offset));
+ if (*TypePtr == EFI_ACPI_6_2_PPTT_TYPE_ID) {
+ continue;
+ }
+ DotAddLink (
+ mDotFileHandle,
+ *((UINT32*)(Ptr + Offset)),
+ (UINT32)(Ptr - PpttStartPointer),
+ DOT_ARROW_RANK_REVERSE
+ );
+ }
Offset += sizeof (UINT32);
- Index++;
}
}
@@ -329,6 +386,8 @@ DumpCacheTypeStructure (
IN UINT8 Length
)
{
+ CHAR16 LabelBuffer[64];
+
ParseAcpi (
IS_TRACE_FLAG_SET (ParseFlags),
2,
@@ -337,6 +396,88 @@ DumpCacheTypeStructure (
Length,
PARSER_PARAMS (CacheTypeStructureParser)
);
+
+ if (IS_GRAPH_FLAG_SET (ParseFlags)) {
+ // Create cache node
+
+ // Start node label with type of cache
+ switch (CacheAttributes->CacheType) {
+ case EFI_ACPI_6_3_CACHE_ATTRIBUTES_CACHE_TYPE_DATA:
+ UnicodeSPrint (
+ LabelBuffer,
+ sizeof (LabelBuffer),
+ L"D-Cache\\n"
+ );
+ break;
+ case EFI_ACPI_6_3_CACHE_ATTRIBUTES_CACHE_TYPE_INSTRUCTION:
+ UnicodeSPrint (
+ LabelBuffer,
+ sizeof (LabelBuffer),
+ L"I-Cache\\n"
+ );
+ break;
+ default:
+ UnicodeSPrint (
+ LabelBuffer,
+ sizeof (LabelBuffer),
+ L"Unified Cache\\n"
+ );
+ }
+
+ // Add size of cache to node label
+ if (((*CacheSize) & 0xfff00000) != 0) {
+ UnicodeSPrint (
+ LabelBuffer,
+ sizeof (LabelBuffer),
+ L"%s%dMiB",
+ LabelBuffer,
+ *CacheSize >> 20
+ );
+ }
+ if ((*CacheSize & 0xffc00) != 0) {
+ UnicodeSPrint (
+ LabelBuffer,
+ sizeof (LabelBuffer),
+ L"%s%dkiB",
+ LabelBuffer,
+ (*CacheSize >> 10) & 0x3ff
+ );
+ }
+ if ((*CacheSize & 0x3ff) != 0) {
+ UnicodeSPrint (
+ LabelBuffer,
+ sizeof (LabelBuffer),
+ L"%s%dB",
+ LabelBuffer,
+ *CacheSize & 0x3ff
+ );
+ }
+ if (*CacheSize == 0) {
+ UnicodeSPrint (
+ LabelBuffer,
+ sizeof (LabelBuffer),
+ L"%s0B",
+ LabelBuffer
+ );
+ }
+
+ //Add node to dot file
+ DotAddNode (
+ mDotFileHandle,
+ (UINT32)(Ptr - PpttStartPointer),
+ DOT_BOX_SQUARE | DOT_COLOR_YELLOW | DOT_BOX_ADD_ID_TO_LABEL,
+ LabelBuffer
+ );
+
+ if (*NextLevelOfCache != 0) {
+ DotAddLink (
+ mDotFileHandle,
+ *NextLevelOfCache,
+ (UINT32)(Ptr - PpttStartPointer),
+ DOT_ARROW_RANK_REVERSE | DOT_COLOR_GRAY
+ );
+ }
+ }
}
/**
@@ -390,13 +531,46 @@ ParseAcpiPptt (
IN UINT8 AcpiTableRevision
)
{
- UINT32 Offset;
- UINT8* ProcessorTopologyStructurePtr;
+ EFI_STATUS Status;
+ UINT32 Offset;
+ UINT8* ProcessorTopologyStructurePtr;
+ CHAR16 Buffer[128];
+ CHAR16 FileNameBuffer[MAX_FILE_NAME_LEN];
- if (!IS_TRACE_FLAG_SET (ParseFlags)) {
+ if (!IS_TRACE_FLAG_SET (ParseFlags) &&
+ !IS_GRAPH_FLAG_SET (ParseFlags)) {
return;
}
+ if (IS_GRAPH_FLAG_SET (ParseFlags)) {
+ Status = GetNewFileName (
+ L"PPTT",
+ L"dot",
+ FileNameBuffer,
+ sizeof (FileNameBuffer)
+ );
+
+ if (EFI_ERROR (Status)) {
+ Print (
+ L"Error: Could not open dot file for PPTT table:\n"
+ L"Could not get a file name."
+ );
+ // Abandonning creation of dot graph by unsetting the flag.
+ // We continue parsing in case trace is set.
+ ParseFlags &= ~PARSE_FLAGS_GRAPH;
+ } else {
+ mDotFileHandle = DotOpenNewFile (FileNameBuffer);
+ if (mDotFileHandle == NULL) {
+ Print (L"ERROR: Could not open dot file for PPTT table.\n");
+ // Abandonning creation of dot graph by unsetting the flag.
+ // We continue parsing in case trace is set.
+ ParseFlags &= ~PARSE_FLAGS_GRAPH;
+ }
+ }
+ }
+
+ PpttStartPointer = Ptr;
+
Offset = ParseAcpi (
IS_TRACE_FLAG_SET (ParseFlags),
0,
@@ -406,6 +580,24 @@ ParseAcpiPptt (
PARSER_PARAMS (PpttParser)
);
+ if (*(AcpiHdrInfo.Revision) < 2 &&
+ IS_GRAPH_FLAG_SET (ParseFlags)) {
+ Print (L"\nWARNING: Dot output may not be consistent for PPTT revisions < 2\n");
+ UnicodeSPrint (
+ Buffer,
+ sizeof (Buffer),
+ L"WARNING: PPTT table revision is %u.\\n" \
+ L"Revisions lower than 2 might lead to incorrect labelling",
+ *(AcpiHdrInfo.Revision)
+ );
+ DotAddNode (
+ mDotFileHandle,
+ 0,
+ DOT_COLOR_RED | DOT_BOX_SQUARE,
+ Buffer
+ );
+ }
+
ProcessorTopologyStructurePtr = Ptr + Offset;
while (Offset < AcpiTableLength) {
@@ -486,4 +678,8 @@ ParseAcpiPptt (
ProcessorTopologyStructurePtr += *ProcessorTopologyStructureLength;
Offset += *ProcessorTopologyStructureLength;
} // while
+
+ if (IS_GRAPH_FLAG_SET (ParseFlags)) {
+ DotCloseFile (mDotFileHandle);
+ }
}
--
Guid("CE165669-3EF3-493F-B85D-6190EE5B9759")
^ permalink raw reply related [flat|nested] 7+ messages in thread