Path: blob/master/drivers/gpu/drm/amd/include/kgd_pp_interface.h
29285 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 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};533534/*535* gpu_metrics_v1_0 is not recommended as it's not naturally aligned.536* Use gpu_metrics_v1_1 or later instead.537*/538struct gpu_metrics_v1_0 {539struct metrics_table_header common_header;540541/* Driver attached timestamp (in ns) */542uint64_t system_clock_counter;543544/* Temperature */545uint16_t temperature_edge;546uint16_t temperature_hotspot;547uint16_t temperature_mem;548uint16_t temperature_vrgfx;549uint16_t temperature_vrsoc;550uint16_t temperature_vrmem;551552/* Utilization */553uint16_t average_gfx_activity;554uint16_t average_umc_activity; // memory controller555uint16_t average_mm_activity; // UVD or VCN556557/* Power/Energy */558uint16_t average_socket_power;559uint32_t energy_accumulator;560561/* Average clocks */562uint16_t average_gfxclk_frequency;563uint16_t average_socclk_frequency;564uint16_t average_uclk_frequency;565uint16_t average_vclk0_frequency;566uint16_t average_dclk0_frequency;567uint16_t average_vclk1_frequency;568uint16_t average_dclk1_frequency;569570/* Current clocks */571uint16_t current_gfxclk;572uint16_t current_socclk;573uint16_t current_uclk;574uint16_t current_vclk0;575uint16_t current_dclk0;576uint16_t current_vclk1;577uint16_t current_dclk1;578579/* Throttle status */580uint32_t throttle_status;581582/* Fans */583uint16_t current_fan_speed;584585/* Link width/speed */586uint8_t pcie_link_width;587uint8_t pcie_link_speed; // in 0.1 GT/s588};589590struct gpu_metrics_v1_1 {591struct metrics_table_header common_header;592593/* Temperature */594uint16_t temperature_edge;595uint16_t temperature_hotspot;596uint16_t temperature_mem;597uint16_t temperature_vrgfx;598uint16_t temperature_vrsoc;599uint16_t temperature_vrmem;600601/* Utilization */602uint16_t average_gfx_activity;603uint16_t average_umc_activity; // memory controller604uint16_t average_mm_activity; // UVD or VCN605606/* Power/Energy */607uint16_t average_socket_power;608uint64_t energy_accumulator;609610/* Driver attached timestamp (in ns) */611uint64_t system_clock_counter;612613/* Average clocks */614uint16_t average_gfxclk_frequency;615uint16_t average_socclk_frequency;616uint16_t average_uclk_frequency;617uint16_t average_vclk0_frequency;618uint16_t average_dclk0_frequency;619uint16_t average_vclk1_frequency;620uint16_t average_dclk1_frequency;621622/* Current clocks */623uint16_t current_gfxclk;624uint16_t current_socclk;625uint16_t current_uclk;626uint16_t current_vclk0;627uint16_t current_dclk0;628uint16_t current_vclk1;629uint16_t current_dclk1;630631/* Throttle status */632uint32_t throttle_status;633634/* Fans */635uint16_t current_fan_speed;636637/* Link width/speed */638uint16_t pcie_link_width;639uint16_t pcie_link_speed; // in 0.1 GT/s640641uint16_t padding;642643uint32_t gfx_activity_acc;644uint32_t mem_activity_acc;645646uint16_t temperature_hbm[NUM_HBM_INSTANCES];647};648649struct gpu_metrics_v1_2 {650struct metrics_table_header common_header;651652/* Temperature */653uint16_t temperature_edge;654uint16_t temperature_hotspot;655uint16_t temperature_mem;656uint16_t temperature_vrgfx;657uint16_t temperature_vrsoc;658uint16_t temperature_vrmem;659660/* Utilization */661uint16_t average_gfx_activity;662uint16_t average_umc_activity; // memory controller663uint16_t average_mm_activity; // UVD or VCN664665/* Power/Energy */666uint16_t average_socket_power;667uint64_t energy_accumulator;668669/* Driver attached timestamp (in ns) */670uint64_t system_clock_counter;671672/* Average clocks */673uint16_t average_gfxclk_frequency;674uint16_t average_socclk_frequency;675uint16_t average_uclk_frequency;676uint16_t average_vclk0_frequency;677uint16_t average_dclk0_frequency;678uint16_t average_vclk1_frequency;679uint16_t average_dclk1_frequency;680681/* Current clocks */682uint16_t current_gfxclk;683uint16_t current_socclk;684uint16_t current_uclk;685uint16_t current_vclk0;686uint16_t current_dclk0;687uint16_t current_vclk1;688uint16_t current_dclk1;689690/* Throttle status (ASIC dependent) */691uint32_t throttle_status;692693/* Fans */694uint16_t current_fan_speed;695696/* Link width/speed */697uint16_t pcie_link_width;698uint16_t pcie_link_speed; // in 0.1 GT/s699700uint16_t padding;701702uint32_t gfx_activity_acc;703uint32_t mem_activity_acc;704705uint16_t temperature_hbm[NUM_HBM_INSTANCES];706707/* PMFW attached timestamp (10ns resolution) */708uint64_t firmware_timestamp;709};710711struct gpu_metrics_v1_3 {712struct metrics_table_header common_header;713714/* Temperature */715uint16_t temperature_edge;716uint16_t temperature_hotspot;717uint16_t temperature_mem;718uint16_t temperature_vrgfx;719uint16_t temperature_vrsoc;720uint16_t temperature_vrmem;721722/* Utilization */723uint16_t average_gfx_activity;724uint16_t average_umc_activity; // memory controller725uint16_t average_mm_activity; // UVD or VCN726727/* Power/Energy */728uint16_t average_socket_power;729uint64_t energy_accumulator;730731/* Driver attached timestamp (in ns) */732uint64_t system_clock_counter;733734/* Average clocks */735uint16_t average_gfxclk_frequency;736uint16_t average_socclk_frequency;737uint16_t average_uclk_frequency;738uint16_t average_vclk0_frequency;739uint16_t average_dclk0_frequency;740uint16_t average_vclk1_frequency;741uint16_t average_dclk1_frequency;742743/* Current clocks */744uint16_t current_gfxclk;745uint16_t current_socclk;746uint16_t current_uclk;747uint16_t current_vclk0;748uint16_t current_dclk0;749uint16_t current_vclk1;750uint16_t current_dclk1;751752/* Throttle status */753uint32_t throttle_status;754755/* Fans */756uint16_t current_fan_speed;757758/* Link width/speed */759uint16_t pcie_link_width;760uint16_t pcie_link_speed; // in 0.1 GT/s761762uint16_t padding;763764uint32_t gfx_activity_acc;765uint32_t mem_activity_acc;766767uint16_t temperature_hbm[NUM_HBM_INSTANCES];768769/* PMFW attached timestamp (10ns resolution) */770uint64_t firmware_timestamp;771772/* Voltage (mV) */773uint16_t voltage_soc;774uint16_t voltage_gfx;775uint16_t voltage_mem;776777uint16_t padding1;778779/* Throttle status (ASIC independent) */780uint64_t indep_throttle_status;781};782783struct gpu_metrics_v1_4 {784struct metrics_table_header common_header;785786/* Temperature (Celsius) */787uint16_t temperature_hotspot;788uint16_t temperature_mem;789uint16_t temperature_vrsoc;790791/* Power (Watts) */792uint16_t curr_socket_power;793794/* Utilization (%) */795uint16_t average_gfx_activity;796uint16_t average_umc_activity; // memory controller797uint16_t vcn_activity[NUM_VCN];798799/* Energy (15.259uJ (2^-16) units) */800uint64_t energy_accumulator;801802/* Driver attached timestamp (in ns) */803uint64_t system_clock_counter;804805/* Throttle status */806uint32_t throttle_status;807808/* Clock Lock Status. Each bit corresponds to clock instance */809uint32_t gfxclk_lock_status;810811/* Link width (number of lanes) and speed (in 0.1 GT/s) */812uint16_t pcie_link_width;813uint16_t pcie_link_speed;814815/* XGMI bus width and bitrate (in Gbps) */816uint16_t xgmi_link_width;817uint16_t xgmi_link_speed;818819/* Utilization Accumulated (%) */820uint32_t gfx_activity_acc;821uint32_t mem_activity_acc;822823/*PCIE accumulated bandwidth (GB/sec) */824uint64_t pcie_bandwidth_acc;825826/*PCIE instantaneous bandwidth (GB/sec) */827uint64_t pcie_bandwidth_inst;828829/* PCIE L0 to recovery state transition accumulated count */830uint64_t pcie_l0_to_recov_count_acc;831832/* PCIE replay accumulated count */833uint64_t pcie_replay_count_acc;834835/* PCIE replay rollover accumulated count */836uint64_t pcie_replay_rover_count_acc;837838/* XGMI accumulated data transfer size(KiloBytes) */839uint64_t xgmi_read_data_acc[NUM_XGMI_LINKS];840uint64_t xgmi_write_data_acc[NUM_XGMI_LINKS];841842/* PMFW attached timestamp (10ns resolution) */843uint64_t firmware_timestamp;844845/* Current clocks (Mhz) */846uint16_t current_gfxclk[MAX_GFX_CLKS];847uint16_t current_socclk[MAX_CLKS];848uint16_t current_vclk0[MAX_CLKS];849uint16_t current_dclk0[MAX_CLKS];850uint16_t current_uclk;851852uint16_t padding;853};854855struct gpu_metrics_v1_5 {856struct metrics_table_header common_header;857858/* Temperature (Celsius) */859uint16_t temperature_hotspot;860uint16_t temperature_mem;861uint16_t temperature_vrsoc;862863/* Power (Watts) */864uint16_t curr_socket_power;865866/* Utilization (%) */867uint16_t average_gfx_activity;868uint16_t average_umc_activity; // memory controller869uint16_t vcn_activity[NUM_VCN];870uint16_t jpeg_activity[NUM_JPEG_ENG];871872/* Energy (15.259uJ (2^-16) units) */873uint64_t energy_accumulator;874875/* Driver attached timestamp (in ns) */876uint64_t system_clock_counter;877878/* Throttle status */879uint32_t throttle_status;880881/* Clock Lock Status. Each bit corresponds to clock instance */882uint32_t gfxclk_lock_status;883884/* Link width (number of lanes) and speed (in 0.1 GT/s) */885uint16_t pcie_link_width;886uint16_t pcie_link_speed;887888/* XGMI bus width and bitrate (in Gbps) */889uint16_t xgmi_link_width;890uint16_t xgmi_link_speed;891892/* Utilization Accumulated (%) */893uint32_t gfx_activity_acc;894uint32_t mem_activity_acc;895896/*PCIE accumulated bandwidth (GB/sec) */897uint64_t pcie_bandwidth_acc;898899/*PCIE instantaneous bandwidth (GB/sec) */900uint64_t pcie_bandwidth_inst;901902/* PCIE L0 to recovery state transition accumulated count */903uint64_t pcie_l0_to_recov_count_acc;904905/* PCIE replay accumulated count */906uint64_t pcie_replay_count_acc;907908/* PCIE replay rollover accumulated count */909uint64_t pcie_replay_rover_count_acc;910911/* PCIE NAK sent accumulated count */912uint32_t pcie_nak_sent_count_acc;913914/* PCIE NAK received accumulated count */915uint32_t pcie_nak_rcvd_count_acc;916917/* XGMI accumulated data transfer size(KiloBytes) */918uint64_t xgmi_read_data_acc[NUM_XGMI_LINKS];919uint64_t xgmi_write_data_acc[NUM_XGMI_LINKS];920921/* PMFW attached timestamp (10ns resolution) */922uint64_t firmware_timestamp;923924/* Current clocks (Mhz) */925uint16_t current_gfxclk[MAX_GFX_CLKS];926uint16_t current_socclk[MAX_CLKS];927uint16_t current_vclk0[MAX_CLKS];928uint16_t current_dclk0[MAX_CLKS];929uint16_t current_uclk;930931uint16_t padding;932};933934struct gpu_metrics_v1_6 {935struct metrics_table_header common_header;936937/* Temperature (Celsius) */938uint16_t temperature_hotspot;939uint16_t temperature_mem;940uint16_t temperature_vrsoc;941942/* Power (Watts) */943uint16_t curr_socket_power;944945/* Utilization (%) */946uint16_t average_gfx_activity;947uint16_t average_umc_activity; // memory controller948949/* Energy (15.259uJ (2^-16) units) */950uint64_t energy_accumulator;951952/* Driver attached timestamp (in ns) */953uint64_t system_clock_counter;954955/* Accumulation cycle counter */956uint32_t accumulation_counter;957958/* Accumulated throttler residencies */959uint32_t prochot_residency_acc;960uint32_t ppt_residency_acc;961uint32_t socket_thm_residency_acc;962uint32_t vr_thm_residency_acc;963uint32_t hbm_thm_residency_acc;964965/* Clock Lock Status. Each bit corresponds to clock instance */966uint32_t gfxclk_lock_status;967968/* Link width (number of lanes) and speed (in 0.1 GT/s) */969uint16_t pcie_link_width;970uint16_t pcie_link_speed;971972/* XGMI bus width and bitrate (in Gbps) */973uint16_t xgmi_link_width;974uint16_t xgmi_link_speed;975976/* Utilization Accumulated (%) */977uint32_t gfx_activity_acc;978uint32_t mem_activity_acc;979980/*PCIE accumulated bandwidth (GB/sec) */981uint64_t pcie_bandwidth_acc;982983/*PCIE instantaneous bandwidth (GB/sec) */984uint64_t pcie_bandwidth_inst;985986/* PCIE L0 to recovery state transition accumulated count */987uint64_t pcie_l0_to_recov_count_acc;988989/* PCIE replay accumulated count */990uint64_t pcie_replay_count_acc;991992/* PCIE replay rollover accumulated count */993uint64_t pcie_replay_rover_count_acc;994995/* PCIE NAK sent accumulated count */996uint32_t pcie_nak_sent_count_acc;997998/* PCIE NAK received accumulated count */999uint32_t pcie_nak_rcvd_count_acc;10001001/* XGMI accumulated data transfer size(KiloBytes) */1002uint64_t xgmi_read_data_acc[NUM_XGMI_LINKS];1003uint64_t xgmi_write_data_acc[NUM_XGMI_LINKS];10041005/* PMFW attached timestamp (10ns resolution) */1006uint64_t firmware_timestamp;10071008/* Current clocks (Mhz) */1009uint16_t current_gfxclk[MAX_GFX_CLKS];1010uint16_t current_socclk[MAX_CLKS];1011uint16_t current_vclk0[MAX_CLKS];1012uint16_t current_dclk0[MAX_CLKS];1013uint16_t current_uclk;10141015/* Number of current partition */1016uint16_t num_partition;10171018/* XCP metrics stats */1019struct amdgpu_xcp_metrics xcp_stats[NUM_XCP];10201021/* PCIE other end recovery counter */1022uint32_t pcie_lc_perf_other_end_recovery;1023};10241025struct gpu_metrics_v1_7 {1026struct metrics_table_header common_header;10271028/* Temperature (Celsius) */1029uint16_t temperature_hotspot;1030uint16_t temperature_mem;1031uint16_t temperature_vrsoc;10321033/* Power (Watts) */1034uint16_t curr_socket_power;10351036/* Utilization (%) */1037uint16_t average_gfx_activity;1038uint16_t average_umc_activity; // memory controller10391040/* VRAM max bandwidthi (in GB/sec) at max memory clock */1041uint64_t mem_max_bandwidth;10421043/* Energy (15.259uJ (2^-16) units) */1044uint64_t energy_accumulator;10451046/* Driver attached timestamp (in ns) */1047uint64_t system_clock_counter;10481049/* Accumulation cycle counter */1050uint32_t accumulation_counter;10511052/* Accumulated throttler residencies */1053uint32_t prochot_residency_acc;1054uint32_t ppt_residency_acc;1055uint32_t socket_thm_residency_acc;1056uint32_t vr_thm_residency_acc;1057uint32_t hbm_thm_residency_acc;10581059/* Clock Lock Status. Each bit corresponds to clock instance */1060uint32_t gfxclk_lock_status;10611062/* Link width (number of lanes) and speed (in 0.1 GT/s) */1063uint16_t pcie_link_width;1064uint16_t pcie_link_speed;10651066/* XGMI bus width and bitrate (in Gbps) */1067uint16_t xgmi_link_width;1068uint16_t xgmi_link_speed;10691070/* Utilization Accumulated (%) */1071uint32_t gfx_activity_acc;1072uint32_t mem_activity_acc;10731074/*PCIE accumulated bandwidth (GB/sec) */1075uint64_t pcie_bandwidth_acc;10761077/*PCIE instantaneous bandwidth (GB/sec) */1078uint64_t pcie_bandwidth_inst;10791080/* PCIE L0 to recovery state transition accumulated count */1081uint64_t pcie_l0_to_recov_count_acc;10821083/* PCIE replay accumulated count */1084uint64_t pcie_replay_count_acc;10851086/* PCIE replay rollover accumulated count */1087uint64_t pcie_replay_rover_count_acc;10881089/* PCIE NAK sent accumulated count */1090uint32_t pcie_nak_sent_count_acc;10911092/* PCIE NAK received accumulated count */1093uint32_t pcie_nak_rcvd_count_acc;10941095/* XGMI accumulated data transfer size(KiloBytes) */1096uint64_t xgmi_read_data_acc[NUM_XGMI_LINKS];1097uint64_t xgmi_write_data_acc[NUM_XGMI_LINKS];10981099/* XGMI link status(active/inactive) */1100uint16_t xgmi_link_status[NUM_XGMI_LINKS];11011102uint16_t padding;11031104/* PMFW attached timestamp (10ns resolution) */1105uint64_t firmware_timestamp;11061107/* Current clocks (Mhz) */1108uint16_t current_gfxclk[MAX_GFX_CLKS];1109uint16_t current_socclk[MAX_CLKS];1110uint16_t current_vclk0[MAX_CLKS];1111uint16_t current_dclk0[MAX_CLKS];1112uint16_t current_uclk;11131114/* Number of current partition */1115uint16_t num_partition;11161117/* XCP metrics stats */1118struct amdgpu_xcp_metrics_v1_1 xcp_stats[NUM_XCP];11191120/* PCIE other end recovery counter */1121uint32_t pcie_lc_perf_other_end_recovery;1122};11231124struct gpu_metrics_v1_8 {1125struct metrics_table_header common_header;11261127/* Temperature (Celsius) */1128uint16_t temperature_hotspot;1129uint16_t temperature_mem;1130uint16_t temperature_vrsoc;11311132/* Power (Watts) */1133uint16_t curr_socket_power;11341135/* Utilization (%) */1136uint16_t average_gfx_activity;1137uint16_t average_umc_activity; // memory controller11381139/* VRAM max bandwidthi (in GB/sec) at max memory clock */1140uint64_t mem_max_bandwidth;11411142/* Energy (15.259uJ (2^-16) units) */1143uint64_t energy_accumulator;11441145/* Driver attached timestamp (in ns) */1146uint64_t system_clock_counter;11471148/* Accumulation cycle counter */1149uint32_t accumulation_counter;11501151/* Accumulated throttler residencies */1152uint32_t prochot_residency_acc;1153uint32_t ppt_residency_acc;1154uint32_t socket_thm_residency_acc;1155uint32_t vr_thm_residency_acc;1156uint32_t hbm_thm_residency_acc;11571158/* Clock Lock Status. Each bit corresponds to clock instance */1159uint32_t gfxclk_lock_status;11601161/* Link width (number of lanes) and speed (in 0.1 GT/s) */1162uint16_t pcie_link_width;1163uint16_t pcie_link_speed;11641165/* XGMI bus width and bitrate (in Gbps) */1166uint16_t xgmi_link_width;1167uint16_t xgmi_link_speed;11681169/* Utilization Accumulated (%) */1170uint32_t gfx_activity_acc;1171uint32_t mem_activity_acc;11721173/*PCIE accumulated bandwidth (GB/sec) */1174uint64_t pcie_bandwidth_acc;11751176/*PCIE instantaneous bandwidth (GB/sec) */1177uint64_t pcie_bandwidth_inst;11781179/* PCIE L0 to recovery state transition accumulated count */1180uint64_t pcie_l0_to_recov_count_acc;11811182/* PCIE replay accumulated count */1183uint64_t pcie_replay_count_acc;11841185/* PCIE replay rollover accumulated count */1186uint64_t pcie_replay_rover_count_acc;11871188/* PCIE NAK sent accumulated count */1189uint32_t pcie_nak_sent_count_acc;11901191/* PCIE NAK received accumulated count */1192uint32_t pcie_nak_rcvd_count_acc;11931194/* XGMI accumulated data transfer size(KiloBytes) */1195uint64_t xgmi_read_data_acc[NUM_XGMI_LINKS];1196uint64_t xgmi_write_data_acc[NUM_XGMI_LINKS];11971198/* XGMI link status(active/inactive) */1199uint16_t xgmi_link_status[NUM_XGMI_LINKS];12001201uint16_t padding;12021203/* PMFW attached timestamp (10ns resolution) */1204uint64_t firmware_timestamp;12051206/* Current clocks (Mhz) */1207uint16_t current_gfxclk[MAX_GFX_CLKS];1208uint16_t current_socclk[MAX_CLKS];1209uint16_t current_vclk0[MAX_CLKS];1210uint16_t current_dclk0[MAX_CLKS];1211uint16_t current_uclk;12121213/* Number of current partition */1214uint16_t num_partition;12151216/* XCP metrics stats */1217struct amdgpu_xcp_metrics_v1_2 xcp_stats[NUM_XCP];12181219/* PCIE other end recovery counter */1220uint32_t pcie_lc_perf_other_end_recovery;1221};12221223/*1224* gpu_metrics_v2_0 is not recommended as it's not naturally aligned.1225* Use gpu_metrics_v2_1 or later instead.1226*/1227struct gpu_metrics_v2_0 {1228struct metrics_table_header common_header;12291230/* Driver attached timestamp (in ns) */1231uint64_t system_clock_counter;12321233/* Temperature */1234uint16_t temperature_gfx; // gfx temperature on APUs1235uint16_t temperature_soc; // soc temperature on APUs1236uint16_t temperature_core[8]; // CPU core temperature on APUs1237uint16_t temperature_l3[2];12381239/* Utilization */1240uint16_t average_gfx_activity;1241uint16_t average_mm_activity; // UVD or VCN12421243/* Power/Energy */1244uint16_t average_socket_power; // dGPU + APU power on A + A platform1245uint16_t average_cpu_power;1246uint16_t average_soc_power;1247uint16_t average_gfx_power;1248uint16_t average_core_power[8]; // CPU core power on APUs12491250/* Average clocks */1251uint16_t average_gfxclk_frequency;1252uint16_t average_socclk_frequency;1253uint16_t average_uclk_frequency;1254uint16_t average_fclk_frequency;1255uint16_t average_vclk_frequency;1256uint16_t average_dclk_frequency;12571258/* Current clocks */1259uint16_t current_gfxclk;1260uint16_t current_socclk;1261uint16_t current_uclk;1262uint16_t current_fclk;1263uint16_t current_vclk;1264uint16_t current_dclk;1265uint16_t current_coreclk[8]; // CPU core clocks1266uint16_t current_l3clk[2];12671268/* Throttle status */1269uint32_t throttle_status;12701271/* Fans */1272uint16_t fan_pwm;12731274uint16_t padding;1275};12761277struct gpu_metrics_v2_1 {1278struct metrics_table_header common_header;12791280/* Temperature */1281uint16_t temperature_gfx; // gfx temperature on APUs1282uint16_t temperature_soc; // soc temperature on APUs1283uint16_t temperature_core[8]; // CPU core temperature on APUs1284uint16_t temperature_l3[2];12851286/* Utilization */1287uint16_t average_gfx_activity;1288uint16_t average_mm_activity; // UVD or VCN12891290/* Driver attached timestamp (in ns) */1291uint64_t system_clock_counter;12921293/* Power/Energy */1294uint16_t average_socket_power; // dGPU + APU power on A + A platform1295uint16_t average_cpu_power;1296uint16_t average_soc_power;1297uint16_t average_gfx_power;1298uint16_t average_core_power[8]; // CPU core power on APUs12991300/* Average clocks */1301uint16_t average_gfxclk_frequency;1302uint16_t average_socclk_frequency;1303uint16_t average_uclk_frequency;1304uint16_t average_fclk_frequency;1305uint16_t average_vclk_frequency;1306uint16_t average_dclk_frequency;13071308/* Current clocks */1309uint16_t current_gfxclk;1310uint16_t current_socclk;1311uint16_t current_uclk;1312uint16_t current_fclk;1313uint16_t current_vclk;1314uint16_t current_dclk;1315uint16_t current_coreclk[8]; // CPU core clocks1316uint16_t current_l3clk[2];13171318/* Throttle status */1319uint32_t throttle_status;13201321/* Fans */1322uint16_t fan_pwm;13231324uint16_t padding[3];1325};13261327struct gpu_metrics_v2_2 {1328struct metrics_table_header common_header;13291330/* Temperature */1331uint16_t temperature_gfx; // gfx temperature on APUs1332uint16_t temperature_soc; // soc temperature on APUs1333uint16_t temperature_core[8]; // CPU core temperature on APUs1334uint16_t temperature_l3[2];13351336/* Utilization */1337uint16_t average_gfx_activity;1338uint16_t average_mm_activity; // UVD or VCN13391340/* Driver attached timestamp (in ns) */1341uint64_t system_clock_counter;13421343/* Power/Energy */1344uint16_t average_socket_power; // dGPU + APU power on A + A platform1345uint16_t average_cpu_power;1346uint16_t average_soc_power;1347uint16_t average_gfx_power;1348uint16_t average_core_power[8]; // CPU core power on APUs13491350/* Average clocks */1351uint16_t average_gfxclk_frequency;1352uint16_t average_socclk_frequency;1353uint16_t average_uclk_frequency;1354uint16_t average_fclk_frequency;1355uint16_t average_vclk_frequency;1356uint16_t average_dclk_frequency;13571358/* Current clocks */1359uint16_t current_gfxclk;1360uint16_t current_socclk;1361uint16_t current_uclk;1362uint16_t current_fclk;1363uint16_t current_vclk;1364uint16_t current_dclk;1365uint16_t current_coreclk[8]; // CPU core clocks1366uint16_t current_l3clk[2];13671368/* Throttle status (ASIC dependent) */1369uint32_t throttle_status;13701371/* Fans */1372uint16_t fan_pwm;13731374uint16_t padding[3];13751376/* Throttle status (ASIC independent) */1377uint64_t indep_throttle_status;1378};13791380struct gpu_metrics_v2_3 {1381struct metrics_table_header common_header;13821383/* Temperature */1384uint16_t temperature_gfx; // gfx temperature on APUs1385uint16_t temperature_soc; // soc temperature on APUs1386uint16_t temperature_core[8]; // CPU core temperature on APUs1387uint16_t temperature_l3[2];13881389/* Utilization */1390uint16_t average_gfx_activity;1391uint16_t average_mm_activity; // UVD or VCN13921393/* Driver attached timestamp (in ns) */1394uint64_t system_clock_counter;13951396/* Power/Energy */1397uint16_t average_socket_power; // dGPU + APU power on A + A platform1398uint16_t average_cpu_power;1399uint16_t average_soc_power;1400uint16_t average_gfx_power;1401uint16_t average_core_power[8]; // CPU core power on APUs14021403/* Average clocks */1404uint16_t average_gfxclk_frequency;1405uint16_t average_socclk_frequency;1406uint16_t average_uclk_frequency;1407uint16_t average_fclk_frequency;1408uint16_t average_vclk_frequency;1409uint16_t average_dclk_frequency;14101411/* Current clocks */1412uint16_t current_gfxclk;1413uint16_t current_socclk;1414uint16_t current_uclk;1415uint16_t current_fclk;1416uint16_t current_vclk;1417uint16_t current_dclk;1418uint16_t current_coreclk[8]; // CPU core clocks1419uint16_t current_l3clk[2];14201421/* Throttle status (ASIC dependent) */1422uint32_t throttle_status;14231424/* Fans */1425uint16_t fan_pwm;14261427uint16_t padding[3];14281429/* Throttle status (ASIC independent) */1430uint64_t indep_throttle_status;14311432/* Average Temperature */1433uint16_t average_temperature_gfx; // average gfx temperature on APUs1434uint16_t average_temperature_soc; // average soc temperature on APUs1435uint16_t average_temperature_core[8]; // average CPU core temperature on APUs1436uint16_t average_temperature_l3[2];1437};14381439struct gpu_metrics_v2_4 {1440struct metrics_table_header common_header;14411442/* Temperature (unit: centi-Celsius) */1443uint16_t temperature_gfx;1444uint16_t temperature_soc;1445uint16_t temperature_core[8];1446uint16_t temperature_l3[2];14471448/* Utilization (unit: centi) */1449uint16_t average_gfx_activity;1450uint16_t average_mm_activity;14511452/* Driver attached timestamp (in ns) */1453uint64_t system_clock_counter;14541455/* Power/Energy (unit: mW) */1456uint16_t average_socket_power;1457uint16_t average_cpu_power;1458uint16_t average_soc_power;1459uint16_t average_gfx_power;1460uint16_t average_core_power[8];14611462/* Average clocks (unit: MHz) */1463uint16_t average_gfxclk_frequency;1464uint16_t average_socclk_frequency;1465uint16_t average_uclk_frequency;1466uint16_t average_fclk_frequency;1467uint16_t average_vclk_frequency;1468uint16_t average_dclk_frequency;14691470/* Current clocks (unit: MHz) */1471uint16_t current_gfxclk;1472uint16_t current_socclk;1473uint16_t current_uclk;1474uint16_t current_fclk;1475uint16_t current_vclk;1476uint16_t current_dclk;1477uint16_t current_coreclk[8];1478uint16_t current_l3clk[2];14791480/* Throttle status (ASIC dependent) */1481uint32_t throttle_status;14821483/* Fans */1484uint16_t fan_pwm;14851486uint16_t padding[3];14871488/* Throttle status (ASIC independent) */1489uint64_t indep_throttle_status;14901491/* Average Temperature (unit: centi-Celsius) */1492uint16_t average_temperature_gfx;1493uint16_t average_temperature_soc;1494uint16_t average_temperature_core[8];1495uint16_t average_temperature_l3[2];14961497/* Power/Voltage (unit: mV) */1498uint16_t average_cpu_voltage;1499uint16_t average_soc_voltage;1500uint16_t average_gfx_voltage;15011502/* Power/Current (unit: mA) */1503uint16_t average_cpu_current;1504uint16_t average_soc_current;1505uint16_t average_gfx_current;1506};15071508struct gpu_metrics_v3_0 {1509struct metrics_table_header common_header;15101511/* Temperature */1512/* gfx temperature on APUs */1513uint16_t temperature_gfx;1514/* soc temperature on APUs */1515uint16_t temperature_soc;1516/* CPU core temperature on APUs */1517uint16_t temperature_core[16];1518/* skin temperature on APUs */1519uint16_t temperature_skin;15201521/* Utilization */1522/* time filtered GFX busy % [0-100] */1523uint16_t average_gfx_activity;1524/* time filtered VCN busy % [0-100] */1525uint16_t average_vcn_activity;1526/* time filtered IPU per-column busy % [0-100] */1527uint16_t average_ipu_activity[8];1528/* time filtered per-core C0 residency % [0-100]*/1529uint16_t average_core_c0_activity[16];1530/* time filtered DRAM read bandwidth [MB/sec] */1531uint16_t average_dram_reads;1532/* time filtered DRAM write bandwidth [MB/sec] */1533uint16_t average_dram_writes;1534/* time filtered IPU read bandwidth [MB/sec] */1535uint16_t average_ipu_reads;1536/* time filtered IPU write bandwidth [MB/sec] */1537uint16_t average_ipu_writes;15381539/* Driver attached timestamp (in ns) */1540uint64_t system_clock_counter;15411542/* Power/Energy */1543/* time filtered power used for PPT/STAPM [APU+dGPU] [mW] */1544uint32_t average_socket_power;1545/* time filtered IPU power [mW] */1546uint16_t average_ipu_power;1547/* time filtered APU power [mW] */1548uint32_t average_apu_power;1549/* time filtered GFX power [mW] */1550uint32_t average_gfx_power;1551/* time filtered dGPU power [mW] */1552uint32_t average_dgpu_power;1553/* time filtered sum of core power across all cores in the socket [mW] */1554uint32_t average_all_core_power;1555/* calculated core power [mW] */1556uint16_t average_core_power[16];1557/* time filtered total system power [mW] */1558uint16_t average_sys_power;1559/* maximum IRM defined STAPM power limit [mW] */1560uint16_t stapm_power_limit;1561/* time filtered STAPM power limit [mW] */1562uint16_t current_stapm_power_limit;15631564/* time filtered clocks [MHz] */1565uint16_t average_gfxclk_frequency;1566uint16_t average_socclk_frequency;1567uint16_t average_vpeclk_frequency;1568uint16_t average_ipuclk_frequency;1569uint16_t average_fclk_frequency;1570uint16_t average_vclk_frequency;1571uint16_t average_uclk_frequency;1572uint16_t average_mpipu_frequency;15731574/* Current clocks */1575/* target core frequency [MHz] */1576uint16_t current_coreclk[16];1577/* CCLK frequency limit enforced on classic cores [MHz] */1578uint16_t current_core_maxfreq;1579/* GFXCLK frequency limit enforced on GFX [MHz] */1580uint16_t current_gfx_maxfreq;15811582/* Throttle Residency (ASIC dependent) */1583uint32_t throttle_residency_prochot;1584uint32_t throttle_residency_spl;1585uint32_t throttle_residency_fppt;1586uint32_t throttle_residency_sppt;1587uint32_t throttle_residency_thm_core;1588uint32_t throttle_residency_thm_gfx;1589uint32_t throttle_residency_thm_soc;15901591/* Metrics table alpha filter time constant [us] */1592uint32_t time_filter_alphavalue;1593};15941595struct amdgpu_pmmetrics_header {1596uint16_t structure_size;1597uint16_t pad;1598uint32_t mp1_ip_discovery_version;1599uint32_t pmfw_version;1600uint32_t pmmetrics_version;1601};16021603struct amdgpu_pm_metrics {1604struct amdgpu_pmmetrics_header common_header;16051606uint8_t data[];1607};16081609enum amdgpu_vr_temp {1610AMDGPU_VDDCR_VDD0_TEMP,1611AMDGPU_VDDCR_VDD1_TEMP,1612AMDGPU_VDDCR_VDD2_TEMP,1613AMDGPU_VDDCR_VDD3_TEMP,1614AMDGPU_VDDCR_SOC_A_TEMP,1615AMDGPU_VDDCR_SOC_C_TEMP,1616AMDGPU_VDDCR_SOCIO_A_TEMP,1617AMDGPU_VDDCR_SOCIO_C_TEMP,1618AMDGPU_VDD_085_HBM_TEMP,1619AMDGPU_VDDCR_11_HBM_B_TEMP,1620AMDGPU_VDDCR_11_HBM_D_TEMP,1621AMDGPU_VDD_USR_TEMP,1622AMDGPU_VDDIO_11_E32_TEMP,1623AMDGPU_VR_MAX_TEMP_ENTRIES,1624};16251626enum amdgpu_system_temp {1627AMDGPU_UBB_FPGA_TEMP,1628AMDGPU_UBB_FRONT_TEMP,1629AMDGPU_UBB_BACK_TEMP,1630AMDGPU_UBB_OAM7_TEMP,1631AMDGPU_UBB_IBC_TEMP,1632AMDGPU_UBB_UFPGA_TEMP,1633AMDGPU_UBB_OAM1_TEMP,1634AMDGPU_OAM_0_1_HSC_TEMP,1635AMDGPU_OAM_2_3_HSC_TEMP,1636AMDGPU_OAM_4_5_HSC_TEMP,1637AMDGPU_OAM_6_7_HSC_TEMP,1638AMDGPU_UBB_FPGA_0V72_VR_TEMP,1639AMDGPU_UBB_FPGA_3V3_VR_TEMP,1640AMDGPU_RETIMER_0_1_2_3_1V2_VR_TEMP,1641AMDGPU_RETIMER_4_5_6_7_1V2_VR_TEMP,1642AMDGPU_RETIMER_0_1_0V9_VR_TEMP,1643AMDGPU_RETIMER_4_5_0V9_VR_TEMP,1644AMDGPU_RETIMER_2_3_0V9_VR_TEMP,1645AMDGPU_RETIMER_6_7_0V9_VR_TEMP,1646AMDGPU_OAM_0_1_2_3_3V3_VR_TEMP,1647AMDGPU_OAM_4_5_6_7_3V3_VR_TEMP,1648AMDGPU_IBC_HSC_TEMP,1649AMDGPU_IBC_TEMP,1650AMDGPU_SYSTEM_MAX_TEMP_ENTRIES = 32,1651};16521653enum amdgpu_node_temp {1654AMDGPU_RETIMER_X_TEMP,1655AMDGPU_OAM_X_IBC_TEMP,1656AMDGPU_OAM_X_IBC_2_TEMP,1657AMDGPU_OAM_X_VDD18_VR_TEMP,1658AMDGPU_OAM_X_04_HBM_B_VR_TEMP,1659AMDGPU_OAM_X_04_HBM_D_VR_TEMP,1660AMDGPU_NODE_MAX_TEMP_ENTRIES = 12,1661};16621663struct amdgpu_gpuboard_temp_metrics_v1_0 {1664struct metrics_table_header common_header;1665uint16_t label_version;1666uint16_t node_id;1667uint64_t accumulation_counter;1668/* Encoded temperature in Celcius, 24:31 is sensor id 0:23 is temp value */1669uint32_t node_temp[AMDGPU_NODE_MAX_TEMP_ENTRIES];1670uint32_t vr_temp[AMDGPU_VR_MAX_TEMP_ENTRIES];1671};16721673struct amdgpu_baseboard_temp_metrics_v1_0 {1674struct metrics_table_header common_header;1675uint16_t label_version;1676uint16_t node_id;1677uint64_t accumulation_counter;1678/* Encoded temperature in Celcius, 24:31 is sensor id 0:23 is temp value */1679uint32_t system_temp[AMDGPU_SYSTEM_MAX_TEMP_ENTRIES];1680};16811682struct amdgpu_partition_metrics_v1_0 {1683struct metrics_table_header common_header;1684/* Current clocks (Mhz) */1685uint16_t current_gfxclk[MAX_XCC];1686uint16_t current_socclk[MAX_CLKS];1687uint16_t current_vclk0[MAX_CLKS];1688uint16_t current_dclk0[MAX_CLKS];1689uint16_t current_uclk;1690uint16_t padding;16911692/* Utilization Instantaneous (%) */1693uint32_t gfx_busy_inst[MAX_XCC];1694uint16_t jpeg_busy[NUM_JPEG_ENG_V1];1695uint16_t vcn_busy[NUM_VCN];1696/* Utilization Accumulated (%) */1697uint64_t gfx_busy_acc[MAX_XCC];1698/* Total App Clock Counter Accumulated */1699uint64_t gfx_below_host_limit_ppt_acc[MAX_XCC];1700uint64_t gfx_below_host_limit_thm_acc[MAX_XCC];1701uint64_t gfx_low_utilization_acc[MAX_XCC];1702uint64_t gfx_below_host_limit_total_acc[MAX_XCC];1703};17041705#endif170617071708