audk/MdePkg/Include/IndustryStandard/ArmPerformanceMonitoringUni...

70 lines
2.0 KiB
C

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