Path: blob/master/drivers/gpu/drm/amd/include/kgd_pp_interface.h
49410 views
/*1* Copyright 2017 Advanced Micro Devices, Inc.2*3* Permission is hereby granted, free of charge, to any person obtaining a4* copy of this software and associated documentation files (the "Software"),5* to deal in the Software without restriction, including without limitation6* the rights to use, copy, modify, merge, publish, distribute, sublicense,7* and/or sell copies of the Software, and to permit persons to whom the8* Software is furnished to do so, subject to the following conditions:9*10* The above copyright notice and this permission notice shall be included in11* all copies or substantial portions of the Software.12*13* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR14* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,15* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL16* THE COPYRIGHT HOLDER(S) OR AUTHOR(S) BE LIABLE FOR ANY CLAIM, DAMAGES OR17* OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,18* ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR19* OTHER DEALINGS IN THE SOFTWARE.20*21*/2223#ifndef __KGD_PP_INTERFACE_H__24#define __KGD_PP_INTERFACE_H__2526extern const struct amdgpu_ip_block_version pp_smu_ip_block;27extern const struct amdgpu_ip_block_version smu_v11_0_ip_block;28extern const struct amdgpu_ip_block_version smu_v12_0_ip_block;29extern const struct amdgpu_ip_block_version smu_v13_0_ip_block;30extern const struct amdgpu_ip_block_version smu_v14_0_ip_block;3132enum smu_temp_metric_type {33SMU_TEMP_METRIC_BASEBOARD,34SMU_TEMP_METRIC_GPUBOARD,35SMU_TEMP_METRIC_MAX,36};3738enum smu_event_type {39SMU_EVENT_RESET_COMPLETE = 0,40};4142struct amd_vce_state {43/* vce clocks */44u32 evclk;45u32 ecclk;46/* gpu clocks */47u32 sclk;48u32 mclk;49u8 clk_idx;50u8 pstate;51};525354enum amd_dpm_forced_level {55AMD_DPM_FORCED_LEVEL_AUTO = 0x1,56AMD_DPM_FORCED_LEVEL_MANUAL = 0x2,57AMD_DPM_FORCED_LEVEL_LOW = 0x4,58AMD_DPM_FORCED_LEVEL_HIGH = 0x8,59AMD_DPM_FORCED_LEVEL_PROFILE_STANDARD = 0x10,60AMD_DPM_FORCED_LEVEL_PROFILE_MIN_SCLK = 0x20,61AMD_DPM_FORCED_LEVEL_PROFILE_MIN_MCLK = 0x40,62AMD_DPM_FORCED_LEVEL_PROFILE_PEAK = 0x80,63AMD_DPM_FORCED_LEVEL_PROFILE_EXIT = 0x100,64AMD_DPM_FORCED_LEVEL_PERF_DETERMINISM = 0x200,65};6667enum amd_pm_state_type {68/* not used for dpm */69POWER_STATE_TYPE_DEFAULT,70POWER_STATE_TYPE_POWERSAVE,71/* user selectable states */72POWER_STATE_TYPE_BATTERY,73POWER_STATE_TYPE_BALANCED,74POWER_STATE_TYPE_PERFORMANCE,75/* internal states */76POWER_STATE_TYPE_INTERNAL_UVD,77POWER_STATE_TYPE_INTERNAL_UVD_SD,78POWER_STATE_TYPE_INTERNAL_UVD_HD,79POWER_STATE_TYPE_INTERNAL_UVD_HD2,80POWER_STATE_TYPE_INTERNAL_UVD_MVC,81POWER_STATE_TYPE_INTERNAL_BOOT,82POWER_STATE_TYPE_INTERNAL_THERMAL,83POWER_STATE_TYPE_INTERNAL_ACPI,84POWER_STATE_TYPE_INTERNAL_ULV,85POWER_STATE_TYPE_INTERNAL_3DPERF,86};8788#define AMD_MAX_VCE_LEVELS 68990enum amd_vce_level {91AMD_VCE_LEVEL_AC_ALL = 0, /* AC, All cases */92AMD_VCE_LEVEL_DC_EE = 1, /* DC, entropy encoding */93AMD_VCE_LEVEL_DC_LL_LOW = 2, /* DC, low latency queue, res <= 720 */94AMD_VCE_LEVEL_DC_LL_HIGH = 3, /* DC, low latency queue, 1080 >= res > 720 */95AMD_VCE_LEVEL_DC_GP_LOW = 4, /* DC, general purpose queue, res <= 720 */96AMD_VCE_LEVEL_DC_GP_HIGH = 5, /* DC, general purpose queue, 1080 >= res > 720 */97};9899enum amd_fan_ctrl_mode {100AMD_FAN_CTRL_NONE = 0,101AMD_FAN_CTRL_MANUAL = 1,102AMD_FAN_CTRL_AUTO = 2,103};104105enum pp_clock_type {106PP_SCLK,107PP_MCLK,108PP_PCIE,109PP_SOCCLK,110PP_FCLK,111PP_DCEFCLK,112PP_VCLK,113PP_VCLK1,114PP_DCLK,115PP_DCLK1,116PP_ISPICLK,117PP_ISPXCLK,118OD_SCLK,119OD_MCLK,120OD_VDDC_CURVE,121OD_RANGE,122OD_VDDGFX_OFFSET,123OD_CCLK,124OD_FAN_CURVE,125OD_ACOUSTIC_LIMIT,126OD_ACOUSTIC_TARGET,127OD_FAN_TARGET_TEMPERATURE,128OD_FAN_MINIMUM_PWM,129OD_FAN_ZERO_RPM_ENABLE,130OD_FAN_ZERO_RPM_STOP_TEMP,131};132133enum amd_pp_sensors {134AMDGPU_PP_SENSOR_GFX_SCLK = 0,135AMDGPU_PP_SENSOR_CPU_CLK,136AMDGPU_PP_SENSOR_VDDNB,137AMDGPU_PP_SENSOR_VDDGFX,138AMDGPU_PP_SENSOR_VDDBOARD,139AMDGPU_PP_SENSOR_UVD_VCLK,140AMDGPU_PP_SENSOR_UVD_DCLK,141AMDGPU_PP_SENSOR_VCE_ECCLK,142AMDGPU_PP_SENSOR_GPU_LOAD,143AMDGPU_PP_SENSOR_MEM_LOAD,144AMDGPU_PP_SENSOR_GFX_MCLK,145AMDGPU_PP_SENSOR_GPU_TEMP,146AMDGPU_PP_SENSOR_EDGE_TEMP = AMDGPU_PP_SENSOR_GPU_TEMP,147AMDGPU_PP_SENSOR_HOTSPOT_TEMP,148AMDGPU_PP_SENSOR_MEM_TEMP,149AMDGPU_PP_SENSOR_VCE_POWER,150AMDGPU_PP_SENSOR_UVD_POWER,151AMDGPU_PP_SENSOR_GPU_AVG_POWER,152AMDGPU_PP_SENSOR_GPU_INPUT_POWER,153AMDGPU_PP_SENSOR_SS_APU_SHARE,154AMDGPU_PP_SENSOR_SS_DGPU_SHARE,155AMDGPU_PP_SENSOR_STABLE_PSTATE_SCLK,156AMDGPU_PP_SENSOR_STABLE_PSTATE_MCLK,157AMDGPU_PP_SENSOR_ENABLED_SMC_FEATURES_MASK,158AMDGPU_PP_SENSOR_MIN_FAN_RPM,159AMDGPU_PP_SENSOR_MAX_FAN_RPM,160AMDGPU_PP_SENSOR_VCN_POWER_STATE,161AMDGPU_PP_SENSOR_PEAK_PSTATE_SCLK,162AMDGPU_PP_SENSOR_PEAK_PSTATE_MCLK,163AMDGPU_PP_SENSOR_VCN_LOAD,164AMDGPU_PP_SENSOR_NODEPOWERLIMIT,165AMDGPU_PP_SENSOR_NODEPOWER,166AMDGPU_PP_SENSOR_GPPTRESIDENCY,167AMDGPU_PP_SENSOR_MAXNODEPOWERLIMIT,168};169170enum amd_pp_task {171AMD_PP_TASK_DISPLAY_CONFIG_CHANGE,172AMD_PP_TASK_ENABLE_USER_STATE,173AMD_PP_TASK_READJUST_POWER_STATE,174AMD_PP_TASK_COMPLETE_INIT,175AMD_PP_TASK_MAX176};177178enum PP_SMC_POWER_PROFILE {179PP_SMC_POWER_PROFILE_UNKNOWN = -1,180PP_SMC_POWER_PROFILE_BOOTUP_DEFAULT = 0x0,181PP_SMC_POWER_PROFILE_FULLSCREEN3D = 0x1,182PP_SMC_POWER_PROFILE_POWERSAVING = 0x2,183PP_SMC_POWER_PROFILE_VIDEO = 0x3,184PP_SMC_POWER_PROFILE_VR = 0x4,185PP_SMC_POWER_PROFILE_COMPUTE = 0x5,186PP_SMC_POWER_PROFILE_CUSTOM = 0x6,187PP_SMC_POWER_PROFILE_WINDOW3D = 0x7,188PP_SMC_POWER_PROFILE_CAPPED = 0x8,189PP_SMC_POWER_PROFILE_UNCAPPED = 0x9,190PP_SMC_POWER_PROFILE_COUNT,191};192193extern const char * const amdgpu_pp_profile_name[PP_SMC_POWER_PROFILE_COUNT];194195196197enum {198PP_GROUP_UNKNOWN = 0,199PP_GROUP_GFX = 1,200PP_GROUP_SYS,201PP_GROUP_MAX202};203204enum PP_OD_DPM_TABLE_COMMAND {205PP_OD_EDIT_SCLK_VDDC_TABLE,206PP_OD_EDIT_MCLK_VDDC_TABLE,207PP_OD_EDIT_CCLK_VDDC_TABLE,208PP_OD_EDIT_VDDC_CURVE,209PP_OD_RESTORE_DEFAULT_TABLE,210PP_OD_COMMIT_DPM_TABLE,211PP_OD_EDIT_VDDGFX_OFFSET,212PP_OD_EDIT_FAN_CURVE,213PP_OD_EDIT_ACOUSTIC_LIMIT,214PP_OD_EDIT_ACOUSTIC_TARGET,215PP_OD_EDIT_FAN_TARGET_TEMPERATURE,216PP_OD_EDIT_FAN_MINIMUM_PWM,217PP_OD_EDIT_FAN_ZERO_RPM_ENABLE,218PP_OD_EDIT_FAN_ZERO_RPM_STOP_TEMP,219};220221struct pp_states_info {222uint32_t nums;223uint32_t states[16];224};225226enum PP_HWMON_TEMP {227PP_TEMP_EDGE = 0,228PP_TEMP_JUNCTION,229PP_TEMP_MEM,230PP_TEMP_MAX231};232233enum pp_mp1_state {234PP_MP1_STATE_NONE,235PP_MP1_STATE_SHUTDOWN,236PP_MP1_STATE_UNLOAD,237PP_MP1_STATE_RESET,238PP_MP1_STATE_FLR,239};240241enum pp_df_cstate {242DF_CSTATE_DISALLOW = 0,243DF_CSTATE_ALLOW,244};245246/**247* DOC: amdgpu_pp_power248*249* APU power is managed to system-level requirements through the PPT250* (package power tracking) feature. PPT is intended to limit power to the251* requirements of the power source and could be dynamically updated to252* maximize APU performance within the system power budget.253*254* Two types of power measurement can be requested, where supported, with255* :c:type:`enum pp_power_type <pp_power_type>`.256*/257258/**259* enum pp_power_limit_level - Used to query the power limits260*261* @PP_PWR_LIMIT_MIN: Minimum Power Limit262* @PP_PWR_LIMIT_CURRENT: Current Power Limit263* @PP_PWR_LIMIT_DEFAULT: Default Power Limit264* @PP_PWR_LIMIT_MAX: Maximum Power Limit265*/266enum pp_power_limit_level {267PP_PWR_LIMIT_MIN = -1,268PP_PWR_LIMIT_CURRENT,269PP_PWR_LIMIT_DEFAULT,270PP_PWR_LIMIT_MAX,271};272273/**274* enum pp_power_type - Used to specify the type of the requested power275*276* @PP_PWR_TYPE_SUSTAINED: manages the configurable, thermally significant277* moving average of APU power (default ~5000 ms).278* @PP_PWR_TYPE_FAST: manages the ~10 ms moving average of APU power,279* where supported.280*/281enum pp_power_type {282PP_PWR_TYPE_SUSTAINED,283PP_PWR_TYPE_FAST,284};285286enum pp_xgmi_plpd_mode {287XGMI_PLPD_NONE = -1,288XGMI_PLPD_DISALLOW,289XGMI_PLPD_DEFAULT,290XGMI_PLPD_OPTIMIZED,291XGMI_PLPD_COUNT,292};293294enum pp_pm_policy {295PP_PM_POLICY_NONE = -1,296PP_PM_POLICY_SOC_PSTATE = 0,297PP_PM_POLICY_XGMI_PLPD,298PP_PM_POLICY_NUM,299};300301enum pp_policy_soc_pstate {302SOC_PSTATE_DEFAULT = 0,303SOC_PSTATE_0,304SOC_PSTATE_1,305SOC_PSTATE_2,306SOC_PSTAT_COUNT,307};308309#define PP_POLICY_MAX_LEVELS 5310311#define PP_GROUP_MASK 0xF0000000312#define PP_GROUP_SHIFT 28313314#define PP_BLOCK_MASK 0x0FFFFF00315#define PP_BLOCK_SHIFT 8316317#define PP_BLOCK_GFX_CG 0x01318#define PP_BLOCK_GFX_MG 0x02319#define PP_BLOCK_GFX_3D 0x04320#define PP_BLOCK_GFX_RLC 0x08321#define PP_BLOCK_GFX_CP 0x10322#define PP_BLOCK_SYS_BIF 0x01323#define PP_BLOCK_SYS_MC 0x02324#define PP_BLOCK_SYS_ROM 0x04325#define PP_BLOCK_SYS_DRM 0x08326#define PP_BLOCK_SYS_HDP 0x10327#define PP_BLOCK_SYS_SDMA 0x20328329#define PP_STATE_MASK 0x0000000F330#define PP_STATE_SHIFT 0331#define PP_STATE_SUPPORT_MASK 0x000000F0332#define PP_STATE_SUPPORT_SHIFT 0333334#define PP_STATE_CG 0x01335#define PP_STATE_LS 0x02336#define PP_STATE_DS 0x04337#define PP_STATE_SD 0x08338#define PP_STATE_SUPPORT_CG 0x10339#define PP_STATE_SUPPORT_LS 0x20340#define PP_STATE_SUPPORT_DS 0x40341#define PP_STATE_SUPPORT_SD 0x80342343#define PP_CG_MSG_ID(group, block, support, state) \344((group) << PP_GROUP_SHIFT | (block) << PP_BLOCK_SHIFT | \345(support) << PP_STATE_SUPPORT_SHIFT | (state) << PP_STATE_SHIFT)346347#define XGMI_MODE_PSTATE_D3 0348#define XGMI_MODE_PSTATE_D0 1349350#define NUM_HBM_INSTANCES 4351#define NUM_XGMI_LINKS 8352#define MAX_GFX_CLKS 8353#define MAX_CLKS 4354#define NUM_VCN 4355#define NUM_JPEG_ENG 32356#define NUM_JPEG_ENG_V1 40357#define MAX_XCC 8358#define NUM_XCP 8359struct seq_file;360enum amd_pp_clock_type;361struct amd_pp_simple_clock_info;362struct amd_pp_display_configuration;363struct amd_pp_clock_info;364struct pp_display_clock_request;365struct pp_clock_levels_with_voltage;366struct pp_clock_levels_with_latency;367struct amd_pp_clocks;368struct pp_smu_wm_range_sets;369struct pp_smu_nv_clock_table;370struct dpm_clocks;371372struct amdgpu_xcp_metrics {373/* Utilization Instantaneous (%) */374uint32_t gfx_busy_inst[MAX_XCC];375uint16_t jpeg_busy[NUM_JPEG_ENG];376uint16_t vcn_busy[NUM_VCN];377/* Utilization Accumulated (%) */378uint64_t gfx_busy_acc[MAX_XCC];379};380381struct amdgpu_xcp_metrics_v1_1 {382/* Utilization Instantaneous (%) */383uint32_t gfx_busy_inst[MAX_XCC];384uint16_t jpeg_busy[NUM_JPEG_ENG];385uint16_t vcn_busy[NUM_VCN];386/* Utilization Accumulated (%) */387uint64_t gfx_busy_acc[MAX_XCC];388/* Total App Clock Counter Accumulated */389uint64_t gfx_below_host_limit_acc[MAX_XCC];390};391392struct amdgpu_xcp_metrics_v1_2 {393/* Utilization Instantaneous (%) */394uint32_t gfx_busy_inst[MAX_XCC];395uint16_t jpeg_busy[NUM_JPEG_ENG_V1];396uint16_t vcn_busy[NUM_VCN];397/* Utilization Accumulated (%) */398uint64_t gfx_busy_acc[MAX_XCC];399/* Total App Clock Counter Accumulated */400uint64_t gfx_below_host_limit_ppt_acc[MAX_XCC];401uint64_t gfx_below_host_limit_thm_acc[MAX_XCC];402uint64_t gfx_low_utilization_acc[MAX_XCC];403uint64_t gfx_below_host_limit_total_acc[MAX_XCC];404};405406struct amd_pm_funcs {407/* export for dpm on ci and si */408int (*pre_set_power_state)(void *handle);409int (*set_power_state)(void *handle);410void (*post_set_power_state)(void *handle);411void (*display_configuration_changed)(void *handle);412void (*print_power_state)(void *handle, void *ps);413bool (*vblank_too_short)(void *handle);414void (*enable_bapm)(void *handle, bool enable);415int (*check_state_equal)(void *handle,416void *cps,417void *rps,418bool *equal);419/* export for sysfs */420int (*set_fan_control_mode)(void *handle, u32 mode);421int (*get_fan_control_mode)(void *handle, u32 *fan_mode);422int (*set_fan_speed_pwm)(void *handle, u32 speed);423int (*get_fan_speed_pwm)(void *handle, u32 *speed);424int (*force_clock_level)(void *handle, enum pp_clock_type type, uint32_t mask);425int (*print_clock_levels)(void *handle, enum pp_clock_type type, char *buf);426int (*emit_clock_levels)(void *handle, enum pp_clock_type type, char *buf, int *offset);427int (*force_performance_level)(void *handle, enum amd_dpm_forced_level level);428int (*get_sclk_od)(void *handle);429int (*set_sclk_od)(void *handle, uint32_t value);430int (*get_mclk_od)(void *handle);431int (*set_mclk_od)(void *handle, uint32_t value);432int (*read_sensor)(void *handle, int idx, void *value, int *size);433int (*get_apu_thermal_limit)(void *handle, uint32_t *limit);434int (*set_apu_thermal_limit)(void *handle, uint32_t limit);435enum amd_dpm_forced_level (*get_performance_level)(void *handle);436enum amd_pm_state_type (*get_current_power_state)(void *handle);437int (*get_fan_speed_rpm)(void *handle, uint32_t *rpm);438int (*set_fan_speed_rpm)(void *handle, uint32_t rpm);439int (*get_pp_num_states)(void *handle, struct pp_states_info *data);440int (*get_pp_table)(void *handle, char **table);441int (*set_pp_table)(void *handle, const char *buf, size_t size);442void (*debugfs_print_current_performance_level)(void *handle, struct seq_file *m);443int (*switch_power_profile)(void *handle, enum PP_SMC_POWER_PROFILE type, bool en);444int (*pause_power_profile)(void *handle, bool pause);445/* export to amdgpu */446struct amd_vce_state *(*get_vce_clock_state)(void *handle, u32 idx);447int (*dispatch_tasks)(void *handle, enum amd_pp_task task_id,448enum amd_pm_state_type *user_state);449int (*load_firmware)(void *handle);450int (*wait_for_fw_loading_complete)(void *handle);451int (*set_powergating_by_smu)(void *handle,452uint32_t block_type,453bool gate,454int inst);455int (*set_clockgating_by_smu)(void *handle, uint32_t msg_id);456int (*set_power_limit)(void *handle, uint32_t limit_type, uint32_t n);457int (*get_power_limit)(void *handle, uint32_t *limit,458enum pp_power_limit_level pp_limit_level,459enum pp_power_type power_type);460int (*get_power_profile_mode)(void *handle, char *buf);461int (*set_power_profile_mode)(void *handle, long *input, uint32_t size);462int (*set_fine_grain_clk_vol)(void *handle, uint32_t type, long *input, uint32_t size);463int (*odn_edit_dpm_table)(void *handle, enum PP_OD_DPM_TABLE_COMMAND type,464long *input, uint32_t size);465int (*set_mp1_state)(void *handle, enum pp_mp1_state mp1_state);466int (*smu_i2c_bus_access)(void *handle, bool acquire);467int (*gfx_state_change_set)(void *handle, uint32_t state);468/* export to DC */469u32 (*get_sclk)(void *handle, bool low);470u32 (*get_mclk)(void *handle, bool low);471int (*display_configuration_change)(void *handle,472const struct amd_pp_display_configuration *input);473int (*get_display_power_level)(void *handle,474struct amd_pp_simple_clock_info *output);475int (*get_current_clocks)(void *handle,476struct amd_pp_clock_info *clocks);477int (*get_clock_by_type)(void *handle,478enum amd_pp_clock_type type,479struct amd_pp_clocks *clocks);480int (*get_clock_by_type_with_latency)(void *handle,481enum amd_pp_clock_type type,482struct pp_clock_levels_with_latency *clocks);483int (*get_clock_by_type_with_voltage)(void *handle,484enum amd_pp_clock_type type,485struct pp_clock_levels_with_voltage *clocks);486int (*set_watermarks_for_clocks_ranges)(void *handle,487void *clock_ranges);488int (*display_clock_voltage_request)(void *handle,489struct pp_display_clock_request *clock);490int (*get_display_mode_validation_clocks)(void *handle,491struct amd_pp_simple_clock_info *clocks);492int (*notify_smu_enable_pwe)(void *handle);493int (*enable_mgpu_fan_boost)(void *handle);494int (*set_active_display_count)(void *handle, uint32_t count);495int (*set_hard_min_dcefclk_by_freq)(void *handle, uint32_t clock);496int (*set_hard_min_fclk_by_freq)(void *handle, uint32_t clock);497int (*set_min_deep_sleep_dcefclk)(void *handle, uint32_t clock);498int (*get_asic_baco_capability)(void *handle);499int (*get_asic_baco_state)(void *handle, int *state);500int (*set_asic_baco_state)(void *handle, int state);501int (*get_ppfeature_status)(void *handle, char *buf);502int (*set_ppfeature_status)(void *handle, uint64_t ppfeature_masks);503int (*asic_reset_mode_2)(void *handle);504int (*asic_reset_enable_gfx_features)(void *handle);505int (*set_df_cstate)(void *handle, enum pp_df_cstate state);506int (*set_xgmi_pstate)(void *handle, uint32_t pstate);507ssize_t (*get_gpu_metrics)(void *handle, void **table);508ssize_t (*get_temp_metrics)(void *handle, enum smu_temp_metric_type type, void *table);509bool (*temp_metrics_is_supported)(void *handle, enum smu_temp_metric_type type);510ssize_t (*get_xcp_metrics)(void *handle, int xcp_id, void *table);511ssize_t (*get_pm_metrics)(void *handle, void *pmmetrics, size_t size);512int (*set_watermarks_for_clock_ranges)(void *handle,513struct pp_smu_wm_range_sets *ranges);514int (*display_disable_memory_clock_switch)(void *handle,515bool disable_memory_clock_switch);516int (*get_max_sustainable_clocks_by_dc)(void *handle,517struct pp_smu_nv_clock_table *max_clocks);518int (*get_uclk_dpm_states)(void *handle,519unsigned int *clock_values_in_khz,520unsigned int *num_states);521int (*get_dpm_clock_table)(void *handle,522struct dpm_clocks *clock_table);523int (*get_smu_prv_buf_details)(void *handle, void **addr, size_t *size);524void (*pm_compute_clocks)(void *handle);525int (*notify_rlc_state)(void *handle, bool en);526};527528struct metrics_table_header {529uint16_t structure_size;530uint8_t format_revision;531uint8_t content_revision;532};533534enum amdgpu_metrics_attr_id {535AMDGPU_METRICS_ATTR_ID_TEMPERATURE_HOTSPOT,536AMDGPU_METRICS_ATTR_ID_TEMPERATURE_MEM,537AMDGPU_METRICS_ATTR_ID_TEMPERATURE_VRSOC,538AMDGPU_METRICS_ATTR_ID_CURR_SOCKET_POWER,539AMDGPU_METRICS_ATTR_ID_AVERAGE_GFX_ACTIVITY,540AMDGPU_METRICS_ATTR_ID_AVERAGE_UMC_ACTIVITY,541AMDGPU_METRICS_ATTR_ID_MEM_MAX_BANDWIDTH,542AMDGPU_METRICS_ATTR_ID_ENERGY_ACCUMULATOR,543AMDGPU_METRICS_ATTR_ID_SYSTEM_CLOCK_COUNTER,544AMDGPU_METRICS_ATTR_ID_ACCUMULATION_COUNTER,545AMDGPU_METRICS_ATTR_ID_PROCHOT_RESIDENCY_ACC,546AMDGPU_METRICS_ATTR_ID_PPT_RESIDENCY_ACC,547AMDGPU_METRICS_ATTR_ID_SOCKET_THM_RESIDENCY_ACC,548AMDGPU_METRICS_ATTR_ID_VR_THM_RESIDENCY_ACC,549AMDGPU_METRICS_ATTR_ID_HBM_THM_RESIDENCY_ACC,550AMDGPU_METRICS_ATTR_ID_GFXCLK_LOCK_STATUS,551AMDGPU_METRICS_ATTR_ID_PCIE_LINK_WIDTH,552AMDGPU_METRICS_ATTR_ID_PCIE_LINK_SPEED,553AMDGPU_METRICS_ATTR_ID_XGMI_LINK_WIDTH,554AMDGPU_METRICS_ATTR_ID_XGMI_LINK_SPEED,555AMDGPU_METRICS_ATTR_ID_GFX_ACTIVITY_ACC,556AMDGPU_METRICS_ATTR_ID_MEM_ACTIVITY_ACC,557AMDGPU_METRICS_ATTR_ID_PCIE_BANDWIDTH_ACC,558AMDGPU_METRICS_ATTR_ID_PCIE_BANDWIDTH_INST,559AMDGPU_METRICS_ATTR_ID_PCIE_L0_TO_RECOV_COUNT_ACC,560AMDGPU_METRICS_ATTR_ID_PCIE_REPLAY_COUNT_ACC,561AMDGPU_METRICS_ATTR_ID_PCIE_REPLAY_ROVER_COUNT_ACC,562AMDGPU_METRICS_ATTR_ID_PCIE_NAK_SENT_COUNT_ACC,563AMDGPU_METRICS_ATTR_ID_PCIE_NAK_RCVD_COUNT_ACC,564AMDGPU_METRICS_ATTR_ID_XGMI_READ_DATA_ACC,565AMDGPU_METRICS_ATTR_ID_XGMI_WRITE_DATA_ACC,566AMDGPU_METRICS_ATTR_ID_XGMI_LINK_STATUS,567AMDGPU_METRICS_ATTR_ID_FIRMWARE_TIMESTAMP,568AMDGPU_METRICS_ATTR_ID_CURRENT_GFXCLK,569AMDGPU_METRICS_ATTR_ID_CURRENT_SOCCLK,570AMDGPU_METRICS_ATTR_ID_CURRENT_VCLK0,571AMDGPU_METRICS_ATTR_ID_CURRENT_DCLK0,572AMDGPU_METRICS_ATTR_ID_CURRENT_UCLK,573AMDGPU_METRICS_ATTR_ID_NUM_PARTITION,574AMDGPU_METRICS_ATTR_ID_PCIE_LC_PERF_OTHER_END_RECOVERY,575AMDGPU_METRICS_ATTR_ID_GFX_BUSY_INST,576AMDGPU_METRICS_ATTR_ID_JPEG_BUSY,577AMDGPU_METRICS_ATTR_ID_VCN_BUSY,578AMDGPU_METRICS_ATTR_ID_GFX_BUSY_ACC,579AMDGPU_METRICS_ATTR_ID_GFX_BELOW_HOST_LIMIT_PPT_ACC,580AMDGPU_METRICS_ATTR_ID_GFX_BELOW_HOST_LIMIT_THM_ACC,581AMDGPU_METRICS_ATTR_ID_GFX_LOW_UTILIZATION_ACC,582AMDGPU_METRICS_ATTR_ID_GFX_BELOW_HOST_LIMIT_TOTAL_ACC,583AMDGPU_METRICS_ATTR_ID_MAX,584};585586enum amdgpu_metrics_attr_type {587AMDGPU_METRICS_TYPE_U8,588AMDGPU_METRICS_TYPE_S8,589AMDGPU_METRICS_TYPE_U16,590AMDGPU_METRICS_TYPE_S16,591AMDGPU_METRICS_TYPE_U32,592AMDGPU_METRICS_TYPE_S32,593AMDGPU_METRICS_TYPE_U64,594AMDGPU_METRICS_TYPE_S64,595AMDGPU_METRICS_TYPE_MAX,596};597598enum amdgpu_metrics_attr_unit {599/* None */600AMDGPU_METRICS_UNIT_NONE,601/* MHz*/602AMDGPU_METRICS_UNIT_CLOCK_1,603/* Degree Celsius*/604AMDGPU_METRICS_UNIT_TEMP_1,605/* Watts*/606AMDGPU_METRICS_UNIT_POWER_1,607/* In nanoseconds*/608AMDGPU_METRICS_UNIT_TIME_1,609/* In 10 nanoseconds*/610AMDGPU_METRICS_UNIT_TIME_2,611/* Speed in GT/s */612AMDGPU_METRICS_UNIT_SPEED_1,613/* Speed in 0.1 GT/s */614AMDGPU_METRICS_UNIT_SPEED_2,615/* Bandwidth GB/s */616AMDGPU_METRICS_UNIT_BW_1,617/* Data in KB */618AMDGPU_METRICS_UNIT_DATA_1,619/* Percentage */620AMDGPU_METRICS_UNIT_PERCENT,621AMDGPU_METRICS_UNIT_MAX,622};623624#define AMDGPU_METRICS_ATTR_UNIT_MASK 0xFF000000625#define AMDGPU_METRICS_ATTR_UNIT_SHIFT 24626#define AMDGPU_METRICS_ATTR_TYPE_MASK 0x00F00000627#define AMDGPU_METRICS_ATTR_TYPE_SHIFT 20628#define AMDGPU_METRICS_ATTR_ID_MASK 0x000FFC00629#define AMDGPU_METRICS_ATTR_ID_SHIFT 10630#define AMDGPU_METRICS_ATTR_INST_MASK 0x000003FF631#define AMDGPU_METRICS_ATTR_INST_SHIFT 0632633#define AMDGPU_METRICS_ENC_ATTR(unit, type, id, inst) \634(((u64)(unit) << AMDGPU_METRICS_ATTR_UNIT_SHIFT) | \635((u64)(type) << AMDGPU_METRICS_ATTR_TYPE_SHIFT) | \636((u64)(id) << AMDGPU_METRICS_ATTR_ID_SHIFT) | (inst))637638/*639* gpu_metrics_v1_0 is not recommended as it's not naturally aligned.640* Use gpu_metrics_v1_1 or later instead.641*/642struct gpu_metrics_v1_0 {643struct metrics_table_header common_header;644645/* Driver attached timestamp (in ns) */646uint64_t system_clock_counter;647648/* Temperature */649uint16_t temperature_edge;650uint16_t temperature_hotspot;651uint16_t temperature_mem;652uint16_t temperature_vrgfx;653uint16_t temperature_vrsoc;654uint16_t temperature_vrmem;655656/* Utilization */657uint16_t average_gfx_activity;658uint16_t average_umc_activity; // memory controller659uint16_t average_mm_activity; // UVD or VCN660661/* Power/Energy */662uint16_t average_socket_power;663uint32_t energy_accumulator;664665/* Average clocks */666uint16_t average_gfxclk_frequency;667uint16_t average_socclk_frequency;668uint16_t average_uclk_frequency;669uint16_t average_vclk0_frequency;670uint16_t average_dclk0_frequency;671uint16_t average_vclk1_frequency;672uint16_t average_dclk1_frequency;673674/* Current clocks */675uint16_t current_gfxclk;676uint16_t current_socclk;677uint16_t current_uclk;678uint16_t current_vclk0;679uint16_t current_dclk0;680uint16_t current_vclk1;681uint16_t current_dclk1;682683/* Throttle status */684uint32_t throttle_status;685686/* Fans */687uint16_t current_fan_speed;688689/* Link width/speed */690uint8_t pcie_link_width;691uint8_t pcie_link_speed; // in 0.1 GT/s692};693694struct gpu_metrics_v1_1 {695struct metrics_table_header common_header;696697/* Temperature */698uint16_t temperature_edge;699uint16_t temperature_hotspot;700uint16_t temperature_mem;701uint16_t temperature_vrgfx;702uint16_t temperature_vrsoc;703uint16_t temperature_vrmem;704705/* Utilization */706uint16_t average_gfx_activity;707uint16_t average_umc_activity; // memory controller708uint16_t average_mm_activity; // UVD or VCN709710/* Power/Energy */711uint16_t average_socket_power;712uint64_t energy_accumulator;713714/* Driver attached timestamp (in ns) */715uint64_t system_clock_counter;716717/* Average clocks */718uint16_t average_gfxclk_frequency;719uint16_t average_socclk_frequency;720uint16_t average_uclk_frequency;721uint16_t average_vclk0_frequency;722uint16_t average_dclk0_frequency;723uint16_t average_vclk1_frequency;724uint16_t average_dclk1_frequency;725726/* Current clocks */727uint16_t current_gfxclk;728uint16_t current_socclk;729uint16_t current_uclk;730uint16_t current_vclk0;731uint16_t current_dclk0;732uint16_t current_vclk1;733uint16_t current_dclk1;734735/* Throttle status */736uint32_t throttle_status;737738/* Fans */739uint16_t current_fan_speed;740741/* Link width/speed */742uint16_t pcie_link_width;743uint16_t pcie_link_speed; // in 0.1 GT/s744745uint16_t padding;746747uint32_t gfx_activity_acc;748uint32_t mem_activity_acc;749750uint16_t temperature_hbm[NUM_HBM_INSTANCES];751};752753struct gpu_metrics_v1_2 {754struct metrics_table_header common_header;755756/* Temperature */757uint16_t temperature_edge;758uint16_t temperature_hotspot;759uint16_t temperature_mem;760uint16_t temperature_vrgfx;761uint16_t temperature_vrsoc;762uint16_t temperature_vrmem;763764/* Utilization */765uint16_t average_gfx_activity;766uint16_t average_umc_activity; // memory controller767uint16_t average_mm_activity; // UVD or VCN768769/* Power/Energy */770uint16_t average_socket_power;771uint64_t energy_accumulator;772773/* Driver attached timestamp (in ns) */774uint64_t system_clock_counter;775776/* Average clocks */777uint16_t average_gfxclk_frequency;778uint16_t average_socclk_frequency;779uint16_t average_uclk_frequency;780uint16_t average_vclk0_frequency;781uint16_t average_dclk0_frequency;782uint16_t average_vclk1_frequency;783uint16_t average_dclk1_frequency;784785/* Current clocks */786uint16_t current_gfxclk;787uint16_t current_socclk;788uint16_t current_uclk;789uint16_t current_vclk0;790uint16_t current_dclk0;791uint16_t current_vclk1;792uint16_t current_dclk1;793794/* Throttle status (ASIC dependent) */795uint32_t throttle_status;796797/* Fans */798uint16_t current_fan_speed;799800/* Link width/speed */801uint16_t pcie_link_width;802uint16_t pcie_link_speed; // in 0.1 GT/s803804uint16_t padding;805806uint32_t gfx_activity_acc;807uint32_t mem_activity_acc;808809uint16_t temperature_hbm[NUM_HBM_INSTANCES];810811/* PMFW attached timestamp (10ns resolution) */812uint64_t firmware_timestamp;813};814815struct gpu_metrics_v1_3 {816struct metrics_table_header common_header;817818/* Temperature */819uint16_t temperature_edge;820uint16_t temperature_hotspot;821uint16_t temperature_mem;822uint16_t temperature_vrgfx;823uint16_t temperature_vrsoc;824uint16_t temperature_vrmem;825826/* Utilization */827uint16_t average_gfx_activity;828uint16_t average_umc_activity; // memory controller829uint16_t average_mm_activity; // UVD or VCN830831/* Power/Energy */832uint16_t average_socket_power;833uint64_t energy_accumulator;834835/* Driver attached timestamp (in ns) */836uint64_t system_clock_counter;837838/* Average clocks */839uint16_t average_gfxclk_frequency;840uint16_t average_socclk_frequency;841uint16_t average_uclk_frequency;842uint16_t average_vclk0_frequency;843uint16_t average_dclk0_frequency;844uint16_t average_vclk1_frequency;845uint16_t average_dclk1_frequency;846847/* Current clocks */848uint16_t current_gfxclk;849uint16_t current_socclk;850uint16_t current_uclk;851uint16_t current_vclk0;852uint16_t current_dclk0;853uint16_t current_vclk1;854uint16_t current_dclk1;855856/* Throttle status */857uint32_t throttle_status;858859/* Fans */860uint16_t current_fan_speed;861862/* Link width/speed */863uint16_t pcie_link_width;864uint16_t pcie_link_speed; // in 0.1 GT/s865866uint16_t padding;867868uint32_t gfx_activity_acc;869uint32_t mem_activity_acc;870871uint16_t temperature_hbm[NUM_HBM_INSTANCES];872873/* PMFW attached timestamp (10ns resolution) */874uint64_t firmware_timestamp;875876/* Voltage (mV) */877uint16_t voltage_soc;878uint16_t voltage_gfx;879uint16_t voltage_mem;880881uint16_t padding1;882883/* Throttle status (ASIC independent) */884uint64_t indep_throttle_status;885};886887struct gpu_metrics_v1_4 {888struct metrics_table_header common_header;889890/* Temperature (Celsius) */891uint16_t temperature_hotspot;892uint16_t temperature_mem;893uint16_t temperature_vrsoc;894895/* Power (Watts) */896uint16_t curr_socket_power;897898/* Utilization (%) */899uint16_t average_gfx_activity;900uint16_t average_umc_activity; // memory controller901uint16_t vcn_activity[NUM_VCN];902903/* Energy (15.259uJ (2^-16) units) */904uint64_t energy_accumulator;905906/* Driver attached timestamp (in ns) */907uint64_t system_clock_counter;908909/* Throttle status */910uint32_t throttle_status;911912/* Clock Lock Status. Each bit corresponds to clock instance */913uint32_t gfxclk_lock_status;914915/* Link width (number of lanes) and speed (in 0.1 GT/s) */916uint16_t pcie_link_width;917uint16_t pcie_link_speed;918919/* XGMI bus width and bitrate (in Gbps) */920uint16_t xgmi_link_width;921uint16_t xgmi_link_speed;922923/* Utilization Accumulated (%) */924uint32_t gfx_activity_acc;925uint32_t mem_activity_acc;926927/*PCIE accumulated bandwidth (GB/sec) */928uint64_t pcie_bandwidth_acc;929930/*PCIE instantaneous bandwidth (GB/sec) */931uint64_t pcie_bandwidth_inst;932933/* PCIE L0 to recovery state transition accumulated count */934uint64_t pcie_l0_to_recov_count_acc;935936/* PCIE replay accumulated count */937uint64_t pcie_replay_count_acc;938939/* PCIE replay rollover accumulated count */940uint64_t pcie_replay_rover_count_acc;941942/* XGMI accumulated data transfer size(KiloBytes) */943uint64_t xgmi_read_data_acc[NUM_XGMI_LINKS];944uint64_t xgmi_write_data_acc[NUM_XGMI_LINKS];945946/* PMFW attached timestamp (10ns resolution) */947uint64_t firmware_timestamp;948949/* Current clocks (Mhz) */950uint16_t current_gfxclk[MAX_GFX_CLKS];951uint16_t current_socclk[MAX_CLKS];952uint16_t current_vclk0[MAX_CLKS];953uint16_t current_dclk0[MAX_CLKS];954uint16_t current_uclk;955956uint16_t padding;957};958959struct gpu_metrics_v1_5 {960struct metrics_table_header common_header;961962/* Temperature (Celsius) */963uint16_t temperature_hotspot;964uint16_t temperature_mem;965uint16_t temperature_vrsoc;966967/* Power (Watts) */968uint16_t curr_socket_power;969970/* Utilization (%) */971uint16_t average_gfx_activity;972uint16_t average_umc_activity; // memory controller973uint16_t vcn_activity[NUM_VCN];974uint16_t jpeg_activity[NUM_JPEG_ENG];975976/* Energy (15.259uJ (2^-16) units) */977uint64_t energy_accumulator;978979/* Driver attached timestamp (in ns) */980uint64_t system_clock_counter;981982/* Throttle status */983uint32_t throttle_status;984985/* Clock Lock Status. Each bit corresponds to clock instance */986uint32_t gfxclk_lock_status;987988/* Link width (number of lanes) and speed (in 0.1 GT/s) */989uint16_t pcie_link_width;990uint16_t pcie_link_speed;991992/* XGMI bus width and bitrate (in Gbps) */993uint16_t xgmi_link_width;994uint16_t xgmi_link_speed;995996/* Utilization Accumulated (%) */997uint32_t gfx_activity_acc;998uint32_t mem_activity_acc;9991000/*PCIE accumulated bandwidth (GB/sec) */1001uint64_t pcie_bandwidth_acc;10021003/*PCIE instantaneous bandwidth (GB/sec) */1004uint64_t pcie_bandwidth_inst;10051006/* PCIE L0 to recovery state transition accumulated count */1007uint64_t pcie_l0_to_recov_count_acc;10081009/* PCIE replay accumulated count */1010uint64_t pcie_replay_count_acc;10111012/* PCIE replay rollover accumulated count */1013uint64_t pcie_replay_rover_count_acc;10141015/* PCIE NAK sent accumulated count */1016uint32_t pcie_nak_sent_count_acc;10171018/* PCIE NAK received accumulated count */1019uint32_t pcie_nak_rcvd_count_acc;10201021/* XGMI accumulated data transfer size(KiloBytes) */1022uint64_t xgmi_read_data_acc[NUM_XGMI_LINKS];1023uint64_t xgmi_write_data_acc[NUM_XGMI_LINKS];10241025/* PMFW attached timestamp (10ns resolution) */1026uint64_t firmware_timestamp;10271028/* Current clocks (Mhz) */1029uint16_t current_gfxclk[MAX_GFX_CLKS];1030uint16_t current_socclk[MAX_CLKS];1031uint16_t current_vclk0[MAX_CLKS];1032uint16_t current_dclk0[MAX_CLKS];1033uint16_t current_uclk;10341035uint16_t padding;1036};10371038struct gpu_metrics_v1_6 {1039struct metrics_table_header common_header;10401041/* Temperature (Celsius) */1042uint16_t temperature_hotspot;1043uint16_t temperature_mem;1044uint16_t temperature_vrsoc;10451046/* Power (Watts) */1047uint16_t curr_socket_power;10481049/* Utilization (%) */1050uint16_t average_gfx_activity;1051uint16_t average_umc_activity; // memory controller10521053/* Energy (15.259uJ (2^-16) units) */1054uint64_t energy_accumulator;10551056/* Driver attached timestamp (in ns) */1057uint64_t system_clock_counter;10581059/* Accumulation cycle counter */1060uint32_t accumulation_counter;10611062/* Accumulated throttler residencies */1063uint32_t prochot_residency_acc;1064uint32_t ppt_residency_acc;1065uint32_t socket_thm_residency_acc;1066uint32_t vr_thm_residency_acc;1067uint32_t hbm_thm_residency_acc;10681069/* Clock Lock Status. Each bit corresponds to clock instance */1070uint32_t gfxclk_lock_status;10711072/* Link width (number of lanes) and speed (in 0.1 GT/s) */1073uint16_t pcie_link_width;1074uint16_t pcie_link_speed;10751076/* XGMI bus width and bitrate (in Gbps) */1077uint16_t xgmi_link_width;1078uint16_t xgmi_link_speed;10791080/* Utilization Accumulated (%) */1081uint32_t gfx_activity_acc;1082uint32_t mem_activity_acc;10831084/*PCIE accumulated bandwidth (GB/sec) */1085uint64_t pcie_bandwidth_acc;10861087/*PCIE instantaneous bandwidth (GB/sec) */1088uint64_t pcie_bandwidth_inst;10891090/* PCIE L0 to recovery state transition accumulated count */1091uint64_t pcie_l0_to_recov_count_acc;10921093/* PCIE replay accumulated count */1094uint64_t pcie_replay_count_acc;10951096/* PCIE replay rollover accumulated count */1097uint64_t pcie_replay_rover_count_acc;10981099/* PCIE NAK sent accumulated count */1100uint32_t pcie_nak_sent_count_acc;11011102/* PCIE NAK received accumulated count */1103uint32_t pcie_nak_rcvd_count_acc;11041105/* XGMI accumulated data transfer size(KiloBytes) */1106uint64_t xgmi_read_data_acc[NUM_XGMI_LINKS];1107uint64_t xgmi_write_data_acc[NUM_XGMI_LINKS];11081109/* PMFW attached timestamp (10ns resolution) */1110uint64_t firmware_timestamp;11111112/* Current clocks (Mhz) */1113uint16_t current_gfxclk[MAX_GFX_CLKS];1114uint16_t current_socclk[MAX_CLKS];1115uint16_t current_vclk0[MAX_CLKS];1116uint16_t current_dclk0[MAX_CLKS];1117uint16_t current_uclk;11181119/* Number of current partition */1120uint16_t num_partition;11211122/* XCP metrics stats */1123struct amdgpu_xcp_metrics xcp_stats[NUM_XCP];11241125/* PCIE other end recovery counter */1126uint32_t pcie_lc_perf_other_end_recovery;1127};11281129struct gpu_metrics_v1_7 {1130struct metrics_table_header common_header;11311132/* Temperature (Celsius) */1133uint16_t temperature_hotspot;1134uint16_t temperature_mem;1135uint16_t temperature_vrsoc;11361137/* Power (Watts) */1138uint16_t curr_socket_power;11391140/* Utilization (%) */1141uint16_t average_gfx_activity;1142uint16_t average_umc_activity; // memory controller11431144/* VRAM max bandwidthi (in GB/sec) at max memory clock */1145uint64_t mem_max_bandwidth;11461147/* Energy (15.259uJ (2^-16) units) */1148uint64_t energy_accumulator;11491150/* Driver attached timestamp (in ns) */1151uint64_t system_clock_counter;11521153/* Accumulation cycle counter */1154uint32_t accumulation_counter;11551156/* Accumulated throttler residencies */1157uint32_t prochot_residency_acc;1158uint32_t ppt_residency_acc;1159uint32_t socket_thm_residency_acc;1160uint32_t vr_thm_residency_acc;1161uint32_t hbm_thm_residency_acc;11621163/* Clock Lock Status. Each bit corresponds to clock instance */1164uint32_t gfxclk_lock_status;11651166/* Link width (number of lanes) and speed (in 0.1 GT/s) */1167uint16_t pcie_link_width;1168uint16_t pcie_link_speed;11691170/* XGMI bus width and bitrate (in Gbps) */1171uint16_t xgmi_link_width;1172uint16_t xgmi_link_speed;11731174/* Utilization Accumulated (%) */1175uint32_t gfx_activity_acc;1176uint32_t mem_activity_acc;11771178/*PCIE accumulated bandwidth (GB/sec) */1179uint64_t pcie_bandwidth_acc;11801181/*PCIE instantaneous bandwidth (GB/sec) */1182uint64_t pcie_bandwidth_inst;11831184/* PCIE L0 to recovery state transition accumulated count */1185uint64_t pcie_l0_to_recov_count_acc;11861187/* PCIE replay accumulated count */1188uint64_t pcie_replay_count_acc;11891190/* PCIE replay rollover accumulated count */1191uint64_t pcie_replay_rover_count_acc;11921193/* PCIE NAK sent accumulated count */1194uint32_t pcie_nak_sent_count_acc;11951196/* PCIE NAK received accumulated count */1197uint32_t pcie_nak_rcvd_count_acc;11981199/* XGMI accumulated data transfer size(KiloBytes) */1200uint64_t xgmi_read_data_acc[NUM_XGMI_LINKS];1201uint64_t xgmi_write_data_acc[NUM_XGMI_LINKS];12021203/* XGMI link status(active/inactive) */1204uint16_t xgmi_link_status[NUM_XGMI_LINKS];12051206uint16_t padding;12071208/* PMFW attached timestamp (10ns resolution) */1209uint64_t firmware_timestamp;12101211/* Current clocks (Mhz) */1212uint16_t current_gfxclk[MAX_GFX_CLKS];1213uint16_t current_socclk[MAX_CLKS];1214uint16_t current_vclk0[MAX_CLKS];1215uint16_t current_dclk0[MAX_CLKS];1216uint16_t current_uclk;12171218/* Number of current partition */1219uint16_t num_partition;12201221/* XCP metrics stats */1222struct amdgpu_xcp_metrics_v1_1 xcp_stats[NUM_XCP];12231224/* PCIE other end recovery counter */1225uint32_t pcie_lc_perf_other_end_recovery;1226};12271228struct gpu_metrics_v1_8 {1229struct metrics_table_header common_header;12301231/* Temperature (Celsius) */1232uint16_t temperature_hotspot;1233uint16_t temperature_mem;1234uint16_t temperature_vrsoc;12351236/* Power (Watts) */1237uint16_t curr_socket_power;12381239/* Utilization (%) */1240uint16_t average_gfx_activity;1241uint16_t average_umc_activity; // memory controller12421243/* VRAM max bandwidthi (in GB/sec) at max memory clock */1244uint64_t mem_max_bandwidth;12451246/* Energy (15.259uJ (2^-16) units) */1247uint64_t energy_accumulator;12481249/* Driver attached timestamp (in ns) */1250uint64_t system_clock_counter;12511252/* Accumulation cycle counter */1253uint32_t accumulation_counter;12541255/* Accumulated throttler residencies */1256uint32_t prochot_residency_acc;1257uint32_t ppt_residency_acc;1258uint32_t socket_thm_residency_acc;1259uint32_t vr_thm_residency_acc;1260uint32_t hbm_thm_residency_acc;12611262/* Clock Lock Status. Each bit corresponds to clock instance */1263uint32_t gfxclk_lock_status;12641265/* Link width (number of lanes) and speed (in 0.1 GT/s) */1266uint16_t pcie_link_width;1267uint16_t pcie_link_speed;12681269/* XGMI bus width and bitrate (in Gbps) */1270uint16_t xgmi_link_width;1271uint16_t xgmi_link_speed;12721273/* Utilization Accumulated (%) */1274uint32_t gfx_activity_acc;1275uint32_t mem_activity_acc;12761277/*PCIE accumulated bandwidth (GB/sec) */1278uint64_t pcie_bandwidth_acc;12791280/*PCIE instantaneous bandwidth (GB/sec) */1281uint64_t pcie_bandwidth_inst;12821283/* PCIE L0 to recovery state transition accumulated count */1284uint64_t pcie_l0_to_recov_count_acc;12851286/* PCIE replay accumulated count */1287uint64_t pcie_replay_count_acc;12881289/* PCIE replay rollover accumulated count */1290uint64_t pcie_replay_rover_count_acc;12911292/* PCIE NAK sent accumulated count */1293uint32_t pcie_nak_sent_count_acc;12941295/* PCIE NAK received accumulated count */1296uint32_t pcie_nak_rcvd_count_acc;12971298/* XGMI accumulated data transfer size(KiloBytes) */1299uint64_t xgmi_read_data_acc[NUM_XGMI_LINKS];1300uint64_t xgmi_write_data_acc[NUM_XGMI_LINKS];13011302/* XGMI link status(active/inactive) */1303uint16_t xgmi_link_status[NUM_XGMI_LINKS];13041305uint16_t padding;13061307/* PMFW attached timestamp (10ns resolution) */1308uint64_t firmware_timestamp;13091310/* Current clocks (Mhz) */1311uint16_t current_gfxclk[MAX_GFX_CLKS];1312uint16_t current_socclk[MAX_CLKS];1313uint16_t current_vclk0[MAX_CLKS];1314uint16_t current_dclk0[MAX_CLKS];1315uint16_t current_uclk;13161317/* Number of current partition */1318uint16_t num_partition;13191320/* XCP metrics stats */1321struct amdgpu_xcp_metrics_v1_2 xcp_stats[NUM_XCP];13221323/* PCIE other end recovery counter */1324uint32_t pcie_lc_perf_other_end_recovery;1325};13261327struct gpu_metrics_attr {1328/* Field type encoded with AMDGPU_METRICS_ENC_ATTR */1329uint64_t attr_encoding;1330/* Attribute value, depends on attr_encoding */1331void *attr_value;1332};13331334struct gpu_metrics_v1_9 {1335struct metrics_table_header common_header;1336int attr_count;1337struct gpu_metrics_attr metrics_attrs[];1338};13391340/*1341* gpu_metrics_v2_0 is not recommended as it's not naturally aligned.1342* Use gpu_metrics_v2_1 or later instead.1343*/1344struct gpu_metrics_v2_0 {1345struct metrics_table_header common_header;13461347/* Driver attached timestamp (in ns) */1348uint64_t system_clock_counter;13491350/* Temperature */1351uint16_t temperature_gfx; // gfx temperature on APUs1352uint16_t temperature_soc; // soc temperature on APUs1353uint16_t temperature_core[8]; // CPU core temperature on APUs1354uint16_t temperature_l3[2];13551356/* Utilization */1357uint16_t average_gfx_activity;1358uint16_t average_mm_activity; // UVD or VCN13591360/* Power/Energy */1361uint16_t average_socket_power; // dGPU + APU power on A + A platform1362uint16_t average_cpu_power;1363uint16_t average_soc_power;1364uint16_t average_gfx_power;1365uint16_t average_core_power[8]; // CPU core power on APUs13661367/* Average clocks */1368uint16_t average_gfxclk_frequency;1369uint16_t average_socclk_frequency;1370uint16_t average_uclk_frequency;1371uint16_t average_fclk_frequency;1372uint16_t average_vclk_frequency;1373uint16_t average_dclk_frequency;13741375/* Current clocks */1376uint16_t current_gfxclk;1377uint16_t current_socclk;1378uint16_t current_uclk;1379uint16_t current_fclk;1380uint16_t current_vclk;1381uint16_t current_dclk;1382uint16_t current_coreclk[8]; // CPU core clocks1383uint16_t current_l3clk[2];13841385/* Throttle status */1386uint32_t throttle_status;13871388/* Fans */1389uint16_t fan_pwm;13901391uint16_t padding;1392};13931394struct gpu_metrics_v2_1 {1395struct metrics_table_header common_header;13961397/* Temperature */1398uint16_t temperature_gfx; // gfx temperature on APUs1399uint16_t temperature_soc; // soc temperature on APUs1400uint16_t temperature_core[8]; // CPU core temperature on APUs1401uint16_t temperature_l3[2];14021403/* Utilization */1404uint16_t average_gfx_activity;1405uint16_t average_mm_activity; // UVD or VCN14061407/* Driver attached timestamp (in ns) */1408uint64_t system_clock_counter;14091410/* Power/Energy */1411uint16_t average_socket_power; // dGPU + APU power on A + A platform1412uint16_t average_cpu_power;1413uint16_t average_soc_power;1414uint16_t average_gfx_power;1415uint16_t average_core_power[8]; // CPU core power on APUs14161417/* Average clocks */1418uint16_t average_gfxclk_frequency;1419uint16_t average_socclk_frequency;1420uint16_t average_uclk_frequency;1421uint16_t average_fclk_frequency;1422uint16_t average_vclk_frequency;1423uint16_t average_dclk_frequency;14241425/* Current clocks */1426uint16_t current_gfxclk;1427uint16_t current_socclk;1428uint16_t current_uclk;1429uint16_t current_fclk;1430uint16_t current_vclk;1431uint16_t current_dclk;1432uint16_t current_coreclk[8]; // CPU core clocks1433uint16_t current_l3clk[2];14341435/* Throttle status */1436uint32_t throttle_status;14371438/* Fans */1439uint16_t fan_pwm;14401441uint16_t padding[3];1442};14431444struct gpu_metrics_v2_2 {1445struct metrics_table_header common_header;14461447/* Temperature */1448uint16_t temperature_gfx; // gfx temperature on APUs1449uint16_t temperature_soc; // soc temperature on APUs1450uint16_t temperature_core[8]; // CPU core temperature on APUs1451uint16_t temperature_l3[2];14521453/* Utilization */1454uint16_t average_gfx_activity;1455uint16_t average_mm_activity; // UVD or VCN14561457/* Driver attached timestamp (in ns) */1458uint64_t system_clock_counter;14591460/* Power/Energy */1461uint16_t average_socket_power; // dGPU + APU power on A + A platform1462uint16_t average_cpu_power;1463uint16_t average_soc_power;1464uint16_t average_gfx_power;1465uint16_t average_core_power[8]; // CPU core power on APUs14661467/* Average clocks */1468uint16_t average_gfxclk_frequency;1469uint16_t average_socclk_frequency;1470uint16_t average_uclk_frequency;1471uint16_t average_fclk_frequency;1472uint16_t average_vclk_frequency;1473uint16_t average_dclk_frequency;14741475/* Current clocks */1476uint16_t current_gfxclk;1477uint16_t current_socclk;1478uint16_t current_uclk;1479uint16_t current_fclk;1480uint16_t current_vclk;1481uint16_t current_dclk;1482uint16_t current_coreclk[8]; // CPU core clocks1483uint16_t current_l3clk[2];14841485/* Throttle status (ASIC dependent) */1486uint32_t throttle_status;14871488/* Fans */1489uint16_t fan_pwm;14901491uint16_t padding[3];14921493/* Throttle status (ASIC independent) */1494uint64_t indep_throttle_status;1495};14961497struct gpu_metrics_v2_3 {1498struct metrics_table_header common_header;14991500/* Temperature */1501uint16_t temperature_gfx; // gfx temperature on APUs1502uint16_t temperature_soc; // soc temperature on APUs1503uint16_t temperature_core[8]; // CPU core temperature on APUs1504uint16_t temperature_l3[2];15051506/* Utilization */1507uint16_t average_gfx_activity;1508uint16_t average_mm_activity; // UVD or VCN15091510/* Driver attached timestamp (in ns) */1511uint64_t system_clock_counter;15121513/* Power/Energy */1514uint16_t average_socket_power; // dGPU + APU power on A + A platform1515uint16_t average_cpu_power;1516uint16_t average_soc_power;1517uint16_t average_gfx_power;1518uint16_t average_core_power[8]; // CPU core power on APUs15191520/* Average clocks */1521uint16_t average_gfxclk_frequency;1522uint16_t average_socclk_frequency;1523uint16_t average_uclk_frequency;1524uint16_t average_fclk_frequency;1525uint16_t average_vclk_frequency;1526uint16_t average_dclk_frequency;15271528/* Current clocks */1529uint16_t current_gfxclk;1530uint16_t current_socclk;1531uint16_t current_uclk;1532uint16_t current_fclk;1533uint16_t current_vclk;1534uint16_t current_dclk;1535uint16_t current_coreclk[8]; // CPU core clocks1536uint16_t current_l3clk[2];15371538/* Throttle status (ASIC dependent) */1539uint32_t throttle_status;15401541/* Fans */1542uint16_t fan_pwm;15431544uint16_t padding[3];15451546/* Throttle status (ASIC independent) */1547uint64_t indep_throttle_status;15481549/* Average Temperature */1550uint16_t average_temperature_gfx; // average gfx temperature on APUs1551uint16_t average_temperature_soc; // average soc temperature on APUs1552uint16_t average_temperature_core[8]; // average CPU core temperature on APUs1553uint16_t average_temperature_l3[2];1554};15551556struct gpu_metrics_v2_4 {1557struct metrics_table_header common_header;15581559/* Temperature (unit: centi-Celsius) */1560uint16_t temperature_gfx;1561uint16_t temperature_soc;1562uint16_t temperature_core[8];1563uint16_t temperature_l3[2];15641565/* Utilization (unit: centi) */1566uint16_t average_gfx_activity;1567uint16_t average_mm_activity;15681569/* Driver attached timestamp (in ns) */1570uint64_t system_clock_counter;15711572/* Power/Energy (unit: mW) */1573uint16_t average_socket_power;1574uint16_t average_cpu_power;1575uint16_t average_soc_power;1576uint16_t average_gfx_power;1577uint16_t average_core_power[8];15781579/* Average clocks (unit: MHz) */1580uint16_t average_gfxclk_frequency;1581uint16_t average_socclk_frequency;1582uint16_t average_uclk_frequency;1583uint16_t average_fclk_frequency;1584uint16_t average_vclk_frequency;1585uint16_t average_dclk_frequency;15861587/* Current clocks (unit: MHz) */1588uint16_t current_gfxclk;1589uint16_t current_socclk;1590uint16_t current_uclk;1591uint16_t current_fclk;1592uint16_t current_vclk;1593uint16_t current_dclk;1594uint16_t current_coreclk[8];1595uint16_t current_l3clk[2];15961597/* Throttle status (ASIC dependent) */1598uint32_t throttle_status;15991600/* Fans */1601uint16_t fan_pwm;16021603uint16_t padding[3];16041605/* Throttle status (ASIC independent) */1606uint64_t indep_throttle_status;16071608/* Average Temperature (unit: centi-Celsius) */1609uint16_t average_temperature_gfx;1610uint16_t average_temperature_soc;1611uint16_t average_temperature_core[8];1612uint16_t average_temperature_l3[2];16131614/* Power/Voltage (unit: mV) */1615uint16_t average_cpu_voltage;1616uint16_t average_soc_voltage;1617uint16_t average_gfx_voltage;16181619/* Power/Current (unit: mA) */1620uint16_t average_cpu_current;1621uint16_t average_soc_current;1622uint16_t average_gfx_current;1623};16241625struct gpu_metrics_v3_0 {1626struct metrics_table_header common_header;16271628/* Temperature */1629/* gfx temperature on APUs */1630uint16_t temperature_gfx;1631/* soc temperature on APUs */1632uint16_t temperature_soc;1633/* CPU core temperature on APUs */1634uint16_t temperature_core[16];1635/* skin temperature on APUs */1636uint16_t temperature_skin;16371638/* Utilization */1639/* time filtered GFX busy % [0-100] */1640uint16_t average_gfx_activity;1641/* time filtered VCN busy % [0-100] */1642uint16_t average_vcn_activity;1643/* time filtered IPU per-column busy % [0-100] */1644uint16_t average_ipu_activity[8];1645/* time filtered per-core C0 residency % [0-100]*/1646uint16_t average_core_c0_activity[16];1647/* time filtered DRAM read bandwidth [MB/sec] */1648uint16_t average_dram_reads;1649/* time filtered DRAM write bandwidth [MB/sec] */1650uint16_t average_dram_writes;1651/* time filtered IPU read bandwidth [MB/sec] */1652uint16_t average_ipu_reads;1653/* time filtered IPU write bandwidth [MB/sec] */1654uint16_t average_ipu_writes;16551656/* Driver attached timestamp (in ns) */1657uint64_t system_clock_counter;16581659/* Power/Energy */1660/* time filtered power used for PPT/STAPM [APU+dGPU] [mW] */1661uint32_t average_socket_power;1662/* time filtered IPU power [mW] */1663uint16_t average_ipu_power;1664/* time filtered APU power [mW] */1665uint32_t average_apu_power;1666/* time filtered GFX power [mW] */1667uint32_t average_gfx_power;1668/* time filtered dGPU power [mW] */1669uint32_t average_dgpu_power;1670/* time filtered sum of core power across all cores in the socket [mW] */1671uint32_t average_all_core_power;1672/* calculated core power [mW] */1673uint16_t average_core_power[16];1674/* time filtered total system power [mW] */1675uint16_t average_sys_power;1676/* maximum IRM defined STAPM power limit [mW] */1677uint16_t stapm_power_limit;1678/* time filtered STAPM power limit [mW] */1679uint16_t current_stapm_power_limit;16801681/* time filtered clocks [MHz] */1682uint16_t average_gfxclk_frequency;1683uint16_t average_socclk_frequency;1684uint16_t average_vpeclk_frequency;1685uint16_t average_ipuclk_frequency;1686uint16_t average_fclk_frequency;1687uint16_t average_vclk_frequency;1688uint16_t average_uclk_frequency;1689uint16_t average_mpipu_frequency;16901691/* Current clocks */1692/* target core frequency [MHz] */1693uint16_t current_coreclk[16];1694/* CCLK frequency limit enforced on classic cores [MHz] */1695uint16_t current_core_maxfreq;1696/* GFXCLK frequency limit enforced on GFX [MHz] */1697uint16_t current_gfx_maxfreq;16981699/* Throttle Residency (ASIC dependent) */1700uint32_t throttle_residency_prochot;1701uint32_t throttle_residency_spl;1702uint32_t throttle_residency_fppt;1703uint32_t throttle_residency_sppt;1704uint32_t throttle_residency_thm_core;1705uint32_t throttle_residency_thm_gfx;1706uint32_t throttle_residency_thm_soc;17071708/* Metrics table alpha filter time constant [us] */1709uint32_t time_filter_alphavalue;1710};17111712struct amdgpu_pmmetrics_header {1713uint16_t structure_size;1714uint16_t pad;1715uint32_t mp1_ip_discovery_version;1716uint32_t pmfw_version;1717uint32_t pmmetrics_version;1718};17191720struct amdgpu_pm_metrics {1721struct amdgpu_pmmetrics_header common_header;17221723uint8_t data[];1724};17251726enum amdgpu_vr_temp {1727AMDGPU_VDDCR_VDD0_TEMP,1728AMDGPU_VDDCR_VDD1_TEMP,1729AMDGPU_VDDCR_VDD2_TEMP,1730AMDGPU_VDDCR_VDD3_TEMP,1731AMDGPU_VDDCR_SOC_A_TEMP,1732AMDGPU_VDDCR_SOC_C_TEMP,1733AMDGPU_VDDCR_SOCIO_A_TEMP,1734AMDGPU_VDDCR_SOCIO_C_TEMP,1735AMDGPU_VDD_085_HBM_TEMP,1736AMDGPU_VDDCR_11_HBM_B_TEMP,1737AMDGPU_VDDCR_11_HBM_D_TEMP,1738AMDGPU_VDD_USR_TEMP,1739AMDGPU_VDDIO_11_E32_TEMP,1740AMDGPU_VR_MAX_TEMP_ENTRIES,1741};17421743enum amdgpu_system_temp {1744AMDGPU_UBB_FPGA_TEMP,1745AMDGPU_UBB_FRONT_TEMP,1746AMDGPU_UBB_BACK_TEMP,1747AMDGPU_UBB_OAM7_TEMP,1748AMDGPU_UBB_IBC_TEMP,1749AMDGPU_UBB_UFPGA_TEMP,1750AMDGPU_UBB_OAM1_TEMP,1751AMDGPU_OAM_0_1_HSC_TEMP,1752AMDGPU_OAM_2_3_HSC_TEMP,1753AMDGPU_OAM_4_5_HSC_TEMP,1754AMDGPU_OAM_6_7_HSC_TEMP,1755AMDGPU_UBB_FPGA_0V72_VR_TEMP,1756AMDGPU_UBB_FPGA_3V3_VR_TEMP,1757AMDGPU_RETIMER_0_1_2_3_1V2_VR_TEMP,1758AMDGPU_RETIMER_4_5_6_7_1V2_VR_TEMP,1759AMDGPU_RETIMER_0_1_0V9_VR_TEMP,1760AMDGPU_RETIMER_4_5_0V9_VR_TEMP,1761AMDGPU_RETIMER_2_3_0V9_VR_TEMP,1762AMDGPU_RETIMER_6_7_0V9_VR_TEMP,1763AMDGPU_OAM_0_1_2_3_3V3_VR_TEMP,1764AMDGPU_OAM_4_5_6_7_3V3_VR_TEMP,1765AMDGPU_IBC_HSC_TEMP,1766AMDGPU_IBC_TEMP,1767AMDGPU_SYSTEM_MAX_TEMP_ENTRIES = 32,1768};17691770enum amdgpu_node_temp {1771AMDGPU_RETIMER_X_TEMP,1772AMDGPU_OAM_X_IBC_TEMP,1773AMDGPU_OAM_X_IBC_2_TEMP,1774AMDGPU_OAM_X_VDD18_VR_TEMP,1775AMDGPU_OAM_X_04_HBM_B_VR_TEMP,1776AMDGPU_OAM_X_04_HBM_D_VR_TEMP,1777AMDGPU_NODE_MAX_TEMP_ENTRIES = 12,1778};17791780struct amdgpu_gpuboard_temp_metrics_v1_0 {1781struct metrics_table_header common_header;1782uint16_t label_version;1783uint16_t node_id;1784uint64_t accumulation_counter;1785/* Encoded temperature in Celcius, 24:31 is sensor id 0:23 is temp value */1786uint32_t node_temp[AMDGPU_NODE_MAX_TEMP_ENTRIES];1787uint32_t vr_temp[AMDGPU_VR_MAX_TEMP_ENTRIES];1788};17891790struct amdgpu_baseboard_temp_metrics_v1_0 {1791struct metrics_table_header common_header;1792uint16_t label_version;1793uint16_t node_id;1794uint64_t accumulation_counter;1795/* Encoded temperature in Celcius, 24:31 is sensor id 0:23 is temp value */1796uint32_t system_temp[AMDGPU_SYSTEM_MAX_TEMP_ENTRIES];1797};17981799struct amdgpu_partition_metrics_v1_0 {1800struct metrics_table_header common_header;1801/* Current clocks (Mhz) */1802uint16_t current_gfxclk[MAX_XCC];1803uint16_t current_socclk[MAX_CLKS];1804uint16_t current_vclk0[MAX_CLKS];1805uint16_t current_dclk0[MAX_CLKS];1806uint16_t current_uclk;1807uint16_t padding;18081809/* Utilization Instantaneous (%) */1810uint32_t gfx_busy_inst[MAX_XCC];1811uint16_t jpeg_busy[NUM_JPEG_ENG_V1];1812uint16_t vcn_busy[NUM_VCN];1813/* Utilization Accumulated (%) */1814uint64_t gfx_busy_acc[MAX_XCC];1815/* Total App Clock Counter Accumulated */1816uint64_t gfx_below_host_limit_ppt_acc[MAX_XCC];1817uint64_t gfx_below_host_limit_thm_acc[MAX_XCC];1818uint64_t gfx_low_utilization_acc[MAX_XCC];1819uint64_t gfx_below_host_limit_total_acc[MAX_XCC];1820};18211822struct amdgpu_partition_metrics_v1_1 {1823struct metrics_table_header common_header;1824int attr_count;1825struct gpu_metrics_attr metrics_attrs[];1826};18271828#endif182918301831