summaryrefslogtreecommitdiff
path: root/include/linux/intel_pmt_features.h
blob: 53573a4a49b786c3580b02231799539662131832 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _FEATURES_H
#define _FEATURES_H

#include <linux/bits.h>
#include <linux/types.h>

/* Common masks */
#define PMT_CAP_TELEM			BIT(0)
#define PMT_CAP_WATCHER			BIT(1)
#define PMT_CAP_CRASHLOG		BIT(2)
#define PMT_CAP_STREAMING		BIT(3)
#define PMT_CAP_THRESHOLD		BIT(4)
#define PMT_CAP_WINDOW			BIT(5)
#define PMT_CAP_CONFIG			BIT(6)
#define PMT_CAP_TRACING			BIT(7)
#define PMT_CAP_INBAND			BIT(8)
#define PMT_CAP_OOB			BIT(9)
#define PMT_CAP_SECURED_CHAN		BIT(10)

#define PMT_CAP_PMT_SP			BIT(11)
#define PMT_CAP_PMT_SP_POLICY		GENMASK(17, 12)

/* Per Core Performance Telemetry (PCPT) specific masks */
#define PMT_CAP_PCPT_CORE_PERF		BIT(18)
#define PMT_CAP_PCPT_CORE_C0_RES	BIT(19)
#define PMT_CAP_PCPT_CORE_ACTIVITY	BIT(20)
#define PMT_CAP_PCPT_CACHE_PERF		BIT(21)
#define PMT_CAP_PCPT_QUALITY_TELEM	BIT(22)

/* Per Core Environmental Telemetry (PCET) specific masks */
#define PMT_CAP_PCET_WORKPOINT_HIST	BIT(18)
#define PMT_CAP_PCET_CORE_CURR_TEMP	BIT(19)
#define PMT_CAP_PCET_CORE_INST_RES	BIT(20)
#define PMT_CAP_PCET_QUALITY_TELEM	BIT(21)	/* Same as PMT_CAP_PCPT */
#define PMT_CAP_PCET_CORE_CDYN_LVL	BIT(22)
#define PMT_CAP_PCET_CORE_STRESS_LVL	BIT(23)
#define PMT_CAP_PCET_CORE_DAS		BIT(24)
#define PMT_CAP_PCET_FIVR_HEALTH	BIT(25)
#define PMT_CAP_PCET_ENERGY		BIT(26)
#define PMT_CAP_PCET_PEM_STATUS		BIT(27)
#define PMT_CAP_PCET_CORE_C_STATE	BIT(28)

/* Per RMID Performance Telemetry specific masks */
#define PMT_CAP_RMID_CORES_PERF		BIT(18)
#define PMT_CAP_RMID_CACHE_PERF		BIT(19)
#define PMT_CAP_RMID_PERF_QUAL		BIT(20)

/* Accelerator Telemetry specific masks */
#define PMT_CAP_ACCEL_CPM_TELEM		BIT(18)
#define PMT_CAP_ACCEL_TIP_TELEM		BIT(19)

/* Uncore Telemetry specific masks */
#define PMT_CAP_UNCORE_IO_CA_TELEM	BIT(18)
#define PMT_CAP_UNCORE_RMID_TELEM	BIT(19)
#define PMT_CAP_UNCORE_D2D_ULA_TELEM	BIT(20)
#define PMT_CAP_UNCORE_PKGC_TELEM	BIT(21)

/* Crash Log specific masks */
#define PMT_CAP_CRASHLOG_MAN_TRIG	BIT(11)
#define PMT_CAP_CRASHLOG_CORE		BIT(12)
#define PMT_CAP_CRASHLOG_UNCORE		BIT(13)
#define PMT_CAP_CRASHLOG_TOR		BIT(14)
#define PMT_CAP_CRASHLOG_S3M		BIT(15)
#define PMT_CAP_CRASHLOG_PERSISTENCY	BIT(16)
#define PMT_CAP_CRASHLOG_CLIP_GPIO	BIT(17)
#define PMT_CAP_CRASHLOG_PRE_RESET	BIT(18)
#define PMT_CAP_CRASHLOG_POST_RESET	BIT(19)

/* PeTe Log specific masks */
#define PMT_CAP_PETE_MAN_TRIG		BIT(11)
#define PMT_CAP_PETE_ENCRYPTION		BIT(12)
#define PMT_CAP_PETE_PERSISTENCY	BIT(13)
#define PMT_CAP_PETE_REQ_TOKENS		BIT(14)
#define PMT_CAP_PETE_PROD_ENABLED	BIT(15)
#define PMT_CAP_PETE_DEBUG_ENABLED	BIT(16)

/* TPMI control specific masks */
#define PMT_CAP_TPMI_MAILBOX		BIT(11)
#define PMT_CAP_TPMI_LOCK		BIT(12)

/* Tracing specific masks */
#define PMT_CAP_TRACE_SRAR		BIT(11)
#define PMT_CAP_TRACE_CORRECTABLE	BIT(12)
#define PMT_CAP_TRACE_MCTP		BIT(13)
#define PMT_CAP_TRACE_MRT		BIT(14)

/* Per RMID Energy Telemetry specific masks */
#define PMT_CAP_RMID_ENERGY		BIT(18)
#define PMT_CAP_RMID_ACTIVITY		BIT(19)
#define PMT_CAP_RMID_ENERGY_QUAL	BIT(20)

enum pmt_feature_id {
	FEATURE_INVALID			= 0x0,
	FEATURE_PER_CORE_PERF_TELEM	= 0x1,
	FEATURE_PER_CORE_ENV_TELEM	= 0x2,
	FEATURE_PER_RMID_PERF_TELEM	= 0x3,
	FEATURE_ACCEL_TELEM		= 0x4,
	FEATURE_UNCORE_TELEM		= 0x5,
	FEATURE_CRASH_LOG		= 0x6,
	FEATURE_PETE_LOG		= 0x7,
	FEATURE_TPMI_CTRL		= 0x8,
	FEATURE_RESERVED		= 0x9,
	FEATURE_TRACING			= 0xA,
	FEATURE_PER_RMID_ENERGY_TELEM	= 0xB,
	FEATURE_MAX			= 0xB,
};

enum feature_layout {
	LAYOUT_RMID,
	LAYOUT_WATCHER,
	LAYOUT_COMMAND,
	LAYOUT_CAPS_ONLY,
};

struct pmt_cap {
	u32		mask;
	const char	*name;
};

extern const char * const pmt_feature_names[];
extern enum feature_layout feature_layout[];
extern struct pmt_cap pmt_cap_common[];
extern struct pmt_cap pmt_cap_pcpt[];
extern struct pmt_cap *pmt_caps_pcpt[];
extern struct pmt_cap pmt_cap_pcet[];
extern struct pmt_cap *pmt_caps_pcet[];
extern struct pmt_cap pmt_cap_rmid_perf[];
extern struct pmt_cap *pmt_caps_rmid_perf[];
extern struct pmt_cap pmt_cap_accel[];
extern struct pmt_cap *pmt_caps_accel[];
extern struct pmt_cap pmt_cap_uncore[];
extern struct pmt_cap *pmt_caps_uncore[];
extern struct pmt_cap pmt_cap_crashlog[];
extern struct pmt_cap *pmt_caps_crashlog[];
extern struct pmt_cap pmt_cap_pete[];
extern struct pmt_cap *pmt_caps_pete[];
extern struct pmt_cap pmt_cap_tpmi[];
extern struct pmt_cap *pmt_caps_tpmi[];
extern struct pmt_cap pmt_cap_s3m[];
extern struct pmt_cap *pmt_caps_s3m[];
extern struct pmt_cap pmt_cap_tracing[];
extern struct pmt_cap *pmt_caps_tracing[];
extern struct pmt_cap pmt_cap_rmid_energy[];
extern struct pmt_cap *pmt_caps_rmid_energy[];

static inline bool pmt_feature_id_is_valid(enum pmt_feature_id id)
{
	if (id > FEATURE_MAX)
		return false;

	if (id == FEATURE_INVALID || id == FEATURE_RESERVED)
		return false;

	return true;
}
#endif