public inbox for devel@edk2.groups.io
 help / color / mirror / Atom feed
* [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

* [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 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

* 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&amp;data=04%7C01%7
> CAbdulLateef.Attar%40amd.com%7Cdbcced5d461947c4c52908d9f50d60e9%7C3dd8
> 961fe4884e608e11a82d994e183d%7C0%7C0%7C637810260090713957%7CUnknown%7C
> TWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVC
> I6Mn0%3D%7C3000&amp;sdata=lqrY9GyWZTJl%2BsRa%2F223ft8ei5rKBbm36av4SQh4
> l9g%3D&amp;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&amp;data=04%7C0
> 1%7
> >
> CAbdulLateef.Attar%40amd.com%7Cdbcced5d461947c4c52908d9f50d60e9%7C
> 3dd8
> >
> 961fe4884e608e11a82d994e183d%7C0%7C0%7C637810260090713957%7CUnk
> nown%7C
> >
> TWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJX
> VC
> >
> I6Mn0%3D%7C3000&amp;sdata=lqrY9GyWZTJl%2BsRa%2F223ft8ei5rKBbm36av
> 4SQh4
> > l9g%3D&amp;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