File Index
Files and directories
Sign in
FILE

intel_pmt_features.h

File preview with syntax highlighting.

linux-6.19.14/include/linux/intel_pmt_features.h C
  1/* SPDX-License-Identifier: GPL-2.0 */
  2#ifndef _FEATURES_H
  3#define _FEATURES_H
  4
  5#include <linux/bits.h>
  6#include <linux/types.h>
  7
  8/* Common masks */
  9#define PMT_CAP_TELEM			BIT(0)
 10#define PMT_CAP_WATCHER			BIT(1)
 11#define PMT_CAP_CRASHLOG		BIT(2)
 12#define PMT_CAP_STREAMING		BIT(3)
 13#define PMT_CAP_THRESHOLD		BIT(4)
 14#define PMT_CAP_WINDOW			BIT(5)
 15#define PMT_CAP_CONFIG			BIT(6)
 16#define PMT_CAP_TRACING			BIT(7)
 17#define PMT_CAP_INBAND			BIT(8)
 18#define PMT_CAP_OOB			BIT(9)
 19#define PMT_CAP_SECURED_CHAN		BIT(10)
 20
 21#define PMT_CAP_PMT_SP			BIT(11)
 22#define PMT_CAP_PMT_SP_POLICY		GENMASK(17, 12)
 23
 24/* Per Core Performance Telemetry (PCPT) specific masks */
 25#define PMT_CAP_PCPT_CORE_PERF		BIT(18)
 26#define PMT_CAP_PCPT_CORE_C0_RES	BIT(19)
 27#define PMT_CAP_PCPT_CORE_ACTIVITY	BIT(20)
 28#define PMT_CAP_PCPT_CACHE_PERF		BIT(21)
 29#define PMT_CAP_PCPT_QUALITY_TELEM	BIT(22)
 30
 31/* Per Core Environmental Telemetry (PCET) specific masks */
 32#define PMT_CAP_PCET_WORKPOINT_HIST	BIT(18)
 33#define PMT_CAP_PCET_CORE_CURR_TEMP	BIT(19)
 34#define PMT_CAP_PCET_CORE_INST_RES	BIT(20)
 35#define PMT_CAP_PCET_QUALITY_TELEM	BIT(21)	/* Same as PMT_CAP_PCPT */
 36#define PMT_CAP_PCET_CORE_CDYN_LVL	BIT(22)
 37#define PMT_CAP_PCET_CORE_STRESS_LVL	BIT(23)
 38#define PMT_CAP_PCET_CORE_DAS		BIT(24)
 39#define PMT_CAP_PCET_FIVR_HEALTH	BIT(25)
 40#define PMT_CAP_PCET_ENERGY		BIT(26)
 41#define PMT_CAP_PCET_PEM_STATUS		BIT(27)
 42#define PMT_CAP_PCET_CORE_C_STATE	BIT(28)
 43
 44/* Per RMID Performance Telemetry specific masks */
 45#define PMT_CAP_RMID_CORES_PERF		BIT(18)
 46#define PMT_CAP_RMID_CACHE_PERF		BIT(19)
 47#define PMT_CAP_RMID_PERF_QUAL		BIT(20)
 48
 49/* Accelerator Telemetry specific masks */
 50#define PMT_CAP_ACCEL_CPM_TELEM		BIT(18)
 51#define PMT_CAP_ACCEL_TIP_TELEM		BIT(19)
 52
 53/* Uncore Telemetry specific masks */
 54#define PMT_CAP_UNCORE_IO_CA_TELEM	BIT(18)
 55#define PMT_CAP_UNCORE_RMID_TELEM	BIT(19)
 56#define PMT_CAP_UNCORE_D2D_ULA_TELEM	BIT(20)
 57#define PMT_CAP_UNCORE_PKGC_TELEM	BIT(21)
 58
 59/* Crash Log specific masks */
 60#define PMT_CAP_CRASHLOG_MAN_TRIG	BIT(11)
 61#define PMT_CAP_CRASHLOG_CORE		BIT(12)
 62#define PMT_CAP_CRASHLOG_UNCORE		BIT(13)
 63#define PMT_CAP_CRASHLOG_TOR		BIT(14)
 64#define PMT_CAP_CRASHLOG_S3M		BIT(15)
 65#define PMT_CAP_CRASHLOG_PERSISTENCY	BIT(16)
 66#define PMT_CAP_CRASHLOG_CLIP_GPIO	BIT(17)
 67#define PMT_CAP_CRASHLOG_PRE_RESET	BIT(18)
 68#define PMT_CAP_CRASHLOG_POST_RESET	BIT(19)
 69
 70/* PeTe Log specific masks */
 71#define PMT_CAP_PETE_MAN_TRIG		BIT(11)
 72#define PMT_CAP_PETE_ENCRYPTION		BIT(12)
 73#define PMT_CAP_PETE_PERSISTENCY	BIT(13)
 74#define PMT_CAP_PETE_REQ_TOKENS		BIT(14)
 75#define PMT_CAP_PETE_PROD_ENABLED	BIT(15)
 76#define PMT_CAP_PETE_DEBUG_ENABLED	BIT(16)
 77
 78/* TPMI control specific masks */
 79#define PMT_CAP_TPMI_MAILBOX		BIT(11)
 80#define PMT_CAP_TPMI_LOCK		BIT(12)
 81
 82/* Tracing specific masks */
 83#define PMT_CAP_TRACE_SRAR		BIT(11)
 84#define PMT_CAP_TRACE_CORRECTABLE	BIT(12)
 85#define PMT_CAP_TRACE_MCTP		BIT(13)
 86#define PMT_CAP_TRACE_MRT		BIT(14)
 87
 88/* Per RMID Energy Telemetry specific masks */
 89#define PMT_CAP_RMID_ENERGY		BIT(18)
 90#define PMT_CAP_RMID_ACTIVITY		BIT(19)
 91#define PMT_CAP_RMID_ENERGY_QUAL	BIT(20)
 92
 93enum pmt_feature_id {
 94	FEATURE_INVALID			= 0x0,
 95	FEATURE_PER_CORE_PERF_TELEM	= 0x1,
 96	FEATURE_PER_CORE_ENV_TELEM	= 0x2,
 97	FEATURE_PER_RMID_PERF_TELEM	= 0x3,
 98	FEATURE_ACCEL_TELEM		= 0x4,
 99	FEATURE_UNCORE_TELEM		= 0x5,
100	FEATURE_CRASH_LOG		= 0x6,
101	FEATURE_PETE_LOG		= 0x7,
102	FEATURE_TPMI_CTRL		= 0x8,
103	FEATURE_RESERVED		= 0x9,
104	FEATURE_TRACING			= 0xA,
105	FEATURE_PER_RMID_ENERGY_TELEM	= 0xB,
106	FEATURE_MAX			= 0xB,
107};
108
109enum feature_layout {
110	LAYOUT_RMID,
111	LAYOUT_WATCHER,
112	LAYOUT_COMMAND,
113	LAYOUT_CAPS_ONLY,
114};
115
116struct pmt_cap {
117	u32		mask;
118	const char	*name;
119};
120
121extern const char * const pmt_feature_names[];
122extern enum feature_layout feature_layout[];
123extern struct pmt_cap pmt_cap_common[];
124extern struct pmt_cap pmt_cap_pcpt[];
125extern struct pmt_cap *pmt_caps_pcpt[];
126extern struct pmt_cap pmt_cap_pcet[];
127extern struct pmt_cap *pmt_caps_pcet[];
128extern struct pmt_cap pmt_cap_rmid_perf[];
129extern struct pmt_cap *pmt_caps_rmid_perf[];
130extern struct pmt_cap pmt_cap_accel[];
131extern struct pmt_cap *pmt_caps_accel[];
132extern struct pmt_cap pmt_cap_uncore[];
133extern struct pmt_cap *pmt_caps_uncore[];
134extern struct pmt_cap pmt_cap_crashlog[];
135extern struct pmt_cap *pmt_caps_crashlog[];
136extern struct pmt_cap pmt_cap_pete[];
137extern struct pmt_cap *pmt_caps_pete[];
138extern struct pmt_cap pmt_cap_tpmi[];
139extern struct pmt_cap *pmt_caps_tpmi[];
140extern struct pmt_cap pmt_cap_s3m[];
141extern struct pmt_cap *pmt_caps_s3m[];
142extern struct pmt_cap pmt_cap_tracing[];
143extern struct pmt_cap *pmt_caps_tracing[];
144extern struct pmt_cap pmt_cap_rmid_energy[];
145extern struct pmt_cap *pmt_caps_rmid_energy[];
146
147static inline bool pmt_feature_id_is_valid(enum pmt_feature_id id)
148{
149	if (id > FEATURE_MAX)
150		return false;
151
152	if (id == FEATURE_INVALID || id == FEATURE_RESERVED)
153		return false;
154
155	return true;
156}
157#endif
~/ Read-only file preview.