blob: 0d630bfb16f5fd691719844d405507f7723992c7 [file] [log] [blame]
Elliott Hughes180edef2023-11-02 00:08:05 +00001/*
2 * This file is auto-generated. Modifications will be lost.
3 *
4 * See https://android.googlesource.com/platform/bionic/+/master/libc/kernel/
5 * for more information.
6 */
Christopher Ferris10a76e62022-06-08 13:31:52 -07007#ifndef _UAPI_ASM_X86_AMD_HSMP_H_
8#define _UAPI_ASM_X86_AMD_HSMP_H_
9#include <linux/types.h>
10#pragma pack(4)
11#define HSMP_MAX_MSG_LEN 8
12enum hsmp_message_ids {
13 HSMP_TEST = 1,
14 HSMP_GET_SMU_VER,
15 HSMP_GET_PROTO_VER,
16 HSMP_GET_SOCKET_POWER,
17 HSMP_SET_SOCKET_POWER_LIMIT,
18 HSMP_GET_SOCKET_POWER_LIMIT,
19 HSMP_GET_SOCKET_POWER_LIMIT_MAX,
20 HSMP_SET_BOOST_LIMIT,
21 HSMP_SET_BOOST_LIMIT_SOCKET,
22 HSMP_GET_BOOST_LIMIT,
23 HSMP_GET_PROC_HOT,
24 HSMP_SET_XGMI_LINK_WIDTH,
25 HSMP_SET_DF_PSTATE,
26 HSMP_SET_AUTO_DF_PSTATE,
27 HSMP_GET_FCLK_MCLK,
28 HSMP_GET_CCLK_THROTTLE_LIMIT,
29 HSMP_GET_C0_PERCENT,
30 HSMP_SET_NBIO_DPM_LEVEL,
Christopher Ferris80ae69d2022-08-02 16:32:21 -070031 HSMP_GET_NBIO_DPM_LEVEL,
32 HSMP_GET_DDR_BANDWIDTH,
Christopher Ferris10a76e62022-06-08 13:31:52 -070033 HSMP_GET_TEMP_MONITOR,
Christopher Ferris80ae69d2022-08-02 16:32:21 -070034 HSMP_GET_DIMM_TEMP_RANGE,
35 HSMP_GET_DIMM_POWER,
36 HSMP_GET_DIMM_THERMAL,
37 HSMP_GET_SOCKET_FREQ_LIMIT,
38 HSMP_GET_CCLK_CORE_LIMIT,
39 HSMP_GET_RAILS_SVI,
40 HSMP_GET_SOCKET_FMAX_FMIN,
41 HSMP_GET_IOLINK_BANDWITH,
42 HSMP_GET_XGMI_BANDWITH,
43 HSMP_SET_GMI3_WIDTH,
44 HSMP_SET_PCI_RATE,
45 HSMP_SET_POWER_MODE,
46 HSMP_SET_PSTATE_MAX_MIN,
Christopher Ferris0f795212024-01-17 14:17:28 -080047 HSMP_GET_METRIC_TABLE_VER,
48 HSMP_GET_METRIC_TABLE,
49 HSMP_GET_METRIC_TABLE_DRAM_ADDR,
Christopher Ferris10a76e62022-06-08 13:31:52 -070050 HSMP_MSG_ID_MAX,
51};
52struct hsmp_message {
53 __u32 msg_id;
54 __u16 num_args;
55 __u16 response_sz;
56 __u32 args[HSMP_MAX_MSG_LEN];
57 __u16 sock_ind;
58};
59enum hsmp_msg_type {
60 HSMP_RSVD = - 1,
61 HSMP_SET = 0,
62 HSMP_GET = 1,
63};
Christopher Ferris0f795212024-01-17 14:17:28 -080064enum hsmp_proto_versions {
65 HSMP_PROTO_VER2 = 2,
66 HSMP_PROTO_VER3,
67 HSMP_PROTO_VER4,
68 HSMP_PROTO_VER5,
69 HSMP_PROTO_VER6
70};
Christopher Ferris10a76e62022-06-08 13:31:52 -070071struct hsmp_msg_desc {
72 int num_args;
73 int response_sz;
74 enum hsmp_msg_type type;
75};
76static const struct hsmp_msg_desc hsmp_msg_desc_table[] = {
77 {
78 0, 0, HSMP_RSVD
79 }
80 , {
81 1, 1, HSMP_GET
82 }
83 , {
84 0, 1, HSMP_GET
85 }
86 , {
87 0, 1, HSMP_GET
88 }
89 , {
90 0, 1, HSMP_GET
91 }
92 , {
93 1, 0, HSMP_SET
94 }
95 , {
96 0, 1, HSMP_GET
97 }
98 , {
99 0, 1, HSMP_GET
100 }
101 , {
102 1, 0, HSMP_SET
103 }
104 , {
105 1, 0, HSMP_SET
106 }
107 , {
108 1, 1, HSMP_GET
109 }
110 , {
111 0, 1, HSMP_GET
112 }
113 , {
114 1, 0, HSMP_SET
115 }
116 , {
117 1, 0, HSMP_SET
118 }
119 , {
120 0, 0, HSMP_SET
121 }
122 , {
123 0, 2, HSMP_GET
124 }
125 , {
126 0, 1, HSMP_GET
127 }
128 , {
129 0, 1, HSMP_GET
130 }
131 , {
132 1, 0, HSMP_SET
133 }
134 , {
Christopher Ferris80ae69d2022-08-02 16:32:21 -0700135 1, 1, HSMP_GET
Christopher Ferris10a76e62022-06-08 13:31:52 -0700136 }
137 , {
138 0, 1, HSMP_GET
139 }
140 , {
141 0, 1, HSMP_GET
142 }
Christopher Ferris80ae69d2022-08-02 16:32:21 -0700143 , {
144 1, 1, HSMP_GET
145 }
146 , {
147 1, 1, HSMP_GET
148 }
149 , {
150 1, 1, HSMP_GET
151 }
152 , {
153 0, 1, HSMP_GET
154 }
155 , {
156 1, 1, HSMP_GET
157 }
158 , {
159 0, 1, HSMP_GET
160 }
161 , {
162 0, 1, HSMP_GET
163 }
164 , {
165 1, 1, HSMP_GET
166 }
167 , {
168 1, 1, HSMP_GET
169 }
170 , {
171 1, 0, HSMP_SET
172 }
173 , {
174 1, 1, HSMP_SET
175 }
176 , {
177 1, 0, HSMP_SET
178 }
179 , {
180 1, 0, HSMP_SET
181 }
Christopher Ferris0f795212024-01-17 14:17:28 -0800182 , {
183 0, 1, HSMP_GET
184 }
185 , {
186 0, 0, HSMP_GET
187 }
188 , {
189 0, 2, HSMP_GET
190 }
Christopher Ferris10a76e62022-06-08 13:31:52 -0700191 ,
192};
Christopher Ferris0f795212024-01-17 14:17:28 -0800193struct hsmp_metric_table {
194 __u32 accumulation_counter;
195 __u32 max_socket_temperature;
196 __u32 max_vr_temperature;
197 __u32 max_hbm_temperature;
198 __u64 max_socket_temperature_acc;
199 __u64 max_vr_temperature_acc;
200 __u64 max_hbm_temperature_acc;
201 __u32 socket_power_limit;
202 __u32 max_socket_power_limit;
203 __u32 socket_power;
204 __u64 timestamp;
205 __u64 socket_energy_acc;
206 __u64 ccd_energy_acc;
207 __u64 xcd_energy_acc;
208 __u64 aid_energy_acc;
209 __u64 hbm_energy_acc;
210 __u32 cclk_frequency_limit;
211 __u32 gfxclk_frequency_limit;
212 __u32 fclk_frequency;
213 __u32 uclk_frequency;
214 __u32 socclk_frequency[4];
215 __u32 vclk_frequency[4];
216 __u32 dclk_frequency[4];
217 __u32 lclk_frequency[4];
218 __u64 gfxclk_frequency_acc[8];
219 __u64 cclk_frequency_acc[96];
220 __u32 max_cclk_frequency;
221 __u32 min_cclk_frequency;
222 __u32 max_gfxclk_frequency;
223 __u32 min_gfxclk_frequency;
224 __u32 fclk_frequency_table[4];
225 __u32 uclk_frequency_table[4];
226 __u32 socclk_frequency_table[4];
227 __u32 vclk_frequency_table[4];
228 __u32 dclk_frequency_table[4];
229 __u32 lclk_frequency_table[4];
230 __u32 max_lclk_dpm_range;
231 __u32 min_lclk_dpm_range;
232 __u32 xgmi_width;
233 __u32 xgmi_bitrate;
234 __u64 xgmi_read_bandwidth_acc[8];
235 __u64 xgmi_write_bandwidth_acc[8];
236 __u32 socket_c0_residency;
237 __u32 socket_gfx_busy;
238 __u32 dram_bandwidth_utilization;
239 __u64 socket_c0_residency_acc;
240 __u64 socket_gfx_busy_acc;
241 __u64 dram_bandwidth_acc;
242 __u32 max_dram_bandwidth;
243 __u64 dram_bandwidth_utilization_acc;
244 __u64 pcie_bandwidth_acc[4];
245 __u32 prochot_residency_acc;
246 __u32 ppt_residency_acc;
247 __u32 socket_thm_residency_acc;
248 __u32 vr_thm_residency_acc;
249 __u32 hbm_thm_residency_acc;
250 __u32 spare;
251 __u32 gfxclk_frequency[8];
252};
Christopher Ferris10a76e62022-06-08 13:31:52 -0700253#pragma pack()
254#define HSMP_BASE_IOCTL_NR 0xF8
255#define HSMP_IOCTL_CMD _IOWR(HSMP_BASE_IOCTL_NR, 0, struct hsmp_message)
256#endif