]> git.proxmox.com Git - mirror_edk2.git/blob - MdePkg/Include/IndustryStandard/ArmPerformanceMonitoringUnitTable.h
UefiCpuPkg: Move AsmRelocateApLoopStart from Mpfuncs.nasm to AmdSev.nasm
[mirror_edk2.git] / MdePkg / Include / IndustryStandard / ArmPerformanceMonitoringUnitTable.h
1 /** @file
2 ACPI Arm Performance Monitoring Unit (APMT) table
3 as specified in ARM spec DEN0117
4
5 Copyright (c) 2022, NVIDIA CORPORATION. All rights reserved.
6 Copyright (c) 2022, ARM Limited. All rights reserved.
7 SPDX-License-Identifier: BSD-2-Clause-Patent
8 **/
9
10 #ifndef ARM_PERFORMANCE_MONITORING_UNIT_TABLE_H_
11 #define ARM_PERFORMANCE_MONITORING_UNIT_TABLE_H_
12
13 #include <IndustryStandard/Acpi.h>
14
15 #pragma pack(1)
16
17 ///
18 /// Arm Performance Monitoring Unit (APMT) tabl
19 ///
20 typedef struct {
21 EFI_ACPI_DESCRIPTION_HEADER Header;
22 } EFI_ACPI_ARM_PERFORMANCE_MONITORING_UNIT_TABLE_HEADER;
23
24 ///
25 /// APMT Revision (as defined in DEN0117.)
26 ///
27 #define EFI_ACPI_ARM_PERFORMANCE_MONITORING_UNIT_TABLE_REVISION 0x00
28
29 ///
30 /// Arm PMU Node Structure
31 ///
32
33 // Node Flags
34 #define EFI_ACPI_APMT_DUAL_PAGE_EXTENSION_SUPPORTED BIT0
35 #define EFI_ACPI_APMT_PROCESSOR_AFFINITY_TYPE_CONTAINER BIT1
36 #define EFI_ACPI_APMT_PROCESSOR_AFFINITY_TYPE_PROCESSOR 0 // BIT 1
37 #define EFI_ACPI_APMT_64BIT_SINGLE_COPY_ATOMICITY_SUPPORTED BIT2
38
39 // Interrupt Flags
40 #define EFI_ACPI_APMT_INTERRUPT_MODE_EDGE_TRIGGERED BIT0
41 #define EFI_ACPI_APMT_INTERRUPT_MODE_LEVEL_TRIGGERED 0 // BIT 0
42 #define EFI_ACPI_APMT_INTERRUPT_TYPE_WIRED 0 // BIT 1
43
44 // Node Type
45 #define EFI_ACPI_APMT_NODE_TYPE_MEMORY_CONTROLLER 0x00
46 #define EFI_ACPI_APMT_NODE_TYPE_SMMU 0x01
47 #define EFI_ACPI_APMT_NODE_TYPE_PCIE_ROOT_COMPLEX 0x02
48 #define EFI_ACPI_APMT_NODE_TYPE_ACPI_DEVICE 0x03
49 #define EFI_ACPI_APMT_NODE_TYPE_CPU_CACHE 0x04
50
51 typedef struct {
52 UINT16 Length;
53 UINT8 NodeFlags;
54 UINT8 NodeType;
55 UINT32 Identifier;
56 UINT64 NodeInstancePrimary;
57 UINT32 NodeInstanceSecondary;
58 UINT64 BaseAddress0;
59 UINT64 BaseAddress1;
60 UINT32 OverflowInterrupt;
61 UINT32 Reserved1;
62 UINT32 OverflowInterruptFlags;
63 UINT32 ProcessorAffinity;
64 UINT32 ImplementationId;
65 } EFI_ACPI_ARM_PERFORMANCE_MONITORING_UNIT_NODE;
66
67 #pragma pack()
68
69 #endif