MdePkg/IndustryStandard: add definitions for ACPI APMT

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>
Reviewed-by: Zhichao Gao <zhichao.gao@intel.com>
Reviewed-by: Liming Gao <gaoliming@byosoft.com.cn>
Reviewed-by: Sami Mujawar <sami.mujawar@arm.com>
This commit is contained in:
Jeff Brasen 2022-11-04 10:04:47 -06:00 committed by mergify[bot]
parent 11ce7a2de7
commit aa65bb4020
2 changed files with 74 additions and 0 deletions

View File

@ -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
///

View File

@ -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