* [PATCH 1/2] MdePkg/IndustryStandard: add definitions for ACPI APMT @ 2022-10-27 14:40 Jeff Brasen 2022-10-27 14:40 ` [PATCH 2/2] ShellPkg/AcpiView: APMT Parser Jeff Brasen 2022-11-01 11:41 ` [edk2-devel] [PATCH 1/2] MdePkg/IndustryStandard: add definitions for ACPI APMT Sami Mujawar 0 siblings, 2 replies; 6+ messages in thread From: Jeff Brasen @ 2022-10-27 14:40 UTC (permalink / raw) To: devel Cc: michael.d.kinney, gaoliming, zhiguang.liu, zhichao.gao, ray.ni, Jeff Brasen This adds #defines and struct typedefs for the various node types in the ACPI Arm Performance Monitoring Unit (APMT) table. Signed-off-by: Jeff Brasen <jbrasen@nvidia.com> --- MdePkg/Include/IndustryStandard/Acpi64.h | 5 ++ .../ArmPerformanceMonitoringUnitTable.h | 69 +++++++++++++++++++ 2 files changed, 74 insertions(+) create mode 100644 MdePkg/Include/IndustryStandard/ArmPerformanceMonitoringUnitTable.h diff --git a/MdePkg/Include/IndustryStandard/Acpi64.h b/MdePkg/Include/IndustryStandard/Acpi64.h index fe5ebfac2b..575ca0430c 100644 --- a/MdePkg/Include/IndustryStandard/Acpi64.h +++ b/MdePkg/Include/IndustryStandard/Acpi64.h @@ -2847,6 +2847,11 @@ typedef struct { /// #define EFI_ACPI_6_4_MULTIPLE_APIC_DESCRIPTION_TABLE_SIGNATURE SIGNATURE_32('A', 'P', 'I', 'C') +/// +/// "APMT" Arm Performance Monitoring Unit Table +/// +#define EFI_ACPI_6_4_ARM_PERFORMANCE_MONITORING_UNIT_TABLE_SIGNATURE SIGNATURE_32('A', 'P', 'M', 'T') + /// /// "BERT" Boot Error Record Table /// diff --git a/MdePkg/Include/IndustryStandard/ArmPerformanceMonitoringUnitTable.h b/MdePkg/Include/IndustryStandard/ArmPerformanceMonitoringUnitTable.h new file mode 100644 index 0000000000..fe7084cffd --- /dev/null +++ b/MdePkg/Include/IndustryStandard/ArmPerformanceMonitoringUnitTable.h @@ -0,0 +1,69 @@ +/** @file + ACPI Arm Performance Monitoring Unit (APMT) table + as specified in ARM spec DEN0117 + + Copyright (c) 2022, NVIDIA CORPORATION. All rights reserved. + Copyright (c) 2022, ARM Limited. All rights reserved. + SPDX-License-Identifier: BSD-2-Clause-Patent +**/ + +#ifndef ARM_PERFORMANCE_MONITORING_UNIT_TABLE_H_ +#define ARM_PERFORMANCE_MONITORING_UNIT_TABLE_H_ + +#include <IndustryStandard/Acpi.h> + +#pragma pack(1) + +/// +/// Arm Performance Monitoring Unit (APMT) tabl +/// +typedef struct { + EFI_ACPI_DESCRIPTION_HEADER Header; +} EFI_ACPI_ARM_PERFORMANCE_MONITORING_UNIT_TABLE_HEADER; + +/// +/// APMT Revision (as defined in DEN0117.) +/// +#define EFI_ACPI_ARM_PERFORMANCE_MONITORING_UNIT_TABLE_REVISION 0x00 + +/// +/// Arm PMU Node Structure +/// + +// Node Flags +#define EFI_ACPI_APMT_DUAL_PAGE_EXTENSION_SUPPORTED BIT0 +#define EFI_ACPI_APMT_PROCESSOR_AFFINITY_TYPE_CONTAINER BIT1 +#define EFI_ACPI_APMT_PROCESSOR_AFFINITY_TYPE_PROCESSOR 0 // BIT 1 +#define EFI_ACPI_APMT_64BIT_SINGLE_COPY_ATOMICITY_SUPPORTED BIT2 + +// Interrupt Flags +#define EFI_ACPI_APMT_INTERRUPT_MODE_EDGE_TRIGGERED BIT0 +#define EFI_ACPI_APMT_INTERRUPT_MODE_LEVEL_TRIGGERED 0 // BIT 0 +#define EFI_ACPI_APMT_INTERRUPT_TYPE_WIRED 0 // BIT 1 + +// Node Type +#define EFI_ACPI_APMT_NODE_TYPE_MEMORY_CONTROLLER 0x00 +#define EFI_ACPI_APMT_NODE_TYPE_SMMU 0x01 +#define EFI_ACPI_APMT_NODE_TYPE_PCIE_ROOT_COMPLEX 0x02 +#define EFI_ACPI_APMT_NODE_TYPE_ACPI_DEVICE 0x03 +#define EFI_ACPI_APMT_NODE_TYPE_CPU_CACHE 0x04 + +typedef struct { + UINT16 Length; + UINT8 NodeFlags; + UINT8 NodeType; + UINT32 Identifier; + UINT64 NodeInstancePrimary; + UINT32 NodeInstanceSecondary; + UINT64 BaseAddress0; + UINT64 BaseAddress1; + UINT32 OverflowInterrupt; + UINT32 Reserved1; + UINT32 OverflowInterruptFlags; + UINT32 ProcessorAffinity; + UINT32 ImplementationId; +} EFI_ACPI_ARM_PERFORMANCE_MONITORING_UNIT_NODE; + +#pragma pack() + +#endif -- 2.25.1 ^ permalink raw reply related [flat|nested] 6+ messages in thread
* [PATCH 2/2] ShellPkg/AcpiView: APMT Parser 2022-10-27 14:40 [PATCH 1/2] MdePkg/IndustryStandard: add definitions for ACPI APMT Jeff Brasen @ 2022-10-27 14:40 ` Jeff Brasen 2022-11-01 11:41 ` [edk2-devel] " Sami Mujawar 2022-11-01 11:41 ` [edk2-devel] [PATCH 1/2] MdePkg/IndustryStandard: add definitions for ACPI APMT Sami Mujawar 1 sibling, 1 reply; 6+ messages in thread From: Jeff Brasen @ 2022-10-27 14:40 UTC (permalink / raw) To: devel Cc: michael.d.kinney, gaoliming, zhiguang.liu, zhichao.gao, ray.ni, Jeff Brasen Add a new parser for the Arm Performance Monitoring Unit Table. The APMT table describes the properties of PMU support implemented by components in an Arm-based system. Signed-off-by: Jeff Brasen <jbrasen@nvidia.com> --- .../UefiShellAcpiViewCommandLib/AcpiParser.h | 21 ++++ .../Parsers/Apmt/ApmtParser.c | 105 ++++++++++++++++++ .../UefiShellAcpiViewCommandLib.c | 1 + .../UefiShellAcpiViewCommandLib.inf | 1 + 4 files changed, 128 insertions(+) create mode 100644 ShellPkg/Library/UefiShellAcpiViewCommandLib/Parsers/Apmt/ApmtParser.c diff --git a/ShellPkg/Library/UefiShellAcpiViewCommandLib/AcpiParser.h b/ShellPkg/Library/UefiShellAcpiViewCommandLib/AcpiParser.h index db8c88f6df..6a1de4e12b 100644 --- a/ShellPkg/Library/UefiShellAcpiViewCommandLib/AcpiParser.h +++ b/ShellPkg/Library/UefiShellAcpiViewCommandLib/AcpiParser.h @@ -531,6 +531,27 @@ ParseAcpiAest ( IN UINT8 AcpiTableRevision ); +/** + This function parses the ACPI APMT table. + When trace is enabled this function parses the APMT table and + traces the ACPI table fields. + + This function also performs validation of the ACPI table fields. + + @param [in] Trace If TRUE, trace the ACPI fields. + @param [in] Ptr Pointer to the start of the buffer. + @param [in] AcpiTableLength Length of the ACPI table. + @param [in] AcpiTableRevision Revision of the ACPI table. +**/ +VOID +EFIAPI +ParseAcpiApmt ( + IN BOOLEAN Trace, + IN UINT8 *Ptr, + IN UINT32 AcpiTableLength, + IN UINT8 AcpiTableRevision + ); + /** This function parses the ACPI BGRT table. When trace is enabled this function parses the BGRT table and diff --git a/ShellPkg/Library/UefiShellAcpiViewCommandLib/Parsers/Apmt/ApmtParser.c b/ShellPkg/Library/UefiShellAcpiViewCommandLib/Parsers/Apmt/ApmtParser.c new file mode 100644 index 0000000000..b036cd12d3 --- /dev/null +++ b/ShellPkg/Library/UefiShellAcpiViewCommandLib/Parsers/Apmt/ApmtParser.c @@ -0,0 +1,105 @@ +/** @file + APMT table parser + + Copyright (c) 2022, NVIDIA CORPORATION. All rights reserved. + Copyright (c) 2017 - 2018, ARM Limited. All rights reserved. + SPDX-License-Identifier: BSD-2-Clause-Patent + + @par Reference(s): + - ACPI 6.2 Specification - Errata A, September 2017 +**/ + +#include <IndustryStandard/Acpi.h> +#include <IndustryStandard/ArmPerformanceMonitoringUnitTable.h> +#include <Library/UefiLib.h> +#include "AcpiParser.h" +#include "AcpiTableParser.h" + +// Local variables +STATIC ACPI_DESCRIPTION_HEADER_INFO AcpiHdrInfo; +STATIC CONST UINT16 *NodeLength; + +/** + An ACPI_PARSER array describing the ACPI APMT Table. +**/ +STATIC CONST ACPI_PARSER ApmtParser[] = { + PARSE_ACPI_HEADER (&AcpiHdrInfo) +}; + +/** + An ACPI_PARSER array describing the ACPI Arm PMU Node. +**/ +STATIC CONST ACPI_PARSER ArmPmuNodeParser[] = { + { L"Length", 2, 0, L"0x%x", NULL, (VOID **)&NodeLength, NULL, NULL }, + { L"Node flags", 1, 2, L"0x%x", NULL, NULL, NULL, NULL }, + { L"Node type", 1, 3, L"0x%x", NULL, NULL, NULL, NULL }, + { L"Identifier", 4, 4, L"0x%x", NULL, NULL, NULL, NULL }, + { L"Node Instance primary", 8, 8, L"0x%lx", NULL, NULL, NULL, NULL }, + { L"Node Instance secondary", 4, 16, L"0x%x", NULL, NULL, NULL, NULL }, + { L"Base address 0", 8, 20, L"0x%lx", NULL, NULL, NULL, NULL }, + { L"Base address 1", 8, 28, L"0x%lx", NULL, NULL, NULL, NULL }, + { L"Overflow interrupt", 4, 36, L"0x%x", NULL, NULL, NULL, NULL }, + { L"Reserved1", 4, 40, L"0x%x", NULL, NULL, NULL, NULL }, + { L"Overflow interrupt flags", 4, 44, L"0x%x", NULL, NULL, NULL, NULL }, + { L"Processor affinity", 4, 48, L"0x%x", NULL, NULL, NULL, NULL }, + { L"Implementation ID", 4, 52, L"0x%x", NULL, NULL, NULL, NULL } +}; + +/** + This function parses the ACPI APMT table. + When trace is enabled this function parses the APMT table and + traces the ACPI table fields. + + This function also performs validation of the ACPI table fields. + + @param [in] Trace If TRUE, trace the ACPI fields. + @param [in] Ptr Pointer to the start of the buffer. + @param [in] AcpiTableLength Length of the ACPI table. + @param [in] AcpiTableRevision Revision of the ACPI table. +**/ +VOID +EFIAPI +ParseAcpiApmt ( + IN BOOLEAN Trace, + IN UINT8 *Ptr, + IN UINT32 AcpiTableLength, + IN UINT8 AcpiTableRevision + ) +{ + UINT32 Offset; + + if (!Trace) { + return; + } + + ParseAcpi ( + Trace, + 0, + "APMT", + Ptr, + AcpiTableLength, + PARSER_PARAMS (ApmtParser) + ); + Offset = sizeof (EFI_ACPI_DESCRIPTION_HEADER); + + while (Offset < AcpiTableLength) { + ParseAcpi ( + Trace, + 2, + "Arm PMU node", + Ptr + Offset, + (AcpiTableLength - Offset), + PARSER_PARAMS (ArmPmuNodeParser) + ); + if (NodeLength == NULL) { + Print ( + L"ERROR: Insufficient remaining table buffer length to read the " \ + L"Node structure. Length = %d.\n", + (AcpiTableLength - Offset) + ); + break; + } + + Offset += *NodeLength; + } +} diff --git a/ShellPkg/Library/UefiShellAcpiViewCommandLib/UefiShellAcpiViewCommandLib.c b/ShellPkg/Library/UefiShellAcpiViewCommandLib/UefiShellAcpiViewCommandLib.c index 09bdddb56e..53f06fc757 100644 --- a/ShellPkg/Library/UefiShellAcpiViewCommandLib/UefiShellAcpiViewCommandLib.c +++ b/ShellPkg/Library/UefiShellAcpiViewCommandLib/UefiShellAcpiViewCommandLib.c @@ -48,6 +48,7 @@ STATIC CONST ACPI_TABLE_PARSER ParserList[] = { { EFI_ACPI_6_3_ARM_ERROR_SOURCE_TABLE_SIGNATURE, ParseAcpiAest }, + { EFI_ACPI_6_4_ARM_PERFORMANCE_MONITORING_UNIT_TABLE_SIGNATURE, ParseAcpiApmt }, { EFI_ACPI_6_2_BOOT_GRAPHICS_RESOURCE_TABLE_SIGNATURE, ParseAcpiBgrt }, { EFI_ACPI_6_2_DEBUG_PORT_2_TABLE_SIGNATURE, ParseAcpiDbg2 }, { EFI_ACPI_6_2_DIFFERENTIATED_SYSTEM_DESCRIPTION_TABLE_SIGNATURE, diff --git a/ShellPkg/Library/UefiShellAcpiViewCommandLib/UefiShellAcpiViewCommandLib.inf b/ShellPkg/Library/UefiShellAcpiViewCommandLib/UefiShellAcpiViewCommandLib.inf index 63fc5a1281..b03ec1a31b 100644 --- a/ShellPkg/Library/UefiShellAcpiViewCommandLib/UefiShellAcpiViewCommandLib.inf +++ b/ShellPkg/Library/UefiShellAcpiViewCommandLib/UefiShellAcpiViewCommandLib.inf @@ -28,6 +28,7 @@ AcpiViewConfig.c AcpiViewConfig.h Parsers/Aest/AestParser.c + Parsers/Apmt/ApmtParser.c Parsers/Bgrt/BgrtParser.c Parsers/Dbg2/Dbg2Parser.c Parsers/Dsdt/DsdtParser.c -- 2.25.1 ^ permalink raw reply related [flat|nested] 6+ messages in thread
* Re: [edk2-devel] [PATCH 2/2] ShellPkg/AcpiView: APMT Parser 2022-10-27 14:40 ` [PATCH 2/2] ShellPkg/AcpiView: APMT Parser Jeff Brasen @ 2022-11-01 11:41 ` Sami Mujawar 0 siblings, 0 replies; 6+ messages in thread From: Sami Mujawar @ 2022-11-01 11:41 UTC (permalink / raw) To: devel, jbrasen Cc: michael.d.kinney, gaoliming, zhiguang.liu, zhichao.gao, ray.ni, nd@arm.com [-- Attachment #1: Type: text/plain, Size: 8330 bytes --] Hi Jeff, I have two minor suggestions marked inline as [SAMI]. Other than those this patch looks good to me. With that updated, Reviewed-by: Sami Mujawar <sami.mujawar@arm.com> Regards, Sami Mujawar On 27/10/2022 03:40 pm, Jeff Brasen via groups.io wrote: > Add a new parser for the Arm Performance Monitoring Unit Table. > > The APMT table describes the properties of PMU support > > implemented by components in an Arm-based system. > > > > Signed-off-by: Jeff Brasen<jbrasen@nvidia.com> > > --- > > .../UefiShellAcpiViewCommandLib/AcpiParser.h | 21 ++++ > > .../Parsers/Apmt/ApmtParser.c | 105 ++++++++++++++++++ > > .../UefiShellAcpiViewCommandLib.c | 1 + > > .../UefiShellAcpiViewCommandLib.inf | 1 + > > 4 files changed, 128 insertions(+) > > create mode 100644 ShellPkg/Library/UefiShellAcpiViewCommandLib/Parsers/Apmt/ApmtParser.c > > > > diff --git a/ShellPkg/Library/UefiShellAcpiViewCommandLib/AcpiParser.h b/ShellPkg/Library/UefiShellAcpiViewCommandLib/AcpiParser.h > > index db8c88f6df..6a1de4e12b 100644 > > --- a/ShellPkg/Library/UefiShellAcpiViewCommandLib/AcpiParser.h > > +++ b/ShellPkg/Library/UefiShellAcpiViewCommandLib/AcpiParser.h > > @@ -531,6 +531,27 @@ ParseAcpiAest ( > > IN UINT8 AcpiTableRevision > > ); > > > > +/** > > + This function parses the ACPI APMT table. > > + When trace is enabled this function parses the APMT table and > > + traces the ACPI table fields. > > + > > + This function also performs validation of the ACPI table fields. > > + > > + @param [in] Trace If TRUE, trace the ACPI fields. > > + @param [in] Ptr Pointer to the start of the buffer. > > + @param [in] AcpiTableLength Length of the ACPI table. > > + @param [in] AcpiTableRevision Revision of the ACPI table. > > +**/ > > +VOID > > +EFIAPI > > +ParseAcpiApmt ( > > + IN BOOLEAN Trace, > > + IN UINT8 *Ptr, > > + IN UINT32 AcpiTableLength, > > + IN UINT8 AcpiTableRevision > > + ); > > + > > /** > > This function parses the ACPI BGRT table. > > When trace is enabled this function parses the BGRT table and > > diff --git a/ShellPkg/Library/UefiShellAcpiViewCommandLib/Parsers/Apmt/ApmtParser.c b/ShellPkg/Library/UefiShellAcpiViewCommandLib/Parsers/Apmt/ApmtParser.c > > new file mode 100644 > > index 0000000000..b036cd12d3 > > --- /dev/null > > +++ b/ShellPkg/Library/UefiShellAcpiViewCommandLib/Parsers/Apmt/ApmtParser.c > > @@ -0,0 +1,105 @@ > > +/** @file > > + APMT table parser > > + > > + Copyright (c) 2022, NVIDIA CORPORATION. All rights reserved. > > + Copyright (c) 2017 - 2018, ARM Limited. All rights reserved. > > + SPDX-License-Identifier: BSD-2-Clause-Patent > > + > > + @par Reference(s): > > + - ACPI 6.2 Specification - Errata A, September 2017 > > +**/ > > + > > +#include <IndustryStandard/Acpi.h> > > +#include <IndustryStandard/ArmPerformanceMonitoringUnitTable.h> > > +#include <Library/UefiLib.h> > > +#include "AcpiParser.h" > > +#include "AcpiTableParser.h" > > + > > +// Local variables > > +STATIC ACPI_DESCRIPTION_HEADER_INFO AcpiHdrInfo; > > +STATIC CONST UINT16 *NodeLength; > > + > > +/** > > + An ACPI_PARSER array describing the ACPI APMT Table. > > +**/ > > +STATIC CONST ACPI_PARSER ApmtParser[] = { > > + PARSE_ACPI_HEADER (&AcpiHdrInfo) > > +}; > > + > > +/** > > + An ACPI_PARSER array describing the ACPI Arm PMU Node. > > +**/ > > +STATIC CONST ACPI_PARSER ArmPmuNodeParser[] = { > > + { L"Length", 2, 0, L"0x%x", NULL, (VOID **)&NodeLength, NULL, NULL }, > > + { L"Node flags", 1, 2, L"0x%x", NULL, NULL, NULL, NULL }, > > + { L"Node type", 1, 3, L"0x%x", NULL, NULL, NULL, NULL }, > > + { L"Identifier", 4, 4, L"0x%x", NULL, NULL, NULL, NULL }, > > + { L"Node Instance primary", 8, 8, L"0x%lx", NULL, NULL, NULL, NULL }, > > + { L"Node Instance secondary", 4, 16, L"0x%x", NULL, NULL, NULL, NULL }, > > + { L"Base address 0", 8, 20, L"0x%lx", NULL, NULL, NULL, NULL }, > > + { L"Base address 1", 8, 28, L"0x%lx", NULL, NULL, NULL, NULL }, > > + { L"Overflow interrupt", 4, 36, L"0x%x", NULL, NULL, NULL, NULL }, > > + { L"Reserved1", 4, 40, L"0x%x", NULL, NULL, NULL, NULL }, > > + { L"Overflow interrupt flags", 4, 44, L"0x%x", NULL, NULL, NULL, NULL }, > > + { L"Processor affinity", 4, 48, L"0x%x", NULL, NULL, NULL, NULL }, > > + { L"Implementation ID", 4, 52, L"0x%x", NULL, NULL, NULL, NULL } > > +}; > > + > > +/** > > + This function parses the ACPI APMT table. > > + When trace is enabled this function parses the APMT table and > > + traces the ACPI table fields. > > + > > + This function also performs validation of the ACPI table fields. > > + > > + @param [in] Trace If TRUE, trace the ACPI fields. > > + @param [in] Ptr Pointer to the start of the buffer. > > + @param [in] AcpiTableLength Length of the ACPI table. > > + @param [in] AcpiTableRevision Revision of the ACPI table. > > +**/ > > +VOID > > +EFIAPI > > +ParseAcpiApmt ( > > + IN BOOLEAN Trace, > > + IN UINT8 *Ptr, > > + IN UINT32 AcpiTableLength, > > + IN UINT8 AcpiTableRevision > > + ) > > +{ > > + UINT32 Offset; > > + > > + if (!Trace) { > > + return; > > + } > > + > > + ParseAcpi ( > > + Trace, > > + 0, > > + "APMT", > > + Ptr, > > + AcpiTableLength, > > + PARSER_PARAMS (ApmtParser) > > + ); > > + Offset = sizeof (EFI_ACPI_DESCRIPTION_HEADER); > > + > > + while (Offset < AcpiTableLength) { > > + ParseAcpi ( > > + Trace, > > + 2, > > + "Arm PMU node", > > + Ptr + Offset, > > + (AcpiTableLength - Offset), > > + PARSER_PARAMS (ArmPmuNodeParser) > > + ); > > + if (NodeLength == NULL) { [SAMI] I think it will be good to increment the error count by calling'IncrementErrorCount ()'. > > + Print ( > > + L"ERROR: Insufficient remaining table buffer length to read the " \ > > + L"Node structure. Length = %d.\n", > > + (AcpiTableLength - Offset) > > + ); > > + break; > > + } > > + > > + Offset += *NodeLength; > > + } > > +} > > diff --git a/ShellPkg/Library/UefiShellAcpiViewCommandLib/UefiShellAcpiViewCommandLib.c b/ShellPkg/Library/UefiShellAcpiViewCommandLib/UefiShellAcpiViewCommandLib.c > > index 09bdddb56e..53f06fc757 100644 > > --- a/ShellPkg/Library/UefiShellAcpiViewCommandLib/UefiShellAcpiViewCommandLib.c > > +++ b/ShellPkg/Library/UefiShellAcpiViewCommandLib/UefiShellAcpiViewCommandLib.c > > @@ -48,6 +48,7 @@ STATIC > > CONST > > ACPI_TABLE_PARSER ParserList[] = { > > { EFI_ACPI_6_3_ARM_ERROR_SOURCE_TABLE_SIGNATURE, ParseAcpiAest }, > > + { EFI_ACPI_6_4_ARM_PERFORMANCE_MONITORING_UNIT_TABLE_SIGNATURE, ParseAcpiApmt }, > > { EFI_ACPI_6_2_BOOT_GRAPHICS_RESOURCE_TABLE_SIGNATURE, ParseAcpiBgrt }, > > { EFI_ACPI_6_2_DEBUG_PORT_2_TABLE_SIGNATURE, ParseAcpiDbg2 }, > > { EFI_ACPI_6_2_DIFFERENTIATED_SYSTEM_DESCRIPTION_TABLE_SIGNATURE, > > diff --git a/ShellPkg/Library/UefiShellAcpiViewCommandLib/UefiShellAcpiViewCommandLib.inf b/ShellPkg/Library/UefiShellAcpiViewCommandLib/UefiShellAcpiViewCommandLib.inf > > index 63fc5a1281..b03ec1a31b 100644 > > --- a/ShellPkg/Library/UefiShellAcpiViewCommandLib/UefiShellAcpiViewCommandLib.inf > > +++ b/ShellPkg/Library/UefiShellAcpiViewCommandLib/UefiShellAcpiViewCommandLib.inf > > @@ -28,6 +28,7 @@ > > AcpiViewConfig.c > > AcpiViewConfig.h > > Parsers/Aest/AestParser.c > > + Parsers/Apmt/ApmtParser.c [SAMI] I think it would be good to update the STR_GET_HELP_ACPIVIEW text in ShellPkg\Library\UefiShellAcpiViewCommandLib\UefiShellAcpiViewCommandLib.uni to add APMT as a supported parser. [/SAMI] > > Parsers/Bgrt/BgrtParser.c > > Parsers/Dbg2/Dbg2Parser.c > > Parsers/Dsdt/DsdtParser.c > [-- Attachment #2: Type: text/html, Size: 9157 bytes --] ^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [edk2-devel] [PATCH 1/2] MdePkg/IndustryStandard: add definitions for ACPI APMT 2022-10-27 14:40 [PATCH 1/2] MdePkg/IndustryStandard: add definitions for ACPI APMT Jeff Brasen 2022-10-27 14:40 ` [PATCH 2/2] ShellPkg/AcpiView: APMT Parser Jeff Brasen @ 2022-11-01 11:41 ` Sami Mujawar 2022-11-02 1:05 ` 回复: " gaoliming 2022-11-03 1:42 ` Gao, Zhichao 1 sibling, 2 replies; 6+ messages in thread From: Sami Mujawar @ 2022-11-01 11:41 UTC (permalink / raw) To: devel, jbrasen Cc: michael.d.kinney, gaoliming, zhiguang.liu, zhichao.gao, ray.ni, nd@arm.com Hi Jeff, Thank you for this patch. These changes look good to me. Reviewed-by: Sami Mujawar <sami.mujawar@arm.com> Regards, Sami Mujawar On 27/10/2022 03:40 pm, Jeff Brasen via groups.io wrote: > This adds #defines and struct typedefs for the various node types in > > the ACPI Arm Performance Monitoring Unit (APMT) table. > > > > Signed-off-by: Jeff Brasen <jbrasen@nvidia.com> > > --- > > MdePkg/Include/IndustryStandard/Acpi64.h | 5 ++ > > .../ArmPerformanceMonitoringUnitTable.h | 69 +++++++++++++++++++ > > 2 files changed, 74 insertions(+) > > create mode 100644 MdePkg/Include/IndustryStandard/ArmPerformanceMonitoringUnitTable.h > > > > diff --git a/MdePkg/Include/IndustryStandard/Acpi64.h b/MdePkg/Include/IndustryStandard/Acpi64.h > > index fe5ebfac2b..575ca0430c 100644 > > --- a/MdePkg/Include/IndustryStandard/Acpi64.h > > +++ b/MdePkg/Include/IndustryStandard/Acpi64.h > > @@ -2847,6 +2847,11 @@ typedef struct { > > /// > > #define EFI_ACPI_6_4_MULTIPLE_APIC_DESCRIPTION_TABLE_SIGNATURE SIGNATURE_32('A', 'P', 'I', 'C') > > > > +/// > > +/// "APMT" Arm Performance Monitoring Unit Table > > +/// > > +#define EFI_ACPI_6_4_ARM_PERFORMANCE_MONITORING_UNIT_TABLE_SIGNATURE SIGNATURE_32('A', 'P', 'M', 'T') > > + > > /// > > /// "BERT" Boot Error Record Table > > /// > > diff --git a/MdePkg/Include/IndustryStandard/ArmPerformanceMonitoringUnitTable.h b/MdePkg/Include/IndustryStandard/ArmPerformanceMonitoringUnitTable.h > > new file mode 100644 > > index 0000000000..fe7084cffd > > --- /dev/null > > +++ b/MdePkg/Include/IndustryStandard/ArmPerformanceMonitoringUnitTable.h > > @@ -0,0 +1,69 @@ > > +/** @file > > + ACPI Arm Performance Monitoring Unit (APMT) table > > + as specified in ARM spec DEN0117 > > + > > + Copyright (c) 2022, NVIDIA CORPORATION. All rights reserved. > > + Copyright (c) 2022, ARM Limited. All rights reserved. > > + SPDX-License-Identifier: BSD-2-Clause-Patent > > +**/ > > + > > +#ifndef ARM_PERFORMANCE_MONITORING_UNIT_TABLE_H_ > > +#define ARM_PERFORMANCE_MONITORING_UNIT_TABLE_H_ > > + > > +#include <IndustryStandard/Acpi.h> > > + > > +#pragma pack(1) > > + > > +/// > > +/// Arm Performance Monitoring Unit (APMT) tabl > > +/// > > +typedef struct { > > + EFI_ACPI_DESCRIPTION_HEADER Header; > > +} EFI_ACPI_ARM_PERFORMANCE_MONITORING_UNIT_TABLE_HEADER; > > + > > +/// > > +/// APMT Revision (as defined in DEN0117.) > > +/// > > +#define EFI_ACPI_ARM_PERFORMANCE_MONITORING_UNIT_TABLE_REVISION 0x00 > > + > > +/// > > +/// Arm PMU Node Structure > > +/// > > + > > +// Node Flags > > +#define EFI_ACPI_APMT_DUAL_PAGE_EXTENSION_SUPPORTED BIT0 > > +#define EFI_ACPI_APMT_PROCESSOR_AFFINITY_TYPE_CONTAINER BIT1 > > +#define EFI_ACPI_APMT_PROCESSOR_AFFINITY_TYPE_PROCESSOR 0 // BIT 1 > > +#define EFI_ACPI_APMT_64BIT_SINGLE_COPY_ATOMICITY_SUPPORTED BIT2 > > + > > +// Interrupt Flags > > +#define EFI_ACPI_APMT_INTERRUPT_MODE_EDGE_TRIGGERED BIT0 > > +#define EFI_ACPI_APMT_INTERRUPT_MODE_LEVEL_TRIGGERED 0 // BIT 0 > > +#define EFI_ACPI_APMT_INTERRUPT_TYPE_WIRED 0 // BIT 1 > > + > > +// Node Type > > +#define EFI_ACPI_APMT_NODE_TYPE_MEMORY_CONTROLLER 0x00 > > +#define EFI_ACPI_APMT_NODE_TYPE_SMMU 0x01 > > +#define EFI_ACPI_APMT_NODE_TYPE_PCIE_ROOT_COMPLEX 0x02 > > +#define EFI_ACPI_APMT_NODE_TYPE_ACPI_DEVICE 0x03 > > +#define EFI_ACPI_APMT_NODE_TYPE_CPU_CACHE 0x04 > > + > > +typedef struct { > > + UINT16 Length; > > + UINT8 NodeFlags; > > + UINT8 NodeType; > > + UINT32 Identifier; > > + UINT64 NodeInstancePrimary; > > + UINT32 NodeInstanceSecondary; > > + UINT64 BaseAddress0; > > + UINT64 BaseAddress1; > > + UINT32 OverflowInterrupt; > > + UINT32 Reserved1; > > + UINT32 OverflowInterruptFlags; > > + UINT32 ProcessorAffinity; > > + UINT32 ImplementationId; > > +} EFI_ACPI_ARM_PERFORMANCE_MONITORING_UNIT_NODE; > > + > > +#pragma pack() > > + > > +#endif > ^ permalink raw reply [flat|nested] 6+ messages in thread
* 回复: [edk2-devel] [PATCH 1/2] MdePkg/IndustryStandard: add definitions for ACPI APMT 2022-11-01 11:41 ` [edk2-devel] [PATCH 1/2] MdePkg/IndustryStandard: add definitions for ACPI APMT Sami Mujawar @ 2022-11-02 1:05 ` gaoliming 2022-11-03 1:42 ` Gao, Zhichao 1 sibling, 0 replies; 6+ messages in thread From: gaoliming @ 2022-11-02 1:05 UTC (permalink / raw) To: devel, sami.mujawar, jbrasen Cc: michael.d.kinney, zhiguang.liu, zhichao.gao, ray.ni, nd Reviewed-by: Liming Gao <gaoliming@byosoft.com.cn> > -----邮件原件----- > 发件人: devel@edk2.groups.io <devel@edk2.groups.io> 代表 Sami > Mujawar > 发送时间: 2022年11月1日 19:42 > 收件人: devel@edk2.groups.io; jbrasen@nvidia.com > 抄送: michael.d.kinney@intel.com; gaoliming@byosoft.com.cn; > zhiguang.liu@intel.com; zhichao.gao@intel.com; ray.ni@intel.com; > nd@arm.com > 主题: Re: [edk2-devel] [PATCH 1/2] MdePkg/IndustryStandard: add > definitions for ACPI APMT > > Hi Jeff, > > Thank you for this patch. > > These changes look good to me. > > Reviewed-by: Sami Mujawar <sami.mujawar@arm.com> > > Regards, > > Sami Mujawar > > On 27/10/2022 03:40 pm, Jeff Brasen via groups.io wrote: > > This adds #defines and struct typedefs for the various node types in > > > > the ACPI Arm Performance Monitoring Unit (APMT) table. > > > > > > > > Signed-off-by: Jeff Brasen <jbrasen@nvidia.com> > > > > --- > > > > MdePkg/Include/IndustryStandard/Acpi64.h | 5 ++ > > > > .../ArmPerformanceMonitoringUnitTable.h | 69 > +++++++++++++++++++ > > > > 2 files changed, 74 insertions(+) > > > > create mode 100644 > MdePkg/Include/IndustryStandard/ArmPerformanceMonitoringUnitTable.h > > > > > > > > diff --git a/MdePkg/Include/IndustryStandard/Acpi64.h > b/MdePkg/Include/IndustryStandard/Acpi64.h > > > > index fe5ebfac2b..575ca0430c 100644 > > > > --- a/MdePkg/Include/IndustryStandard/Acpi64.h > > > > +++ b/MdePkg/Include/IndustryStandard/Acpi64.h > > > > @@ -2847,6 +2847,11 @@ typedef struct { > > > > /// > > > > #define > EFI_ACPI_6_4_MULTIPLE_APIC_DESCRIPTION_TABLE_SIGNATURE > SIGNATURE_32('A', 'P', 'I', 'C') > > > > > > > > +/// > > > > +/// "APMT" Arm Performance Monitoring Unit Table > > > > +/// > > > > +#define > EFI_ACPI_6_4_ARM_PERFORMANCE_MONITORING_UNIT_TABLE_SIGNATU > RE SIGNATURE_32('A', 'P', 'M', 'T') > > > > + > > > > /// > > > > /// "BERT" Boot Error Record Table > > > > /// > > > > diff --git > a/MdePkg/Include/IndustryStandard/ArmPerformanceMonitoringUnitTable.h > b/MdePkg/Include/IndustryStandard/ArmPerformanceMonitoringUnitTable.h > > > > new file mode 100644 > > > > index 0000000000..fe7084cffd > > > > --- /dev/null > > > > +++ > b/MdePkg/Include/IndustryStandard/ArmPerformanceMonitoringUnitTable.h > > > > @@ -0,0 +1,69 @@ > > > > +/** @file > > > > + ACPI Arm Performance Monitoring Unit (APMT) table > > > > + as specified in ARM spec DEN0117 > > > > + > > > > + Copyright (c) 2022, NVIDIA CORPORATION. All rights reserved. > > > > + Copyright (c) 2022, ARM Limited. All rights reserved. > > > > + SPDX-License-Identifier: BSD-2-Clause-Patent > > > > +**/ > > > > + > > > > +#ifndef ARM_PERFORMANCE_MONITORING_UNIT_TABLE_H_ > > > > +#define ARM_PERFORMANCE_MONITORING_UNIT_TABLE_H_ > > > > + > > > > +#include <IndustryStandard/Acpi.h> > > > > + > > > > +#pragma pack(1) > > > > + > > > > +/// > > > > +/// Arm Performance Monitoring Unit (APMT) tabl > > > > +/// > > > > +typedef struct { > > > > + EFI_ACPI_DESCRIPTION_HEADER Header; > > > > +} EFI_ACPI_ARM_PERFORMANCE_MONITORING_UNIT_TABLE_HEADER; > > > > + > > > > +/// > > > > +/// APMT Revision (as defined in DEN0117.) > > > > +/// > > > > +#define > EFI_ACPI_ARM_PERFORMANCE_MONITORING_UNIT_TABLE_REVISION > 0x00 > > > > + > > > > +/// > > > > +/// Arm PMU Node Structure > > > > +/// > > > > + > > > > +// Node Flags > > > > +#define EFI_ACPI_APMT_DUAL_PAGE_EXTENSION_SUPPORTED > BIT0 > > > > +#define EFI_ACPI_APMT_PROCESSOR_AFFINITY_TYPE_CONTAINER > BIT1 > > > > +#define EFI_ACPI_APMT_PROCESSOR_AFFINITY_TYPE_PROCESSOR > 0 // BIT 1 > > > > +#define EFI_ACPI_APMT_64BIT_SINGLE_COPY_ATOMICITY_SUPPORTED > BIT2 > > > > + > > > > +// Interrupt Flags > > > > +#define EFI_ACPI_APMT_INTERRUPT_MODE_EDGE_TRIGGERED BIT0 > > > > +#define EFI_ACPI_APMT_INTERRUPT_MODE_LEVEL_TRIGGERED 0 // > BIT 0 > > > > +#define EFI_ACPI_APMT_INTERRUPT_TYPE_WIRED 0 // BIT > 1 > > > > + > > > > +// Node Type > > > > +#define EFI_ACPI_APMT_NODE_TYPE_MEMORY_CONTROLLER 0x00 > > > > +#define EFI_ACPI_APMT_NODE_TYPE_SMMU 0x01 > > > > +#define EFI_ACPI_APMT_NODE_TYPE_PCIE_ROOT_COMPLEX 0x02 > > > > +#define EFI_ACPI_APMT_NODE_TYPE_ACPI_DEVICE 0x03 > > > > +#define EFI_ACPI_APMT_NODE_TYPE_CPU_CACHE 0x04 > > > > + > > > > +typedef struct { > > > > + UINT16 Length; > > > > + UINT8 NodeFlags; > > > > + UINT8 NodeType; > > > > + UINT32 Identifier; > > > > + UINT64 NodeInstancePrimary; > > > > + UINT32 NodeInstanceSecondary; > > > > + UINT64 BaseAddress0; > > > > + UINT64 BaseAddress1; > > > > + UINT32 OverflowInterrupt; > > > > + UINT32 Reserved1; > > > > + UINT32 OverflowInterruptFlags; > > > > + UINT32 ProcessorAffinity; > > > > + UINT32 ImplementationId; > > > > +} EFI_ACPI_ARM_PERFORMANCE_MONITORING_UNIT_NODE; > > > > + > > > > +#pragma pack() > > > > + > > > > +#endif > > > > > > ^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [edk2-devel] [PATCH 1/2] MdePkg/IndustryStandard: add definitions for ACPI APMT 2022-11-01 11:41 ` [edk2-devel] [PATCH 1/2] MdePkg/IndustryStandard: add definitions for ACPI APMT Sami Mujawar 2022-11-02 1:05 ` 回复: " gaoliming @ 2022-11-03 1:42 ` Gao, Zhichao 1 sibling, 0 replies; 6+ messages in thread From: Gao, Zhichao @ 2022-11-03 1:42 UTC (permalink / raw) To: Sami Mujawar, devel@edk2.groups.io, jbrasen@nvidia.com Cc: Kinney, Michael D, Gao, Liming, Liu, Zhiguang, Ni, Ray, nd@arm.com Reviewed-by: Zhichao Gao <zhichao.gao@intel.com> Thanks, Zhichao > -----Original Message----- > From: Sami Mujawar <sami.mujawar@arm.com> > Sent: Tuesday, November 1, 2022 7:42 PM > To: devel@edk2.groups.io; jbrasen@nvidia.com > Cc: Kinney, Michael D <michael.d.kinney@intel.com>; Gao, Liming > <gaoliming@byosoft.com.cn>; Liu, Zhiguang <zhiguang.liu@intel.com>; Gao, > Zhichao <zhichao.gao@intel.com>; Ni, Ray <ray.ni@intel.com>; nd@arm.com > Subject: Re: [edk2-devel] [PATCH 1/2] MdePkg/IndustryStandard: add > definitions for ACPI APMT > > Hi Jeff, > > Thank you for this patch. > > These changes look good to me. > > Reviewed-by: Sami Mujawar <sami.mujawar@arm.com> > > Regards, > > Sami Mujawar > > On 27/10/2022 03:40 pm, Jeff Brasen via groups.io wrote: > > This adds #defines and struct typedefs for the various node types in > > > > the ACPI Arm Performance Monitoring Unit (APMT) table. > > > > > > > > Signed-off-by: Jeff Brasen <jbrasen@nvidia.com> > > > > --- > > > > MdePkg/Include/IndustryStandard/Acpi64.h | 5 ++ > > > > .../ArmPerformanceMonitoringUnitTable.h | 69 > +++++++++++++++++++ > > > > 2 files changed, 74 insertions(+) > > > > create mode 100644 > MdePkg/Include/IndustryStandard/ArmPerformanceMonitoringUnitTable.h > > > > > > > > diff --git a/MdePkg/Include/IndustryStandard/Acpi64.h > b/MdePkg/Include/IndustryStandard/Acpi64.h > > > > index fe5ebfac2b..575ca0430c 100644 > > > > --- a/MdePkg/Include/IndustryStandard/Acpi64.h > > > > +++ b/MdePkg/Include/IndustryStandard/Acpi64.h > > > > @@ -2847,6 +2847,11 @@ typedef struct { > > > > /// > > > > #define > EFI_ACPI_6_4_MULTIPLE_APIC_DESCRIPTION_TABLE_SIGNATURE > SIGNATURE_32('A', 'P', 'I', 'C') > > > > > > > > +/// > > > > +/// "APMT" Arm Performance Monitoring Unit Table > > > > +/// > > > > +#define > EFI_ACPI_6_4_ARM_PERFORMANCE_MONITORING_UNIT_TABLE_SIGNATU > RE SIGNATURE_32('A', 'P', 'M', 'T') > > > > + > > > > /// > > > > /// "BERT" Boot Error Record Table > > > > /// > > > > diff --git > a/MdePkg/Include/IndustryStandard/ArmPerformanceMonitoringUnitTable. > h > b/MdePkg/Include/IndustryStandard/ArmPerformanceMonitoringUnitTable > .h > > > > new file mode 100644 > > > > index 0000000000..fe7084cffd > > > > --- /dev/null > > > > +++ > b/MdePkg/Include/IndustryStandard/ArmPerformanceMonitoringUnitTable > .h > > > > @@ -0,0 +1,69 @@ > > > > +/** @file > > > > + ACPI Arm Performance Monitoring Unit (APMT) table > > > > + as specified in ARM spec DEN0117 > > > > + > > > > + Copyright (c) 2022, NVIDIA CORPORATION. All rights reserved. > > > > + Copyright (c) 2022, ARM Limited. All rights reserved. > > > > + SPDX-License-Identifier: BSD-2-Clause-Patent > > > > +**/ > > > > + > > > > +#ifndef ARM_PERFORMANCE_MONITORING_UNIT_TABLE_H_ > > > > +#define ARM_PERFORMANCE_MONITORING_UNIT_TABLE_H_ > > > > + > > > > +#include <IndustryStandard/Acpi.h> > > > > + > > > > +#pragma pack(1) > > > > + > > > > +/// > > > > +/// Arm Performance Monitoring Unit (APMT) tabl > > > > +/// > > > > +typedef struct { > > > > + EFI_ACPI_DESCRIPTION_HEADER Header; > > > > +} EFI_ACPI_ARM_PERFORMANCE_MONITORING_UNIT_TABLE_HEADER; > > > > + > > > > +/// > > > > +/// APMT Revision (as defined in DEN0117.) > > > > +/// > > > > +#define > EFI_ACPI_ARM_PERFORMANCE_MONITORING_UNIT_TABLE_REVISION > 0x00 > > > > + > > > > +/// > > > > +/// Arm PMU Node Structure > > > > +/// > > > > + > > > > +// Node Flags > > > > +#define EFI_ACPI_APMT_DUAL_PAGE_EXTENSION_SUPPORTED BIT0 > > > > +#define EFI_ACPI_APMT_PROCESSOR_AFFINITY_TYPE_CONTAINER > BIT1 > > > > +#define EFI_ACPI_APMT_PROCESSOR_AFFINITY_TYPE_PROCESSOR 0 > // BIT 1 > > > > +#define EFI_ACPI_APMT_64BIT_SINGLE_COPY_ATOMICITY_SUPPORTED > BIT2 > > > > + > > > > +// Interrupt Flags > > > > +#define EFI_ACPI_APMT_INTERRUPT_MODE_EDGE_TRIGGERED BIT0 > > > > +#define EFI_ACPI_APMT_INTERRUPT_MODE_LEVEL_TRIGGERED 0 // BIT > 0 > > > > +#define EFI_ACPI_APMT_INTERRUPT_TYPE_WIRED 0 // BIT 1 > > > > + > > > > +// Node Type > > > > +#define EFI_ACPI_APMT_NODE_TYPE_MEMORY_CONTROLLER 0x00 > > > > +#define EFI_ACPI_APMT_NODE_TYPE_SMMU 0x01 > > > > +#define EFI_ACPI_APMT_NODE_TYPE_PCIE_ROOT_COMPLEX 0x02 > > > > +#define EFI_ACPI_APMT_NODE_TYPE_ACPI_DEVICE 0x03 > > > > +#define EFI_ACPI_APMT_NODE_TYPE_CPU_CACHE 0x04 > > > > + > > > > +typedef struct { > > > > + UINT16 Length; > > > > + UINT8 NodeFlags; > > > > + UINT8 NodeType; > > > > + UINT32 Identifier; > > > > + UINT64 NodeInstancePrimary; > > > > + UINT32 NodeInstanceSecondary; > > > > + UINT64 BaseAddress0; > > > > + UINT64 BaseAddress1; > > > > + UINT32 OverflowInterrupt; > > > > + UINT32 Reserved1; > > > > + UINT32 OverflowInterruptFlags; > > > > + UINT32 ProcessorAffinity; > > > > + UINT32 ImplementationId; > > > > +} EFI_ACPI_ARM_PERFORMANCE_MONITORING_UNIT_NODE; > > > > + > > > > +#pragma pack() > > > > + > > > > +#endif > > ^ permalink raw reply [flat|nested] 6+ messages in thread
end of thread, other threads:[~2022-11-03 1:43 UTC | newest] Thread overview: 6+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2022-10-27 14:40 [PATCH 1/2] MdePkg/IndustryStandard: add definitions for ACPI APMT Jeff Brasen 2022-10-27 14:40 ` [PATCH 2/2] ShellPkg/AcpiView: APMT Parser Jeff Brasen 2022-11-01 11:41 ` [edk2-devel] " Sami Mujawar 2022-11-01 11:41 ` [edk2-devel] [PATCH 1/2] MdePkg/IndustryStandard: add definitions for ACPI APMT Sami Mujawar 2022-11-02 1:05 ` 回复: " gaoliming 2022-11-03 1:42 ` Gao, Zhichao
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox