* [PATCH v5 0/2] ShellPkg/AcpiView: Adds ACPI_PARSER bitfield parser @ 2022-02-16 11:13 Abdul Lateef Attar 2022-02-16 11:13 ` [PATCH v5 1/2] " Abdul Lateef Attar ` (2 more replies) 0 siblings, 3 replies; 8+ messages in thread From: Abdul Lateef Attar @ 2022-02-16 11:13 UTC (permalink / raw) To: devel; +Cc: Ray Ni, Zhichao Gao, Sami Mujawar Hi, Sorry for the delayed reply. I had updated the patch according to the review comments. Please review the updated patch. REF: https://github.com/abdattar/edk2/tree/FadtFlagsParserV5 Cc: Ray Ni <ray.ni@intel.com> Cc: Zhichao Gao <zhichao.gao@intel.com> Cc: Sami Mujawar <sami.mujawar@arm.com> Abdul Lateef Attar (2): ShellPkg/AcpiView: Adds ACPI_PARSER bitfield parser ShellPkg/AcpiView: PrintFormatter for FADT Flags field ShellPkg/Library/UefiShellAcpiViewCommandLib/AcpiParser.h | 48 +++++ ShellPkg/Library/UefiShellAcpiViewCommandLib/AcpiParser.c | 188 ++++++++++++++++++++ ShellPkg/Library/UefiShellAcpiViewCommandLib/Parsers/Fadt/FadtParser.c | 167 +++++++++++------ 3 files changed, 348 insertions(+), 55 deletions(-) -- 2.25.1 ^ permalink raw reply [flat|nested] 8+ messages in thread
* [PATCH v5 1/2] ShellPkg/AcpiView: Adds ACPI_PARSER bitfield parser 2022-02-16 11:13 [PATCH v5 0/2] ShellPkg/AcpiView: Adds ACPI_PARSER bitfield parser Abdul Lateef Attar @ 2022-02-16 11:13 ` Abdul Lateef Attar 2022-02-18 15:49 ` Sami Mujawar 2022-02-16 11:13 ` [PATCH v5 2/2] ShellPkg/AcpiView: PrintFormatter for FADT Flags field Abdul Lateef Attar 2022-02-21 7:40 ` [PATCH v5 0/2] ShellPkg/AcpiView: Adds ACPI_PARSER bitfield parser Gao, Zhichao 2 siblings, 1 reply; 8+ messages in thread From: Abdul Lateef Attar @ 2022-02-16 11:13 UTC (permalink / raw) To: devel; +Cc: Ray Ni, Zhichao Gao, Sami Mujawar REF: https://bugzilla.tianocore.org/show_bug.cgi?id=3839 Adds ParseAcpiBitFields() which is based on ParseAcpi() and capable of parsing the bit fields. Supports parsing of UINT8, UINT16, UINT32 and UINT64 byte data. Cc: Ray Ni <ray.ni@intel.com> Cc: Zhichao Gao <zhichao.gao@intel.com> Cc: Sami Mujawar <sami.mujawar@arm.com> Signed-off-by: Abdul Lateef Attar <abdattar@amd.com> --- ShellPkg/Library/UefiShellAcpiViewCommandLib/AcpiParser.h | 48 +++++ ShellPkg/Library/UefiShellAcpiViewCommandLib/AcpiParser.c | 188 ++++++++++++++++++++ 2 files changed, 236 insertions(+) diff --git a/ShellPkg/Library/UefiShellAcpiViewCommandLib/AcpiParser.h b/ShellPkg/Library/UefiShellAcpiViewCommandLib/AcpiParser.h index 5c916a4720b8..db8c88f6dfa4 100644 --- a/ShellPkg/Library/UefiShellAcpiViewCommandLib/AcpiParser.h +++ b/ShellPkg/Library/UefiShellAcpiViewCommandLib/AcpiParser.h @@ -2,6 +2,7 @@ Header file for ACPI parser Copyright (c) 2016 - 2020, Arm Limited. All rights reserved. + Copyright (c) 2022, AMD Incorporated. All rights reserved. SPDX-License-Identifier: BSD-2-Clause-Patent **/ @@ -251,6 +252,11 @@ typedef VOID (EFIAPI *FNPTR_FIELD_VALIDATOR)(UINT8 *Ptr, VOID *Context); the field data. If the field is more complex and requires additional processing for formatting and representation a print formatter function can be specified in 'PrintFormatter'. + + ParseAcpiBitFields() uses AcpiParser structure to parse the bit fields. + It considers Length as a number of bits that need to be parsed. + Also, the Offset field will be considered as starting offset of the bitfield. + The PrintFormatter function may choose to use the format string specified by 'Format' or use its own internal format string. @@ -264,10 +270,12 @@ typedef struct AcpiParser { /// The length of the field. /// (Byte Length column from ACPI table spec) + /// Length(in bits) of the bitfield if used with ParseAcpiBitFields(). UINT32 Length; /// The offset of the field from the start of the table. /// (Byte Offset column from ACPI table spec) + /// The Bit offset of the field if used with ParseAcpiBitFields(). UINT32 Offset; /// Optional Print() style format string for tracing the data. If not @@ -285,6 +293,7 @@ typedef struct AcpiParser { /// a pointer to the field data. This value is set after the FieldValidator /// has been called and therefore should not be used by the FieldValidator. /// If unused this must be set to NULL. + /// ItemPtr is not supported with ParseAcpiBitFields(). VOID **ItemPtr; /// Optional pointer to a field validator function. @@ -364,6 +373,45 @@ ParseAcpi ( IN UINT32 ParserItems ); +/** + This function is used to parse an ACPI table bitfield buffer. + + The ACPI table buffer is parsed using the ACPI table parser information + specified by a pointer to an array of ACPI_PARSER elements. This parser + function iterates through each item on the ACPI_PARSER array and logs the ACPI table bitfields. + + This function can optionally be used to parse ACPI tables and fetch specific + field values. The ItemPtr member of the ACPI_PARSER structure (where used) + is updated by this parser function to point to the selected field data + (e.g. useful for variable length nested fields). + + ItemPtr member of ACPI_PARSER is not supported with this function. + + @param [in] Trace Trace the ACPI fields TRUE else only parse the + table. + @param [in] Indent Number of spaces to indent the output. + @param [in] AsciiName Optional pointer to an ASCII string that describes + the table being parsed. + @param [in] Ptr Pointer to the start of the buffer. + @param [in] Length Length of the buffer pointed by Ptr. + @param [in] Parser Pointer to an array of ACPI_PARSER structure that + describes the table being parsed. + @param [in] ParserItems Number of items in the ACPI_PARSER array. + + @retval Number of bits parsed. +**/ +UINT32 +EFIAPI +ParseAcpiBitFields ( + IN BOOLEAN Trace, + IN UINT32 Indent, + IN CONST CHAR8 *AsciiName OPTIONAL, + IN UINT8 *Ptr, + IN UINT32 Length, + IN CONST ACPI_PARSER *Parser, + IN UINT32 ParserItems + ); + /** This is a helper macro to pass parameters to the Parser functions. diff --git a/ShellPkg/Library/UefiShellAcpiViewCommandLib/AcpiParser.c b/ShellPkg/Library/UefiShellAcpiViewCommandLib/AcpiParser.c index cb193a5ea449..fcc56c189d65 100644 --- a/ShellPkg/Library/UefiShellAcpiViewCommandLib/AcpiParser.c +++ b/ShellPkg/Library/UefiShellAcpiViewCommandLib/AcpiParser.c @@ -2,12 +2,14 @@ ACPI parser Copyright (c) 2016 - 2021, Arm Limited. All rights reserved. + Copyright (c) 2022, AMD Incorporated. All rights reserved. SPDX-License-Identifier: BSD-2-Clause-Patent **/ #include <Uefi.h> #include <Library/UefiLib.h> #include <Library/UefiBootServicesTableLib.h> +#include <Library/BaseMemoryLib.h> #include "AcpiParser.h" #include "AcpiView.h" #include "AcpiViewConfig.h" @@ -752,3 +754,189 @@ ParseAcpiHeader ( return BytesParsed; } + +/** + This function is used to parse an ACPI table bitfield buffer. + + The ACPI table buffer is parsed using the ACPI table parser information + specified by a pointer to an array of ACPI_PARSER elements. This parser + function iterates through each item on the ACPI_PARSER array and logs the ACPI table bitfields. + + This function can optionally be used to parse ACPI tables and fetch specific + field values. The ItemPtr member of the ACPI_PARSER structure (where used) + is updated by this parser function to point to the selected field data + (e.g. useful for variable length nested fields). + + ItemPtr member of ACPI_PARSER is not supported with this function. + + @param [in] Trace Trace the ACPI fields TRUE else only parse the + table. + @param [in] Indent Number of spaces to indent the output. + @param [in] AsciiName Optional pointer to an ASCII string that describes + the table being parsed. + @param [in] Ptr Pointer to the start of the buffer. + @param [in] Length Length in bytes of the buffer pointed by Ptr. + @param [in] Parser Pointer to an array of ACPI_PARSER structure that + describes the table being parsed. + @param [in] ParserItems Number of items in the ACPI_PARSER array. + + @retval Number of bits parsed. +**/ +UINT32 +EFIAPI +ParseAcpiBitFields ( + IN BOOLEAN Trace, + IN UINT32 Indent, + IN CONST CHAR8 *AsciiName OPTIONAL, + IN UINT8 *Ptr, + IN UINT32 Length, + IN CONST ACPI_PARSER *Parser, + IN UINT32 ParserItems + ) +{ + UINT32 Index; + UINT32 Offset; + BOOLEAN HighLight; + UINTN OriginalAttribute; + + UINT64 Data; + UINT64 BitsData; + + if ((Length == 0) || (Length > 8)) { + IncrementErrorCount (); + Print ( + L"\nERROR: Bitfield Length(%d) is zero or exceeding the 64 bit limit.\n", + Length + ); + return 0; + } + + // + // set local variables to suppress incorrect compiler/analyzer warnings + // + OriginalAttribute = 0; + Offset = 0; + + // Increment the Indent + gIndent += Indent; + + CopyMem ((VOID *)&BitsData, (VOID *)Ptr, Length); + if (Trace && (AsciiName != NULL)) { + HighLight = GetColourHighlighting (); + + if (HighLight) { + OriginalAttribute = gST->ConOut->Mode->Attribute; + gST->ConOut->SetAttribute ( + gST->ConOut, + EFI_TEXT_ATTR ( + EFI_YELLOW, + ((OriginalAttribute&(BIT4|BIT5|BIT6))>>4) + ) + ); + } + + Print ( + L"%*a%-*a :\n", + gIndent, + "", + (OUTPUT_FIELD_COLUMN_WIDTH - gIndent), + AsciiName + ); + if (HighLight) { + gST->ConOut->SetAttribute (gST->ConOut, OriginalAttribute); + } + } + + for (Index = 0; Index < ParserItems; Index++) { + if ((Offset + Parser[Index].Length) > (Length * 8)) { + // For fields outside the buffer length provided, reset any pointers + // which were supposed to be updated by this function call + if (Parser[Index].ItemPtr != NULL) { + *Parser[Index].ItemPtr = NULL; + } + + // We don't parse past the end of the max length specified + continue; + } + + if (Parser[Index].Length == 0) { + IncrementErrorCount (); + // don't parse the bitfield whose length is zero + Print ( + L"\nERROR: %a: Cannot parse this field, Field Length = %d\n", + Parser[Index].Length + ); + continue; + } + + if (GetConsistencyChecking () && + (Offset != Parser[Index].Offset)) + { + IncrementErrorCount (); + Print ( + L"\nERROR: %a: Offset Mismatch for %s\n" + L"CurrentOffset = %d FieldOffset = %d\n", + AsciiName, + Parser[Index].NameStr, + Offset, + Parser[Index].Offset + ); + } + + // extract Bitfield data for the current item + Data = (BitsData >> Parser[Index].Offset) & ~(~0ULL << Parser[Index].Length); + + if (Trace) { + // if there is a Formatter function let the function handle + // the printing else if a Format is specified in the table use + // the Format for printing + PrintFieldName (2, Parser[Index].NameStr); + if (Parser[Index].PrintFormatter != NULL) { + Parser[Index].PrintFormatter (Parser[Index].Format, (UINT8 *)&Data); + } else if (Parser[Index].Format != NULL) { + // convert bit length to byte length + switch ((Parser[Index].Length + 7) >> 3) { + // print the data depends on byte size + case 1: + DumpUint8 (Parser[Index].Format, (UINT8 *)&Data); + break; + case 2: + DumpUint16 (Parser[Index].Format, (UINT8 *)&Data); + break; + case 3: + case 4: + DumpUint32 (Parser[Index].Format, (UINT8 *)&Data); + break; + case 5: + case 6: + case 7: + case 8: + DumpUint64 (Parser[Index].Format, (UINT8 *)&Data); + break; + default: + Print ( + L"\nERROR: %a: CANNOT PARSE THIS FIELD, Field Length = %d\n", + AsciiName, + Parser[Index].Length + ); + } // switch + } + + // Validating only makes sense if we are tracing + // the parsed table entries, to report by table name. + if (GetConsistencyChecking () && + (Parser[Index].FieldValidator != NULL)) + { + Parser[Index].FieldValidator ((UINT8 *)&Data, Parser[Index].Context); + } + + Print (L"\n"); + } // if (Trace) + + Offset += Parser[Index].Length; + } // for + + // Decrement the Indent + gIndent -= Indent; + return Offset; +} -- 2.25.1 ^ permalink raw reply related [flat|nested] 8+ messages in thread
* Re: [PATCH v5 1/2] ShellPkg/AcpiView: Adds ACPI_PARSER bitfield parser 2022-02-16 11:13 ` [PATCH v5 1/2] " Abdul Lateef Attar @ 2022-02-18 15:49 ` Sami Mujawar 0 siblings, 0 replies; 8+ messages in thread From: Sami Mujawar @ 2022-02-18 15:49 UTC (permalink / raw) To: Abdul Lateef Attar, devel; +Cc: Ray Ni, Zhichao Gao, nd Hi Abdul, Thank you for this patch. Reviewed-by: Sami Mujawar <sami.mujawar@arm.com> Regards, Sami Mujawar On 16/02/2022 11:13 AM, Abdul Lateef Attar wrote: > REF: https://bugzilla.tianocore.org/show_bug.cgi?id=3839 > > Adds ParseAcpiBitFields() which is based on > ParseAcpi() and capable of parsing the bit fields. > Supports parsing of UINT8, UINT16, UINT32 and UINT64 byte data. > > Cc: Ray Ni <ray.ni@intel.com> > Cc: Zhichao Gao <zhichao.gao@intel.com> > Cc: Sami Mujawar <sami.mujawar@arm.com> > Signed-off-by: Abdul Lateef Attar <abdattar@amd.com> > --- > ShellPkg/Library/UefiShellAcpiViewCommandLib/AcpiParser.h | 48 +++++ > ShellPkg/Library/UefiShellAcpiViewCommandLib/AcpiParser.c | 188 ++++++++++++++++++++ > 2 files changed, 236 insertions(+) > > diff --git a/ShellPkg/Library/UefiShellAcpiViewCommandLib/AcpiParser.h b/ShellPkg/Library/UefiShellAcpiViewCommandLib/AcpiParser.h > index 5c916a4720b8..db8c88f6dfa4 100644 > --- a/ShellPkg/Library/UefiShellAcpiViewCommandLib/AcpiParser.h > +++ b/ShellPkg/Library/UefiShellAcpiViewCommandLib/AcpiParser.h > @@ -2,6 +2,7 @@ > Header file for ACPI parser > > > > Copyright (c) 2016 - 2020, Arm Limited. All rights reserved. > > + Copyright (c) 2022, AMD Incorporated. All rights reserved. > > SPDX-License-Identifier: BSD-2-Clause-Patent > > **/ > > > > @@ -251,6 +252,11 @@ typedef VOID (EFIAPI *FNPTR_FIELD_VALIDATOR)(UINT8 *Ptr, VOID *Context); > the field data. If the field is more complex and requires additional > > processing for formatting and representation a print formatter function > > can be specified in 'PrintFormatter'. > > + > > + ParseAcpiBitFields() uses AcpiParser structure to parse the bit fields. > > + It considers Length as a number of bits that need to be parsed. > > + Also, the Offset field will be considered as starting offset of the bitfield. > > + > > The PrintFormatter function may choose to use the format string > > specified by 'Format' or use its own internal format string. > > > > @@ -264,10 +270,12 @@ typedef struct AcpiParser { > > > /// The length of the field. > > /// (Byte Length column from ACPI table spec) > > + /// Length(in bits) of the bitfield if used with ParseAcpiBitFields(). > > UINT32 Length; > > > > /// The offset of the field from the start of the table. > > /// (Byte Offset column from ACPI table spec) > > + /// The Bit offset of the field if used with ParseAcpiBitFields(). > > UINT32 Offset; > > > > /// Optional Print() style format string for tracing the data. If not > > @@ -285,6 +293,7 @@ typedef struct AcpiParser { > /// a pointer to the field data. This value is set after the FieldValidator > > /// has been called and therefore should not be used by the FieldValidator. > > /// If unused this must be set to NULL. > > + /// ItemPtr is not supported with ParseAcpiBitFields(). > > VOID **ItemPtr; > > > > /// Optional pointer to a field validator function. > > @@ -364,6 +373,45 @@ ParseAcpi ( > IN UINT32 ParserItems > > ); > > > > +/** > > + This function is used to parse an ACPI table bitfield buffer. > > + > > + The ACPI table buffer is parsed using the ACPI table parser information > > + specified by a pointer to an array of ACPI_PARSER elements. This parser > > + function iterates through each item on the ACPI_PARSER array and logs the ACPI table bitfields. > > + > > + This function can optionally be used to parse ACPI tables and fetch specific > > + field values. The ItemPtr member of the ACPI_PARSER structure (where used) > > + is updated by this parser function to point to the selected field data > > + (e.g. useful for variable length nested fields). > > + > > + ItemPtr member of ACPI_PARSER is not supported with this function. > > + > > + @param [in] Trace Trace the ACPI fields TRUE else only parse the > > + table. > > + @param [in] Indent Number of spaces to indent the output. > > + @param [in] AsciiName Optional pointer to an ASCII string that describes > > + the table being parsed. > > + @param [in] Ptr Pointer to the start of the buffer. > > + @param [in] Length Length of the buffer pointed by Ptr. > > + @param [in] Parser Pointer to an array of ACPI_PARSER structure that > > + describes the table being parsed. > > + @param [in] ParserItems Number of items in the ACPI_PARSER array. > > + > > + @retval Number of bits parsed. > > +**/ > > +UINT32 > > +EFIAPI > > +ParseAcpiBitFields ( > > + IN BOOLEAN Trace, > > + IN UINT32 Indent, > > + IN CONST CHAR8 *AsciiName OPTIONAL, > > + IN UINT8 *Ptr, > > + IN UINT32 Length, > > + IN CONST ACPI_PARSER *Parser, > > + IN UINT32 ParserItems > > + ); > > + > > /** > > This is a helper macro to pass parameters to the Parser functions. > > > > diff --git a/ShellPkg/Library/UefiShellAcpiViewCommandLib/AcpiParser.c b/ShellPkg/Library/UefiShellAcpiViewCommandLib/AcpiParser.c > index cb193a5ea449..fcc56c189d65 100644 > --- a/ShellPkg/Library/UefiShellAcpiViewCommandLib/AcpiParser.c > +++ b/ShellPkg/Library/UefiShellAcpiViewCommandLib/AcpiParser.c > @@ -2,12 +2,14 @@ > ACPI parser > > > > Copyright (c) 2016 - 2021, Arm Limited. All rights reserved. > > + Copyright (c) 2022, AMD Incorporated. All rights reserved. > > SPDX-License-Identifier: BSD-2-Clause-Patent > > **/ > > > > #include <Uefi.h> > > #include <Library/UefiLib.h> > > #include <Library/UefiBootServicesTableLib.h> > > +#include <Library/BaseMemoryLib.h> > > #include "AcpiParser.h" > > #include "AcpiView.h" > > #include "AcpiViewConfig.h" > > @@ -752,3 +754,189 @@ ParseAcpiHeader ( > > > return BytesParsed; > > } > > + > > +/** > > + This function is used to parse an ACPI table bitfield buffer. > > + > > + The ACPI table buffer is parsed using the ACPI table parser information > > + specified by a pointer to an array of ACPI_PARSER elements. This parser > > + function iterates through each item on the ACPI_PARSER array and logs the ACPI table bitfields. > > + > > + This function can optionally be used to parse ACPI tables and fetch specific > > + field values. The ItemPtr member of the ACPI_PARSER structure (where used) > > + is updated by this parser function to point to the selected field data > > + (e.g. useful for variable length nested fields). > > + > > + ItemPtr member of ACPI_PARSER is not supported with this function. > > + > > + @param [in] Trace Trace the ACPI fields TRUE else only parse the > > + table. > > + @param [in] Indent Number of spaces to indent the output. > > + @param [in] AsciiName Optional pointer to an ASCII string that describes > > + the table being parsed. > > + @param [in] Ptr Pointer to the start of the buffer. > > + @param [in] Length Length in bytes of the buffer pointed by Ptr. > > + @param [in] Parser Pointer to an array of ACPI_PARSER structure that > > + describes the table being parsed. > > + @param [in] ParserItems Number of items in the ACPI_PARSER array. > > + > > + @retval Number of bits parsed. > > +**/ > > +UINT32 > > +EFIAPI > > +ParseAcpiBitFields ( > > + IN BOOLEAN Trace, > > + IN UINT32 Indent, > > + IN CONST CHAR8 *AsciiName OPTIONAL, > > + IN UINT8 *Ptr, > > + IN UINT32 Length, > > + IN CONST ACPI_PARSER *Parser, > > + IN UINT32 ParserItems > > + ) > > +{ > > + UINT32 Index; > > + UINT32 Offset; > > + BOOLEAN HighLight; > > + UINTN OriginalAttribute; > > + > > + UINT64 Data; > > + UINT64 BitsData; > > + > > + if ((Length == 0) || (Length > 8)) { > > + IncrementErrorCount (); > > + Print ( > > + L"\nERROR: Bitfield Length(%d) is zero or exceeding the 64 bit limit.\n", > > + Length > > + ); > > + return 0; > > + } > > + > > + // > > + // set local variables to suppress incorrect compiler/analyzer warnings > > + // > > + OriginalAttribute = 0; > > + Offset = 0; > > + > > + // Increment the Indent > > + gIndent += Indent; > > + > > + CopyMem ((VOID *)&BitsData, (VOID *)Ptr, Length); > > + if (Trace && (AsciiName != NULL)) { > > + HighLight = GetColourHighlighting (); > > + > > + if (HighLight) { > > + OriginalAttribute = gST->ConOut->Mode->Attribute; > > + gST->ConOut->SetAttribute ( > > + gST->ConOut, > > + EFI_TEXT_ATTR ( > > + EFI_YELLOW, > > + ((OriginalAttribute&(BIT4|BIT5|BIT6))>>4) > > + ) > > + ); > > + } > > + > > + Print ( > > + L"%*a%-*a :\n", > > + gIndent, > > + "", > > + (OUTPUT_FIELD_COLUMN_WIDTH - gIndent), > > + AsciiName > > + ); > > + if (HighLight) { > > + gST->ConOut->SetAttribute (gST->ConOut, OriginalAttribute); > > + } > > + } > > + > > + for (Index = 0; Index < ParserItems; Index++) { > > + if ((Offset + Parser[Index].Length) > (Length * 8)) { > > + // For fields outside the buffer length provided, reset any pointers > > + // which were supposed to be updated by this function call > > + if (Parser[Index].ItemPtr != NULL) { > > + *Parser[Index].ItemPtr = NULL; > > + } > > + > > + // We don't parse past the end of the max length specified > > + continue; > > + } > > + > > + if (Parser[Index].Length == 0) { > > + IncrementErrorCount (); > > + // don't parse the bitfield whose length is zero > > + Print ( > > + L"\nERROR: %a: Cannot parse this field, Field Length = %d\n", > > + Parser[Index].Length > > + ); > > + continue; > > + } > > + > > + if (GetConsistencyChecking () && > > + (Offset != Parser[Index].Offset)) > > + { > > + IncrementErrorCount (); > > + Print ( > > + L"\nERROR: %a: Offset Mismatch for %s\n" > > + L"CurrentOffset = %d FieldOffset = %d\n", > > + AsciiName, > > + Parser[Index].NameStr, > > + Offset, > > + Parser[Index].Offset > > + ); > > + } > > + > > + // extract Bitfield data for the current item > > + Data = (BitsData >> Parser[Index].Offset) & ~(~0ULL << Parser[Index].Length); > > + > > + if (Trace) { > > + // if there is a Formatter function let the function handle > > + // the printing else if a Format is specified in the table use > > + // the Format for printing > > + PrintFieldName (2, Parser[Index].NameStr); > > + if (Parser[Index].PrintFormatter != NULL) { > > + Parser[Index].PrintFormatter (Parser[Index].Format, (UINT8 *)&Data); > > + } else if (Parser[Index].Format != NULL) { > > + // convert bit length to byte length > > + switch ((Parser[Index].Length + 7) >> 3) { > > + // print the data depends on byte size > > + case 1: > > + DumpUint8 (Parser[Index].Format, (UINT8 *)&Data); > > + break; > > + case 2: > > + DumpUint16 (Parser[Index].Format, (UINT8 *)&Data); > > + break; > > + case 3: > > + case 4: > > + DumpUint32 (Parser[Index].Format, (UINT8 *)&Data); > > + break; > > + case 5: > > + case 6: > > + case 7: > > + case 8: > > + DumpUint64 (Parser[Index].Format, (UINT8 *)&Data); > > + break; > > + default: > > + Print ( > > + L"\nERROR: %a: CANNOT PARSE THIS FIELD, Field Length = %d\n", > > + AsciiName, > > + Parser[Index].Length > > + ); > > + } // switch > > + } > > + > > + // Validating only makes sense if we are tracing > > + // the parsed table entries, to report by table name. > > + if (GetConsistencyChecking () && > > + (Parser[Index].FieldValidator != NULL)) > > + { > > + Parser[Index].FieldValidator ((UINT8 *)&Data, Parser[Index].Context); > > + } > > + > > + Print (L"\n"); > > + } // if (Trace) > > + > > + Offset += Parser[Index].Length; > > + } // for > > + > > + // Decrement the Indent > > + gIndent -= Indent; > > + return Offset; > > +} > ^ permalink raw reply [flat|nested] 8+ messages in thread
* [PATCH v5 2/2] ShellPkg/AcpiView: PrintFormatter for FADT Flags field 2022-02-16 11:13 [PATCH v5 0/2] ShellPkg/AcpiView: Adds ACPI_PARSER bitfield parser Abdul Lateef Attar 2022-02-16 11:13 ` [PATCH v5 1/2] " Abdul Lateef Attar @ 2022-02-16 11:13 ` Abdul Lateef Attar 2022-02-18 15:50 ` Sami Mujawar 2022-02-21 7:40 ` [PATCH v5 0/2] ShellPkg/AcpiView: Adds ACPI_PARSER bitfield parser Gao, Zhichao 2 siblings, 1 reply; 8+ messages in thread From: Abdul Lateef Attar @ 2022-02-16 11:13 UTC (permalink / raw) To: devel; +Cc: Ray Ni, Zhichao Gao, Sami Mujawar REF: https://bugzilla.tianocore.org/show_bug.cgi?id=3839 Adds PrintFormatter function to the FADT flags field. Prints indivisual flag name along with flag value. Cc: Ray Ni <ray.ni@intel.com> Cc: Zhichao Gao <zhichao.gao@intel.com> Cc: Sami Mujawar <sami.mujawar@arm.com> Signed-off-by: Abdul Lateef Attar <abdattar@amd.com> --- ShellPkg/Library/UefiShellAcpiViewCommandLib/Parsers/Fadt/FadtParser.c | 167 +++++++++++++------- 1 file changed, 112 insertions(+), 55 deletions(-) diff --git a/ShellPkg/Library/UefiShellAcpiViewCommandLib/Parsers/Fadt/FadtParser.c b/ShellPkg/Library/UefiShellAcpiViewCommandLib/Parsers/Fadt/FadtParser.c index f8fbb4bcb8e9..abc58d65520e 100644 --- a/ShellPkg/Library/UefiShellAcpiViewCommandLib/Parsers/Fadt/FadtParser.c +++ b/ShellPkg/Library/UefiShellAcpiViewCommandLib/Parsers/Fadt/FadtParser.c @@ -2,6 +2,7 @@ FADT table parser Copyright (c) 2016 - 2020, ARM Limited. All rights reserved. + Copyright (c) 2022, AMD Incorporated. All rights reserved. SPDX-License-Identifier: BSD-2-Clause-Patent @par Reference(s): @@ -130,69 +131,125 @@ ValidateFlags ( #endif } +STATIC CONST ACPI_PARSER FadtFlagParser[] = { + { L"WBINVD", 1, 0, L"%d", NULL, NULL, NULL, NULL }, + { L"WBINVD_FLUSH", 1, 1, L"%d", NULL, NULL, NULL, NULL }, + { L"PROC_C1", 1, 2, L"%d", NULL, NULL, NULL, NULL }, + { L"P_LVL2_UP", 1, 3, L"%d", NULL, NULL, NULL, NULL }, + { L"PWR_BUTTON", 1, 4, L"%d", NULL, NULL, NULL, NULL }, + { L"SLP_BUTTON", 1, 5, L"%d", NULL, NULL, NULL, NULL }, + { L"FIX_RTC", 1, 6, L"%d", NULL, NULL, NULL, NULL }, + { L"RTC_S4", 1, 7, L"%d", NULL, NULL, NULL, NULL }, + { L"TMR_VAL_EXT", 1, 8, L"%d", NULL, NULL, NULL, NULL }, + { L"DCK_CAP", 1, 9, L"%d", NULL, NULL, NULL, NULL }, + { L"RESET_REG_SUP", 1, 10, L"%d", NULL, NULL, NULL, NULL }, + { L"SEALED_CASE", 1, 11, L"%d", NULL, NULL, NULL, NULL }, + { L"HEADLESS", 1, 12, L"%d", NULL, NULL, NULL, NULL }, + { L"CPU_SW_SLP", 1, 13, L"%d", NULL, NULL, NULL, NULL }, + { L"PCI_EXP_WAK", 1, 14, L"%d", NULL, NULL, NULL, NULL }, + { L"USE_PLATFORM_CLOCK", 1, 15, L"%d", NULL, NULL, NULL, NULL }, + { L"S4_RTC_STS_VALID", 1, 16, L"%d", NULL, NULL, NULL, NULL }, + { L"REMOTE_POWER_ON_CAPABLE", 1, 17, L"%d", NULL, NULL, NULL, NULL }, + { L"FORCE_APIC_CLUSTER_MODEL", 1, 18, L"%d", NULL, NULL, NULL, NULL }, + { L"FORCE_APIC_PHYSICAL_DESTINATION_MODE", 1, 19, L"%d", NULL, NULL, NULL, NULL }, + { L"HW_REDUCED_ACPI", 1, 20, L"%d", NULL, NULL, NULL, NULL }, + { L"LOW_POWER_S0_IDLE_CAPABLE", 1, 21, L"%d", NULL, NULL, NULL, NULL }, + { L"Reserved", 10, 22, L"%d", NULL, NULL, NULL, NULL } +}; + +/** + This function traces FADT Flags fields. + 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 +DumpFadtFlags ( + IN CONST CHAR16 *Format OPTIONAL, + IN UINT8 *Ptr + ) +{ + if (Format != NULL) { + Print (Format, *(UINT32 *)Ptr); + return; + } + + Print (L"0x%X\n", *(UINT32 *)Ptr); + ParseAcpiBitFields ( + TRUE, + 2, + NULL, + Ptr, + 4, + PARSER_PARAMS (FadtFlagParser) + ); +} + /** An ACPI_PARSER array describing the ACPI FADT Table. **/ STATIC CONST ACPI_PARSER FadtParser[] = { PARSE_ACPI_HEADER (&AcpiHdrInfo), - { L"FIRMWARE_CTRL", 4, 36, L"0x%x", NULL, (VOID **)&FirmwareCtrl, + { L"FIRMWARE_CTRL", 4, 36, L"0x%x", NULL, (VOID **)&FirmwareCtrl, ValidateFirmwareCtrl, NULL }, - { L"DSDT", 4, 40, L"0x%x", NULL, (VOID **)&DsdtAddress, NULL, NULL }, - { L"Reserved", 1, 44, L"%x", NULL, NULL, NULL, NULL }, - { L"Preferred_PM_Profile", 1, 45, L"0x%x", NULL, NULL, NULL, NULL }, - { L"SCI_INT", 2, 46, L"0x%x", NULL, NULL, NULL, NULL }, - { L"SMI_CMD", 4, 48, L"0x%x", NULL, NULL, NULL, NULL }, - { L"ACPI_ENABLE", 1, 52, L"0x%x", NULL, NULL, NULL, NULL }, - { L"ACPI_DISABLE", 1, 53, L"0x%x", NULL, NULL, NULL, NULL }, - { L"S4BIOS_REQ", 1, 54, L"0x%x", NULL, NULL, NULL, NULL }, - { L"PSTATE_CNT", 1, 55, L"0x%x", NULL, NULL, NULL, NULL }, - { L"PM1a_EVT_BLK", 4, 56, L"0x%x", NULL, NULL, NULL, NULL }, - { L"PM1b_EVT_BLK", 4, 60, L"0x%x", NULL, NULL, NULL, NULL }, - { L"PM1a_CNT_BLK", 4, 64, L"0x%x", NULL, NULL, NULL, NULL }, - { L"PM1b_CNT_BLK", 4, 68, L"0x%x", NULL, NULL, NULL, NULL }, - { L"PM2_CNT_BLK", 4, 72, L"0x%x", NULL, NULL, NULL, NULL }, - { L"PM_TMR_BLK", 4, 76, L"0x%x", NULL, NULL, NULL, NULL }, - { L"GPE0_BLK", 4, 80, L"0x%x", NULL, NULL, NULL, NULL }, - { L"GPE1_BLK", 4, 84, L"0x%x", NULL, NULL, NULL, NULL }, - { L"PM1_EVT_LEN", 1, 88, L"0x%x", NULL, NULL, NULL, NULL }, - { L"PM1_CNT_LEN", 1, 89, L"0x%x", NULL, NULL, NULL, NULL }, - { L"PM2_CNT_LEN", 1, 90, L"0x%x", NULL, NULL, NULL, NULL }, - { L"PM_TMR_LEN", 1, 91, L"0x%x", NULL, NULL, NULL, NULL }, - { L"GPE0_BLK_LEN", 1, 92, L"0x%x", NULL, NULL, NULL, NULL }, - { L"GPE1_BLK_LEN", 1, 93, L"0x%x", NULL, NULL, NULL, NULL }, - { L"GPE1_BASE", 1, 94, L"0x%x", NULL, NULL, NULL, NULL }, - { L"CST_CNT", 1, 95, L"0x%x", NULL, NULL, NULL, NULL }, - { L"P_LVL2_LAT", 2, 96, L"0x%x", NULL, NULL, NULL, NULL }, - { L"P_LVL3_LAT", 2, 98, L"0x%x", NULL, NULL, NULL, NULL }, - { L"FLUSH_SIZE", 2, 100, L"0x%x", NULL, NULL, NULL, NULL }, - { L"FLUSH_STRIDE", 2, 102, L"0x%x", NULL, NULL, NULL, NULL }, - { L"DUTY_OFFSET", 1, 104, L"0x%x", NULL, NULL, NULL, NULL }, - { L"DUTY_WIDTH", 1, 105, L"0x%x", NULL, NULL, NULL, NULL }, - { L"DAY_ALRM", 1, 106, L"0x%x", NULL, NULL, NULL, NULL }, - { L"MON_ALRM", 1, 107, L"0x%x", NULL, NULL, NULL, NULL }, - { L"CENTURY", 1, 108, L"0x%x", NULL, NULL, NULL, NULL }, - { L"IAPC_BOOT_ARCH", 2, 109, L"0x%x", NULL, NULL, NULL, NULL }, - { L"Reserved", 1, 111, L"0x%x", NULL, NULL, NULL, NULL }, - { L"Flags", 4, 112, L"0x%x", NULL, (VOID **)&Flags, ValidateFlags, NULL }, - { L"RESET_REG", 12, 116, NULL, DumpGas, NULL, NULL, NULL }, - { L"RESET_VALUE", 1, 128, L"0x%x", NULL, NULL, NULL, NULL }, - { L"ARM_BOOT_ARCH", 2, 129, L"0x%x", NULL, NULL, NULL, NULL }, - { L"FADT Minor Version", 1, 131, L"0x%x", NULL, (VOID **)&FadtMinorRevision, + { L"DSDT", 4, 40, L"0x%x", NULL, (VOID **)&DsdtAddress, NULL, NULL }, + { L"Reserved", 1, 44, L"%x", NULL, NULL, NULL, NULL }, + { L"Preferred_PM_Profile", 1, 45, L"0x%x", NULL, NULL, NULL, NULL }, + { L"SCI_INT", 2, 46, L"0x%x", NULL, NULL, NULL, NULL }, + { L"SMI_CMD", 4, 48, L"0x%x", NULL, NULL, NULL, NULL }, + { L"ACPI_ENABLE", 1, 52, L"0x%x", NULL, NULL, NULL, NULL }, + { L"ACPI_DISABLE", 1, 53, L"0x%x", NULL, NULL, NULL, NULL }, + { L"S4BIOS_REQ", 1, 54, L"0x%x", NULL, NULL, NULL, NULL }, + { L"PSTATE_CNT", 1, 55, L"0x%x", NULL, NULL, NULL, NULL }, + { L"PM1a_EVT_BLK", 4, 56, L"0x%x", NULL, NULL, NULL, NULL }, + { L"PM1b_EVT_BLK", 4, 60, L"0x%x", NULL, NULL, NULL, NULL }, + { L"PM1a_CNT_BLK", 4, 64, L"0x%x", NULL, NULL, NULL, NULL }, + { L"PM1b_CNT_BLK", 4, 68, L"0x%x", NULL, NULL, NULL, NULL }, + { L"PM2_CNT_BLK", 4, 72, L"0x%x", NULL, NULL, NULL, NULL }, + { L"PM_TMR_BLK", 4, 76, L"0x%x", NULL, NULL, NULL, NULL }, + { L"GPE0_BLK", 4, 80, L"0x%x", NULL, NULL, NULL, NULL }, + { L"GPE1_BLK", 4, 84, L"0x%x", NULL, NULL, NULL, NULL }, + { L"PM1_EVT_LEN", 1, 88, L"0x%x", NULL, NULL, NULL, NULL }, + { L"PM1_CNT_LEN", 1, 89, L"0x%x", NULL, NULL, NULL, NULL }, + { L"PM2_CNT_LEN", 1, 90, L"0x%x", NULL, NULL, NULL, NULL }, + { L"PM_TMR_LEN", 1, 91, L"0x%x", NULL, NULL, NULL, NULL }, + { L"GPE0_BLK_LEN", 1, 92, L"0x%x", NULL, NULL, NULL, NULL }, + { L"GPE1_BLK_LEN", 1, 93, L"0x%x", NULL, NULL, NULL, NULL }, + { L"GPE1_BASE", 1, 94, L"0x%x", NULL, NULL, NULL, NULL }, + { L"CST_CNT", 1, 95, L"0x%x", NULL, NULL, NULL, NULL }, + { L"P_LVL2_LAT", 2, 96, L"0x%x", NULL, NULL, NULL, NULL }, + { L"P_LVL3_LAT", 2, 98, L"0x%x", NULL, NULL, NULL, NULL }, + { L"FLUSH_SIZE", 2, 100, L"0x%x", NULL, NULL, NULL, NULL }, + { L"FLUSH_STRIDE", 2, 102, L"0x%x", NULL, NULL, NULL, NULL }, + { L"DUTY_OFFSET", 1, 104, L"0x%x", NULL, NULL, NULL, NULL }, + { L"DUTY_WIDTH", 1, 105, L"0x%x", NULL, NULL, NULL, NULL }, + { L"DAY_ALRM", 1, 106, L"0x%x", NULL, NULL, NULL, NULL }, + { L"MON_ALRM", 1, 107, L"0x%x", NULL, NULL, NULL, NULL }, + { L"CENTURY", 1, 108, L"0x%x", NULL, NULL, NULL, NULL }, + { L"IAPC_BOOT_ARCH", 2, 109, L"0x%x", NULL, NULL, NULL, NULL }, + { L"Reserved", 1, 111, L"0x%x", NULL, NULL, NULL, NULL }, + { L"Flags", 4, 112, NULL, DumpFadtFlags, (VOID **)&Flags, ValidateFlags, NULL }, + { L"RESET_REG", 12, 116, NULL, DumpGas, NULL, NULL, NULL }, + { L"RESET_VALUE", 1, 128, L"0x%x", NULL, NULL, NULL, NULL }, + { L"ARM_BOOT_ARCH", 2, 129, L"0x%x", NULL, NULL, NULL, NULL }, + { L"FADT Minor Version", 1, 131, L"0x%x", NULL, (VOID **)&FadtMinorRevision, NULL, NULL }, - { L"X_FIRMWARE_CTRL", 8, 132, L"0x%lx", NULL, (VOID **)&X_FirmwareCtrl, + { L"X_FIRMWARE_CTRL", 8, 132, L"0x%lx", NULL, (VOID **)&X_FirmwareCtrl, ValidateXFirmwareCtrl, NULL }, - { L"X_DSDT", 8, 140, L"0x%lx", NULL, (VOID **)&X_DsdtAddress, NULL, NULL }, - { L"X_PM1a_EVT_BLK", 12, 148, NULL, DumpGas, NULL, NULL, NULL }, - { L"X_PM1b_EVT_BLK", 12, 160, NULL, DumpGas, NULL, NULL, NULL }, - { L"X_PM1a_CNT_BLK", 12, 172, NULL, DumpGas, NULL, NULL, NULL }, - { L"X_PM1b_CNT_BLK", 12, 184, NULL, DumpGas, NULL, NULL, NULL }, - { L"X_PM2_CNT_BLK", 12, 196, NULL, DumpGas, NULL, NULL, NULL }, - { L"X_PM_TMR_BLK", 12, 208, NULL, DumpGas, NULL, NULL, NULL }, - { L"X_GPE0_BLK", 12, 220, NULL, DumpGas, NULL, NULL, NULL }, - { L"X_GPE1_BLK", 12, 232, NULL, DumpGas, NULL, NULL, NULL }, - { L"SLEEP_CONTROL_REG", 12, 244, NULL, DumpGas, NULL, NULL, NULL }, - { L"SLEEP_STATUS_REG", 12, 256, NULL, DumpGas, NULL, NULL, NULL }, - { L"Hypervisor VendorIdentity", 8, 268, L"%lx", NULL, NULL, NULL, NULL } + { L"X_DSDT", 8, 140, L"0x%lx", NULL, (VOID **)&X_DsdtAddress, NULL, NULL }, + { L"X_PM1a_EVT_BLK", 12, 148, NULL, DumpGas, NULL, NULL, NULL }, + { L"X_PM1b_EVT_BLK", 12, 160, NULL, DumpGas, NULL, NULL, NULL }, + { L"X_PM1a_CNT_BLK", 12, 172, NULL, DumpGas, NULL, NULL, NULL }, + { L"X_PM1b_CNT_BLK", 12, 184, NULL, DumpGas, NULL, NULL, NULL }, + { L"X_PM2_CNT_BLK", 12, 196, NULL, DumpGas, NULL, NULL, NULL }, + { L"X_PM_TMR_BLK", 12, 208, NULL, DumpGas, NULL, NULL, NULL }, + { L"X_GPE0_BLK", 12, 220, NULL, DumpGas, NULL, NULL, NULL }, + { L"X_GPE1_BLK", 12, 232, NULL, DumpGas, NULL, NULL, NULL }, + { L"SLEEP_CONTROL_REG", 12, 244, NULL, DumpGas, NULL, NULL, NULL }, + { L"SLEEP_STATUS_REG", 12, 256, NULL, DumpGas, NULL, NULL, NULL }, + { L"Hypervisor VendorIdentity", 8, 268, L"%lx", NULL, NULL, NULL, NULL } }; /** -- 2.25.1 ^ permalink raw reply related [flat|nested] 8+ messages in thread
* Re: [PATCH v5 2/2] ShellPkg/AcpiView: PrintFormatter for FADT Flags field 2022-02-16 11:13 ` [PATCH v5 2/2] ShellPkg/AcpiView: PrintFormatter for FADT Flags field Abdul Lateef Attar @ 2022-02-18 15:50 ` Sami Mujawar 0 siblings, 0 replies; 8+ messages in thread From: Sami Mujawar @ 2022-02-18 15:50 UTC (permalink / raw) To: Abdul Lateef Attar, devel; +Cc: Ray Ni, Zhichao Gao, nd Hi Abdul, Thank you for this patch. Reviewed-by: Sami Mujawar <sami.mujawar@arm.com> Regards, Sami Mujawar On 16/02/2022 11:13 AM, Abdul Lateef Attar wrote: > REF: https://bugzilla.tianocore.org/show_bug.cgi?id=3839 > > Adds PrintFormatter function to the FADT flags field. > Prints indivisual flag name along with flag value. > > Cc: Ray Ni <ray.ni@intel.com> > Cc: Zhichao Gao <zhichao.gao@intel.com> > Cc: Sami Mujawar <sami.mujawar@arm.com> > Signed-off-by: Abdul Lateef Attar <abdattar@amd.com> > --- > ShellPkg/Library/UefiShellAcpiViewCommandLib/Parsers/Fadt/FadtParser.c | 167 +++++++++++++------- > 1 file changed, 112 insertions(+), 55 deletions(-) > > diff --git a/ShellPkg/Library/UefiShellAcpiViewCommandLib/Parsers/Fadt/FadtParser.c b/ShellPkg/Library/UefiShellAcpiViewCommandLib/Parsers/Fadt/FadtParser.c > index f8fbb4bcb8e9..abc58d65520e 100644 > --- a/ShellPkg/Library/UefiShellAcpiViewCommandLib/Parsers/Fadt/FadtParser.c > +++ b/ShellPkg/Library/UefiShellAcpiViewCommandLib/Parsers/Fadt/FadtParser.c > @@ -2,6 +2,7 @@ > FADT table parser > > > > Copyright (c) 2016 - 2020, ARM Limited. All rights reserved. > > + Copyright (c) 2022, AMD Incorporated. All rights reserved. > > SPDX-License-Identifier: BSD-2-Clause-Patent > > > > @par Reference(s): > > @@ -130,69 +131,125 @@ ValidateFlags ( > #endif > > } > > > > +STATIC CONST ACPI_PARSER FadtFlagParser[] = { > > + { L"WBINVD", 1, 0, L"%d", NULL, NULL, NULL, NULL }, > > + { L"WBINVD_FLUSH", 1, 1, L"%d", NULL, NULL, NULL, NULL }, > > + { L"PROC_C1", 1, 2, L"%d", NULL, NULL, NULL, NULL }, > > + { L"P_LVL2_UP", 1, 3, L"%d", NULL, NULL, NULL, NULL }, > > + { L"PWR_BUTTON", 1, 4, L"%d", NULL, NULL, NULL, NULL }, > > + { L"SLP_BUTTON", 1, 5, L"%d", NULL, NULL, NULL, NULL }, > > + { L"FIX_RTC", 1, 6, L"%d", NULL, NULL, NULL, NULL }, > > + { L"RTC_S4", 1, 7, L"%d", NULL, NULL, NULL, NULL }, > > + { L"TMR_VAL_EXT", 1, 8, L"%d", NULL, NULL, NULL, NULL }, > > + { L"DCK_CAP", 1, 9, L"%d", NULL, NULL, NULL, NULL }, > > + { L"RESET_REG_SUP", 1, 10, L"%d", NULL, NULL, NULL, NULL }, > > + { L"SEALED_CASE", 1, 11, L"%d", NULL, NULL, NULL, NULL }, > > + { L"HEADLESS", 1, 12, L"%d", NULL, NULL, NULL, NULL }, > > + { L"CPU_SW_SLP", 1, 13, L"%d", NULL, NULL, NULL, NULL }, > > + { L"PCI_EXP_WAK", 1, 14, L"%d", NULL, NULL, NULL, NULL }, > > + { L"USE_PLATFORM_CLOCK", 1, 15, L"%d", NULL, NULL, NULL, NULL }, > > + { L"S4_RTC_STS_VALID", 1, 16, L"%d", NULL, NULL, NULL, NULL }, > > + { L"REMOTE_POWER_ON_CAPABLE", 1, 17, L"%d", NULL, NULL, NULL, NULL }, > > + { L"FORCE_APIC_CLUSTER_MODEL", 1, 18, L"%d", NULL, NULL, NULL, NULL }, > > + { L"FORCE_APIC_PHYSICAL_DESTINATION_MODE", 1, 19, L"%d", NULL, NULL, NULL, NULL }, > > + { L"HW_REDUCED_ACPI", 1, 20, L"%d", NULL, NULL, NULL, NULL }, > > + { L"LOW_POWER_S0_IDLE_CAPABLE", 1, 21, L"%d", NULL, NULL, NULL, NULL }, > > + { L"Reserved", 10, 22, L"%d", NULL, NULL, NULL, NULL } > > +}; > > + > > +/** > > + This function traces FADT Flags fields. > > + 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 > > +DumpFadtFlags ( > > + IN CONST CHAR16 *Format OPTIONAL, > > + IN UINT8 *Ptr > > + ) > > +{ > > + if (Format != NULL) { > > + Print (Format, *(UINT32 *)Ptr); > > + return; > > + } > > + > > + Print (L"0x%X\n", *(UINT32 *)Ptr); > > + ParseAcpiBitFields ( > > + TRUE, > > + 2, > > + NULL, > > + Ptr, > > + 4, > > + PARSER_PARAMS (FadtFlagParser) > > + ); > > +} > > + > > /** > > An ACPI_PARSER array describing the ACPI FADT Table. > > **/ > > STATIC CONST ACPI_PARSER FadtParser[] = { > > PARSE_ACPI_HEADER (&AcpiHdrInfo), > > - { L"FIRMWARE_CTRL", 4, 36, L"0x%x", NULL, (VOID **)&FirmwareCtrl, > > + { L"FIRMWARE_CTRL", 4, 36, L"0x%x", NULL, (VOID **)&FirmwareCtrl, > > ValidateFirmwareCtrl, NULL }, > > - { L"DSDT", 4, 40, L"0x%x", NULL, (VOID **)&DsdtAddress, NULL, NULL }, > > - { L"Reserved", 1, 44, L"%x", NULL, NULL, NULL, NULL }, > > - { L"Preferred_PM_Profile", 1, 45, L"0x%x", NULL, NULL, NULL, NULL }, > > - { L"SCI_INT", 2, 46, L"0x%x", NULL, NULL, NULL, NULL }, > > - { L"SMI_CMD", 4, 48, L"0x%x", NULL, NULL, NULL, NULL }, > > - { L"ACPI_ENABLE", 1, 52, L"0x%x", NULL, NULL, NULL, NULL }, > > - { L"ACPI_DISABLE", 1, 53, L"0x%x", NULL, NULL, NULL, NULL }, > > - { L"S4BIOS_REQ", 1, 54, L"0x%x", NULL, NULL, NULL, NULL }, > > - { L"PSTATE_CNT", 1, 55, L"0x%x", NULL, NULL, NULL, NULL }, > > - { L"PM1a_EVT_BLK", 4, 56, L"0x%x", NULL, NULL, NULL, NULL }, > > - { L"PM1b_EVT_BLK", 4, 60, L"0x%x", NULL, NULL, NULL, NULL }, > > - { L"PM1a_CNT_BLK", 4, 64, L"0x%x", NULL, NULL, NULL, NULL }, > > - { L"PM1b_CNT_BLK", 4, 68, L"0x%x", NULL, NULL, NULL, NULL }, > > - { L"PM2_CNT_BLK", 4, 72, L"0x%x", NULL, NULL, NULL, NULL }, > > - { L"PM_TMR_BLK", 4, 76, L"0x%x", NULL, NULL, NULL, NULL }, > > - { L"GPE0_BLK", 4, 80, L"0x%x", NULL, NULL, NULL, NULL }, > > - { L"GPE1_BLK", 4, 84, L"0x%x", NULL, NULL, NULL, NULL }, > > - { L"PM1_EVT_LEN", 1, 88, L"0x%x", NULL, NULL, NULL, NULL }, > > - { L"PM1_CNT_LEN", 1, 89, L"0x%x", NULL, NULL, NULL, NULL }, > > - { L"PM2_CNT_LEN", 1, 90, L"0x%x", NULL, NULL, NULL, NULL }, > > - { L"PM_TMR_LEN", 1, 91, L"0x%x", NULL, NULL, NULL, NULL }, > > - { L"GPE0_BLK_LEN", 1, 92, L"0x%x", NULL, NULL, NULL, NULL }, > > - { L"GPE1_BLK_LEN", 1, 93, L"0x%x", NULL, NULL, NULL, NULL }, > > - { L"GPE1_BASE", 1, 94, L"0x%x", NULL, NULL, NULL, NULL }, > > - { L"CST_CNT", 1, 95, L"0x%x", NULL, NULL, NULL, NULL }, > > - { L"P_LVL2_LAT", 2, 96, L"0x%x", NULL, NULL, NULL, NULL }, > > - { L"P_LVL3_LAT", 2, 98, L"0x%x", NULL, NULL, NULL, NULL }, > > - { L"FLUSH_SIZE", 2, 100, L"0x%x", NULL, NULL, NULL, NULL }, > > - { L"FLUSH_STRIDE", 2, 102, L"0x%x", NULL, NULL, NULL, NULL }, > > - { L"DUTY_OFFSET", 1, 104, L"0x%x", NULL, NULL, NULL, NULL }, > > - { L"DUTY_WIDTH", 1, 105, L"0x%x", NULL, NULL, NULL, NULL }, > > - { L"DAY_ALRM", 1, 106, L"0x%x", NULL, NULL, NULL, NULL }, > > - { L"MON_ALRM", 1, 107, L"0x%x", NULL, NULL, NULL, NULL }, > > - { L"CENTURY", 1, 108, L"0x%x", NULL, NULL, NULL, NULL }, > > - { L"IAPC_BOOT_ARCH", 2, 109, L"0x%x", NULL, NULL, NULL, NULL }, > > - { L"Reserved", 1, 111, L"0x%x", NULL, NULL, NULL, NULL }, > > - { L"Flags", 4, 112, L"0x%x", NULL, (VOID **)&Flags, ValidateFlags, NULL }, > > - { L"RESET_REG", 12, 116, NULL, DumpGas, NULL, NULL, NULL }, > > - { L"RESET_VALUE", 1, 128, L"0x%x", NULL, NULL, NULL, NULL }, > > - { L"ARM_BOOT_ARCH", 2, 129, L"0x%x", NULL, NULL, NULL, NULL }, > > - { L"FADT Minor Version", 1, 131, L"0x%x", NULL, (VOID **)&FadtMinorRevision, > > + { L"DSDT", 4, 40, L"0x%x", NULL, (VOID **)&DsdtAddress, NULL, NULL }, > > + { L"Reserved", 1, 44, L"%x", NULL, NULL, NULL, NULL }, > > + { L"Preferred_PM_Profile", 1, 45, L"0x%x", NULL, NULL, NULL, NULL }, > > + { L"SCI_INT", 2, 46, L"0x%x", NULL, NULL, NULL, NULL }, > > + { L"SMI_CMD", 4, 48, L"0x%x", NULL, NULL, NULL, NULL }, > > + { L"ACPI_ENABLE", 1, 52, L"0x%x", NULL, NULL, NULL, NULL }, > > + { L"ACPI_DISABLE", 1, 53, L"0x%x", NULL, NULL, NULL, NULL }, > > + { L"S4BIOS_REQ", 1, 54, L"0x%x", NULL, NULL, NULL, NULL }, > > + { L"PSTATE_CNT", 1, 55, L"0x%x", NULL, NULL, NULL, NULL }, > > + { L"PM1a_EVT_BLK", 4, 56, L"0x%x", NULL, NULL, NULL, NULL }, > > + { L"PM1b_EVT_BLK", 4, 60, L"0x%x", NULL, NULL, NULL, NULL }, > > + { L"PM1a_CNT_BLK", 4, 64, L"0x%x", NULL, NULL, NULL, NULL }, > > + { L"PM1b_CNT_BLK", 4, 68, L"0x%x", NULL, NULL, NULL, NULL }, > > + { L"PM2_CNT_BLK", 4, 72, L"0x%x", NULL, NULL, NULL, NULL }, > > + { L"PM_TMR_BLK", 4, 76, L"0x%x", NULL, NULL, NULL, NULL }, > > + { L"GPE0_BLK", 4, 80, L"0x%x", NULL, NULL, NULL, NULL }, > > + { L"GPE1_BLK", 4, 84, L"0x%x", NULL, NULL, NULL, NULL }, > > + { L"PM1_EVT_LEN", 1, 88, L"0x%x", NULL, NULL, NULL, NULL }, > > + { L"PM1_CNT_LEN", 1, 89, L"0x%x", NULL, NULL, NULL, NULL }, > > + { L"PM2_CNT_LEN", 1, 90, L"0x%x", NULL, NULL, NULL, NULL }, > > + { L"PM_TMR_LEN", 1, 91, L"0x%x", NULL, NULL, NULL, NULL }, > > + { L"GPE0_BLK_LEN", 1, 92, L"0x%x", NULL, NULL, NULL, NULL }, > > + { L"GPE1_BLK_LEN", 1, 93, L"0x%x", NULL, NULL, NULL, NULL }, > > + { L"GPE1_BASE", 1, 94, L"0x%x", NULL, NULL, NULL, NULL }, > > + { L"CST_CNT", 1, 95, L"0x%x", NULL, NULL, NULL, NULL }, > > + { L"P_LVL2_LAT", 2, 96, L"0x%x", NULL, NULL, NULL, NULL }, > > + { L"P_LVL3_LAT", 2, 98, L"0x%x", NULL, NULL, NULL, NULL }, > > + { L"FLUSH_SIZE", 2, 100, L"0x%x", NULL, NULL, NULL, NULL }, > > + { L"FLUSH_STRIDE", 2, 102, L"0x%x", NULL, NULL, NULL, NULL }, > > + { L"DUTY_OFFSET", 1, 104, L"0x%x", NULL, NULL, NULL, NULL }, > > + { L"DUTY_WIDTH", 1, 105, L"0x%x", NULL, NULL, NULL, NULL }, > > + { L"DAY_ALRM", 1, 106, L"0x%x", NULL, NULL, NULL, NULL }, > > + { L"MON_ALRM", 1, 107, L"0x%x", NULL, NULL, NULL, NULL }, > > + { L"CENTURY", 1, 108, L"0x%x", NULL, NULL, NULL, NULL }, > > + { L"IAPC_BOOT_ARCH", 2, 109, L"0x%x", NULL, NULL, NULL, NULL }, > > + { L"Reserved", 1, 111, L"0x%x", NULL, NULL, NULL, NULL }, > > + { L"Flags", 4, 112, NULL, DumpFadtFlags, (VOID **)&Flags, ValidateFlags, NULL }, > > + { L"RESET_REG", 12, 116, NULL, DumpGas, NULL, NULL, NULL }, > > + { L"RESET_VALUE", 1, 128, L"0x%x", NULL, NULL, NULL, NULL }, > > + { L"ARM_BOOT_ARCH", 2, 129, L"0x%x", NULL, NULL, NULL, NULL }, > > + { L"FADT Minor Version", 1, 131, L"0x%x", NULL, (VOID **)&FadtMinorRevision, > > NULL, NULL }, > > - { L"X_FIRMWARE_CTRL", 8, 132, L"0x%lx", NULL, (VOID **)&X_FirmwareCtrl, > > + { L"X_FIRMWARE_CTRL", 8, 132, L"0x%lx", NULL, (VOID **)&X_FirmwareCtrl, > > ValidateXFirmwareCtrl, NULL }, > > - { L"X_DSDT", 8, 140, L"0x%lx", NULL, (VOID **)&X_DsdtAddress, NULL, NULL }, > > - { L"X_PM1a_EVT_BLK", 12, 148, NULL, DumpGas, NULL, NULL, NULL }, > > - { L"X_PM1b_EVT_BLK", 12, 160, NULL, DumpGas, NULL, NULL, NULL }, > > - { L"X_PM1a_CNT_BLK", 12, 172, NULL, DumpGas, NULL, NULL, NULL }, > > - { L"X_PM1b_CNT_BLK", 12, 184, NULL, DumpGas, NULL, NULL, NULL }, > > - { L"X_PM2_CNT_BLK", 12, 196, NULL, DumpGas, NULL, NULL, NULL }, > > - { L"X_PM_TMR_BLK", 12, 208, NULL, DumpGas, NULL, NULL, NULL }, > > - { L"X_GPE0_BLK", 12, 220, NULL, DumpGas, NULL, NULL, NULL }, > > - { L"X_GPE1_BLK", 12, 232, NULL, DumpGas, NULL, NULL, NULL }, > > - { L"SLEEP_CONTROL_REG", 12, 244, NULL, DumpGas, NULL, NULL, NULL }, > > - { L"SLEEP_STATUS_REG", 12, 256, NULL, DumpGas, NULL, NULL, NULL }, > > - { L"Hypervisor VendorIdentity", 8, 268, L"%lx", NULL, NULL, NULL, NULL } > > + { L"X_DSDT", 8, 140, L"0x%lx", NULL, (VOID **)&X_DsdtAddress, NULL, NULL }, > > + { L"X_PM1a_EVT_BLK", 12, 148, NULL, DumpGas, NULL, NULL, NULL }, > > + { L"X_PM1b_EVT_BLK", 12, 160, NULL, DumpGas, NULL, NULL, NULL }, > > + { L"X_PM1a_CNT_BLK", 12, 172, NULL, DumpGas, NULL, NULL, NULL }, > > + { L"X_PM1b_CNT_BLK", 12, 184, NULL, DumpGas, NULL, NULL, NULL }, > > + { L"X_PM2_CNT_BLK", 12, 196, NULL, DumpGas, NULL, NULL, NULL }, > > + { L"X_PM_TMR_BLK", 12, 208, NULL, DumpGas, NULL, NULL, NULL }, > > + { L"X_GPE0_BLK", 12, 220, NULL, DumpGas, NULL, NULL, NULL }, > > + { L"X_GPE1_BLK", 12, 232, NULL, DumpGas, NULL, NULL, NULL }, > > + { L"SLEEP_CONTROL_REG", 12, 244, NULL, DumpGas, NULL, NULL, NULL }, > > + { L"SLEEP_STATUS_REG", 12, 256, NULL, DumpGas, NULL, NULL, NULL }, > > + { L"Hypervisor VendorIdentity", 8, 268, L"%lx", NULL, NULL, NULL, NULL } > > }; > > > > /** > ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH v5 0/2] ShellPkg/AcpiView: Adds ACPI_PARSER bitfield parser 2022-02-16 11:13 [PATCH v5 0/2] ShellPkg/AcpiView: Adds ACPI_PARSER bitfield parser Abdul Lateef Attar 2022-02-16 11:13 ` [PATCH v5 1/2] " Abdul Lateef Attar 2022-02-16 11:13 ` [PATCH v5 2/2] ShellPkg/AcpiView: PrintFormatter for FADT Flags field Abdul Lateef Attar @ 2022-02-21 7:40 ` Gao, Zhichao 2022-03-17 7:10 ` Attar, AbdulLateef (Abdul Lateef) 2 siblings, 1 reply; 8+ messages in thread From: Gao, Zhichao @ 2022-02-21 7:40 UTC (permalink / raw) To: Abdul Lateef Attar, devel@edk2.groups.io; +Cc: Ni, Ray, Sami Mujawar Patchset Reviewed-by: Zhichao Gao <zhichao.gao@intel.com> Thanks, Zhichao > -----Original Message----- > From: Abdul Lateef Attar <abdattar@amd.com> > Sent: Wednesday, February 16, 2022 7:14 PM > To: devel@edk2.groups.io > Cc: Ni, Ray <ray.ni@intel.com>; Gao, Zhichao <zhichao.gao@intel.com>; Sami > Mujawar <sami.mujawar@arm.com> > Subject: [PATCH v5 0/2] ShellPkg/AcpiView: Adds ACPI_PARSER bitfield > parser > > Hi, > Sorry for the delayed reply. > I had updated the patch according to the review comments. > Please review the updated patch. > > REF: https://github.com/abdattar/edk2/tree/FadtFlagsParserV5 > > > Cc: Ray Ni <ray.ni@intel.com> > Cc: Zhichao Gao <zhichao.gao@intel.com> > Cc: Sami Mujawar <sami.mujawar@arm.com> > > Abdul Lateef Attar (2): > ShellPkg/AcpiView: Adds ACPI_PARSER bitfield parser > ShellPkg/AcpiView: PrintFormatter for FADT Flags field > > ShellPkg/Library/UefiShellAcpiViewCommandLib/AcpiParser.h | 48 > +++++ > ShellPkg/Library/UefiShellAcpiViewCommandLib/AcpiParser.c | 188 > ++++++++++++++++++++ > ShellPkg/Library/UefiShellAcpiViewCommandLib/Parsers/Fadt/FadtParser.c > | 167 +++++++++++------ > 3 files changed, 348 insertions(+), 55 deletions(-) > > -- > 2.25.1 ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH v5 0/2] ShellPkg/AcpiView: Adds ACPI_PARSER bitfield parser 2022-02-21 7:40 ` [PATCH v5 0/2] ShellPkg/AcpiView: Adds ACPI_PARSER bitfield parser Gao, Zhichao @ 2022-03-17 7:10 ` Attar, AbdulLateef (Abdul Lateef) 2022-03-18 2:04 ` Gao, Zhichao 0 siblings, 1 reply; 8+ messages in thread From: Attar, AbdulLateef (Abdul Lateef) @ 2022-03-17 7:10 UTC (permalink / raw) To: Gao, Zhichao, devel@edk2.groups.io; +Cc: Ni, Ray, Sami Mujawar Gentle reminder for PR. -----Original Message----- From: Gao, Zhichao <zhichao.gao@intel.com> Sent: Monday, February 21, 2022 1:10 PM To: Attar, AbdulLateef (Abdul Lateef) <AbdulLateef.Attar@amd.com>; devel@edk2.groups.io Cc: Ni, Ray <ray.ni@intel.com>; Sami Mujawar <sami.mujawar@arm.com> Subject: RE: [PATCH v5 0/2] ShellPkg/AcpiView: Adds ACPI_PARSER bitfield parser [CAUTION: External Email] Patchset Reviewed-by: Zhichao Gao <zhichao.gao@intel.com> Thanks, Zhichao > -----Original Message----- > From: Abdul Lateef Attar <abdattar@amd.com> > Sent: Wednesday, February 16, 2022 7:14 PM > To: devel@edk2.groups.io > Cc: Ni, Ray <ray.ni@intel.com>; Gao, Zhichao <zhichao.gao@intel.com>; > Sami Mujawar <sami.mujawar@arm.com> > Subject: [PATCH v5 0/2] ShellPkg/AcpiView: Adds ACPI_PARSER bitfield > parser > > Hi, > Sorry for the delayed reply. > I had updated the patch according to the review comments. > Please review the updated patch. > > REF: > https://nam11.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgith > ub.com%2Fabdattar%2Fedk2%2Ftree%2FFadtFlagsParserV5&data=04%7C01%7 > CAbdulLateef.Attar%40amd.com%7Cdbcced5d461947c4c52908d9f50d60e9%7C3dd8 > 961fe4884e608e11a82d994e183d%7C0%7C0%7C637810260090713957%7CUnknown%7C > TWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVC > I6Mn0%3D%7C3000&sdata=lqrY9GyWZTJl%2BsRa%2F223ft8ei5rKBbm36av4SQh4 > l9g%3D&reserved=0 > > > Cc: Ray Ni <ray.ni@intel.com> > Cc: Zhichao Gao <zhichao.gao@intel.com> > Cc: Sami Mujawar <sami.mujawar@arm.com> > > Abdul Lateef Attar (2): > ShellPkg/AcpiView: Adds ACPI_PARSER bitfield parser > ShellPkg/AcpiView: PrintFormatter for FADT Flags field > > ShellPkg/Library/UefiShellAcpiViewCommandLib/AcpiParser.h | 48 > +++++ > ShellPkg/Library/UefiShellAcpiViewCommandLib/AcpiParser.c | 188 > ++++++++++++++++++++ > > ShellPkg/Library/UefiShellAcpiViewCommandLib/Parsers/Fadt/FadtParser.c > | 167 +++++++++++------ > 3 files changed, 348 insertions(+), 55 deletions(-) > > -- > 2.25.1 ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH v5 0/2] ShellPkg/AcpiView: Adds ACPI_PARSER bitfield parser 2022-03-17 7:10 ` Attar, AbdulLateef (Abdul Lateef) @ 2022-03-18 2:04 ` Gao, Zhichao 0 siblings, 0 replies; 8+ messages in thread From: Gao, Zhichao @ 2022-03-18 2:04 UTC (permalink / raw) To: Attar, AbdulLateef (Abdul Lateef), devel@edk2.groups.io Cc: Ni, Ray, Sami Mujawar Sorry. I forgot to update. I have create the PR twice but the open-CI failed. Can you check? https://github.com/tianocore/edk2/pull/2568 Thanks, Zhichao > -----Original Message----- > From: Attar, AbdulLateef (Abdul Lateef) <AbdulLateef.Attar@amd.com> > Sent: Thursday, March 17, 2022 3:10 PM > To: Gao, Zhichao <zhichao.gao@intel.com>; devel@edk2.groups.io > Cc: Ni, Ray <ray.ni@intel.com>; Sami Mujawar <sami.mujawar@arm.com> > Subject: RE: [PATCH v5 0/2] ShellPkg/AcpiView: Adds ACPI_PARSER bitfield > parser > > Gentle reminder for PR. > > -----Original Message----- > From: Gao, Zhichao <zhichao.gao@intel.com> > Sent: Monday, February 21, 2022 1:10 PM > To: Attar, AbdulLateef (Abdul Lateef) <AbdulLateef.Attar@amd.com>; > devel@edk2.groups.io > Cc: Ni, Ray <ray.ni@intel.com>; Sami Mujawar <sami.mujawar@arm.com> > Subject: RE: [PATCH v5 0/2] ShellPkg/AcpiView: Adds ACPI_PARSER bitfield > parser > > [CAUTION: External Email] > > Patchset Reviewed-by: Zhichao Gao <zhichao.gao@intel.com> > > Thanks, > Zhichao > > > -----Original Message----- > > From: Abdul Lateef Attar <abdattar@amd.com> > > Sent: Wednesday, February 16, 2022 7:14 PM > > To: devel@edk2.groups.io > > Cc: Ni, Ray <ray.ni@intel.com>; Gao, Zhichao <zhichao.gao@intel.com>; > > Sami Mujawar <sami.mujawar@arm.com> > > Subject: [PATCH v5 0/2] ShellPkg/AcpiView: Adds ACPI_PARSER bitfield > > parser > > > > Hi, > > Sorry for the delayed reply. > > I had updated the patch according to the review comments. > > Please review the updated patch. > > > > REF: > > https://nam11.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgith > > > ub.com%2Fabdattar%2Fedk2%2Ftree%2FFadtFlagsParserV5&data=04%7C0 > 1%7 > > > CAbdulLateef.Attar%40amd.com%7Cdbcced5d461947c4c52908d9f50d60e9%7C > 3dd8 > > > 961fe4884e608e11a82d994e183d%7C0%7C0%7C637810260090713957%7CUnk > nown%7C > > > TWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJX > VC > > > I6Mn0%3D%7C3000&sdata=lqrY9GyWZTJl%2BsRa%2F223ft8ei5rKBbm36av > 4SQh4 > > l9g%3D&reserved=0 > > > > > > Cc: Ray Ni <ray.ni@intel.com> > > Cc: Zhichao Gao <zhichao.gao@intel.com> > > Cc: Sami Mujawar <sami.mujawar@arm.com> > > > > Abdul Lateef Attar (2): > > ShellPkg/AcpiView: Adds ACPI_PARSER bitfield parser > > ShellPkg/AcpiView: PrintFormatter for FADT Flags field > > > > ShellPkg/Library/UefiShellAcpiViewCommandLib/AcpiParser.h | 48 > > +++++ > > ShellPkg/Library/UefiShellAcpiViewCommandLib/AcpiParser.c | 188 > > ++++++++++++++++++++ > > > > ShellPkg/Library/UefiShellAcpiViewCommandLib/Parsers/Fadt/FadtParser.c > > | 167 +++++++++++------ > > 3 files changed, 348 insertions(+), 55 deletions(-) > > > > -- > > 2.25.1 ^ permalink raw reply [flat|nested] 8+ messages in thread
end of thread, other threads:[~2022-03-18 2:06 UTC | newest] Thread overview: 8+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2022-02-16 11:13 [PATCH v5 0/2] ShellPkg/AcpiView: Adds ACPI_PARSER bitfield parser Abdul Lateef Attar 2022-02-16 11:13 ` [PATCH v5 1/2] " Abdul Lateef Attar 2022-02-18 15:49 ` Sami Mujawar 2022-02-16 11:13 ` [PATCH v5 2/2] ShellPkg/AcpiView: PrintFormatter for FADT Flags field Abdul Lateef Attar 2022-02-18 15:50 ` Sami Mujawar 2022-02-21 7:40 ` [PATCH v5 0/2] ShellPkg/AcpiView: Adds ACPI_PARSER bitfield parser Gao, Zhichao 2022-03-17 7:10 ` Attar, AbdulLateef (Abdul Lateef) 2022-03-18 2:04 ` Gao, Zhichao
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox