Path: blob/master/drivers/gpu/drm/amd/include/kgd_pp_interface.h
26517 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_event_type {33SMU_EVENT_RESET_COMPLETE = 0,34};3536struct amd_vce_state {37/* vce clocks */38u32 evclk;39u32 ecclk;40/* gpu clocks */41u32 sclk;42u32 mclk;43u8 clk_idx;44u8 pstate;45};464748enum amd_dpm_forced_level {49AMD_DPM_FORCED_LEVEL_AUTO = 0x1,50AMD_DPM_FORCED_LEVEL_MANUAL = 0x2,51AMD_DPM_FORCED_LEVEL_LOW = 0x4,52AMD_DPM_FORCED_LEVEL_HIGH = 0x8,53AMD_DPM_FORCED_LEVEL_PROFILE_STANDARD = 0x10,54AMD_DPM_FORCED_LEVEL_PROFILE_MIN_SCLK = 0x20,55AMD_DPM_FORCED_LEVEL_PROFILE_MIN_MCLK = 0x40,56AMD_DPM_FORCED_LEVEL_PROFILE_PEAK = 0x80,57AMD_DPM_FORCED_LEVEL_PROFILE_EXIT = 0x100,58AMD_DPM_FORCED_LEVEL_PERF_DETERMINISM = 0x200,59};6061enum amd_pm_state_type {62/* not used for dpm */63POWER_STATE_TYPE_DEFAULT,64POWER_STATE_TYPE_POWERSAVE,65/* user selectable states */66POWER_STATE_TYPE_BATTERY,67POWER_STATE_TYPE_BALANCED,68POWER_STATE_TYPE_PERFORMANCE,69/* internal states */70POWER_STATE_TYPE_INTERNAL_UVD,71POWER_STATE_TYPE_INTERNAL_UVD_SD,72POWER_STATE_TYPE_INTERNAL_UVD_HD,73POWER_STATE_TYPE_INTERNAL_UVD_HD2,74POWER_STATE_TYPE_INTERNAL_UVD_MVC,75POWER_STATE_TYPE_INTERNAL_BOOT,76POWER_STATE_TYPE_INTERNAL_THERMAL,77POWER_STATE_TYPE_INTERNAL_ACPI,78POWER_STATE_TYPE_INTERNAL_ULV,79POWER_STATE_TYPE_INTERNAL_3DPERF,80};8182#define AMD_MAX_VCE_LEVELS 68384enum amd_vce_level {85AMD_VCE_LEVEL_AC_ALL = 0, /* AC, All cases */86AMD_VCE_LEVEL_DC_EE = 1, /* DC, entropy encoding */87AMD_VCE_LEVEL_DC_LL_LOW = 2, /* DC, low latency queue, res <= 720 */88AMD_VCE_LEVEL_DC_LL_HIGH = 3, /* DC, low latency queue, 1080 >= res > 720 */89AMD_VCE_LEVEL_DC_GP_LOW = 4, /* DC, general purpose queue, res <= 720 */90AMD_VCE_LEVEL_DC_GP_HIGH = 5, /* DC, general purpose queue, 1080 >= res > 720 */91};9293enum amd_fan_ctrl_mode {94AMD_FAN_CTRL_NONE = 0,95AMD_FAN_CTRL_MANUAL = 1,96AMD_FAN_CTRL_AUTO = 2,97};9899enum pp_clock_type {100PP_SCLK,101PP_MCLK,102PP_PCIE,103PP_SOCCLK,104PP_FCLK,105PP_DCEFCLK,106PP_VCLK,107PP_VCLK1,108PP_DCLK,109PP_DCLK1,110PP_ISPICLK,111PP_ISPXCLK,112OD_SCLK,113OD_MCLK,114OD_VDDC_CURVE,115OD_RANGE,116OD_VDDGFX_OFFSET,117OD_CCLK,118OD_FAN_CURVE,119OD_ACOUSTIC_LIMIT,120OD_ACOUSTIC_TARGET,121OD_FAN_TARGET_TEMPERATURE,122OD_FAN_MINIMUM_PWM,123OD_FAN_ZERO_RPM_ENABLE,124OD_FAN_ZERO_RPM_STOP_TEMP,125};126127enum amd_pp_sensors {128AMDGPU_PP_SENSOR_GFX_SCLK = 0,129AMDGPU_PP_SENSOR_CPU_CLK,130AMDGPU_PP_SENSOR_VDDNB,131AMDGPU_PP_SENSOR_VDDGFX,132AMDGPU_PP_SENSOR_VDDBOARD,133AMDGPU_PP_SENSOR_UVD_VCLK,134AMDGPU_PP_SENSOR_UVD_DCLK,135AMDGPU_PP_SENSOR_VCE_ECCLK,136AMDGPU_PP_SENSOR_GPU_LOAD,137AMDGPU_PP_SENSOR_MEM_LOAD,138AMDGPU_PP_SENSOR_GFX_MCLK,139AMDGPU_PP_SENSOR_GPU_TEMP,140AMDGPU_PP_SENSOR_EDGE_TEMP = AMDGPU_PP_SENSOR_GPU_TEMP,141AMDGPU_PP_SENSOR_HOTSPOT_TEMP,142AMDGPU_PP_SENSOR_MEM_TEMP,143AMDGPU_PP_SENSOR_VCE_POWER,144AMDGPU_PP_SENSOR_UVD_POWER,145AMDGPU_PP_SENSOR_GPU_AVG_POWER,146AMDGPU_PP_SENSOR_GPU_INPUT_POWER,147AMDGPU_PP_SENSOR_SS_APU_SHARE,148AMDGPU_PP_SENSOR_SS_DGPU_SHARE,149AMDGPU_PP_SENSOR_STABLE_PSTATE_SCLK,150AMDGPU_PP_SENSOR_STABLE_PSTATE_MCLK,151AMDGPU_PP_SENSOR_ENABLED_SMC_FEATURES_MASK,152AMDGPU_PP_SENSOR_MIN_FAN_RPM,153AMDGPU_PP_SENSOR_MAX_FAN_RPM,154AMDGPU_PP_SENSOR_VCN_POWER_STATE,155AMDGPU_PP_SENSOR_PEAK_PSTATE_SCLK,156AMDGPU_PP_SENSOR_PEAK_PSTATE_MCLK,157AMDGPU_PP_SENSOR_VCN_LOAD,158};159160enum amd_pp_task {161AMD_PP_TASK_DISPLAY_CONFIG_CHANGE,162AMD_PP_TASK_ENABLE_USER_STATE,163AMD_PP_TASK_READJUST_POWER_STATE,164AMD_PP_TASK_COMPLETE_INIT,165AMD_PP_TASK_MAX166};167168enum PP_SMC_POWER_PROFILE {169PP_SMC_POWER_PROFILE_UNKNOWN = -1,170PP_SMC_POWER_PROFILE_BOOTUP_DEFAULT = 0x0,171PP_SMC_POWER_PROFILE_FULLSCREEN3D = 0x1,172PP_SMC_POWER_PROFILE_POWERSAVING = 0x2,173PP_SMC_POWER_PROFILE_VIDEO = 0x3,174PP_SMC_POWER_PROFILE_VR = 0x4,175PP_SMC_POWER_PROFILE_COMPUTE = 0x5,176PP_SMC_POWER_PROFILE_CUSTOM = 0x6,177PP_SMC_POWER_PROFILE_WINDOW3D = 0x7,178PP_SMC_POWER_PROFILE_CAPPED = 0x8,179PP_SMC_POWER_PROFILE_UNCAPPED = 0x9,180PP_SMC_POWER_PROFILE_COUNT,181};182183extern const char * const amdgpu_pp_profile_name[PP_SMC_POWER_PROFILE_COUNT];184185186187enum {188PP_GROUP_UNKNOWN = 0,189PP_GROUP_GFX = 1,190PP_GROUP_SYS,191PP_GROUP_MAX192};193194enum PP_OD_DPM_TABLE_COMMAND {195PP_OD_EDIT_SCLK_VDDC_TABLE,196PP_OD_EDIT_MCLK_VDDC_TABLE,197PP_OD_EDIT_CCLK_VDDC_TABLE,198PP_OD_EDIT_VDDC_CURVE,199PP_OD_RESTORE_DEFAULT_TABLE,200PP_OD_COMMIT_DPM_TABLE,201PP_OD_EDIT_VDDGFX_OFFSET,202PP_OD_EDIT_FAN_CURVE,203PP_OD_EDIT_ACOUSTIC_LIMIT,204PP_OD_EDIT_ACOUSTIC_TARGET,205PP_OD_EDIT_FAN_TARGET_TEMPERATURE,206PP_OD_EDIT_FAN_MINIMUM_PWM,207PP_OD_EDIT_FAN_ZERO_RPM_ENABLE,208PP_OD_EDIT_FAN_ZERO_RPM_STOP_TEMP,209};210211struct pp_states_info {212uint32_t nums;213uint32_t states[16];214};215216enum PP_HWMON_TEMP {217PP_TEMP_EDGE = 0,218PP_TEMP_JUNCTION,219PP_TEMP_MEM,220PP_TEMP_MAX221};222223enum pp_mp1_state {224PP_MP1_STATE_NONE,225PP_MP1_STATE_SHUTDOWN,226PP_MP1_STATE_UNLOAD,227PP_MP1_STATE_RESET,228PP_MP1_STATE_FLR,229};230231enum pp_df_cstate {232DF_CSTATE_DISALLOW = 0,233DF_CSTATE_ALLOW,234};235236/**237* DOC: amdgpu_pp_power238*239* APU power is managed to system-level requirements through the PPT240* (package power tracking) feature. PPT is intended to limit power to the241* requirements of the power source and could be dynamically updated to242* maximize APU performance within the system power budget.243*244* Two types of power measurement can be requested, where supported, with245* :c:type:`enum pp_power_type <pp_power_type>`.246*/247248/**249* enum pp_power_limit_level - Used to query the power limits250*251* @PP_PWR_LIMIT_MIN: Minimum Power Limit252* @PP_PWR_LIMIT_CURRENT: Current Power Limit253* @PP_PWR_LIMIT_DEFAULT: Default Power Limit254* @PP_PWR_LIMIT_MAX: Maximum Power Limit255*/256enum pp_power_limit_level {257PP_PWR_LIMIT_MIN = -1,258PP_PWR_LIMIT_CURRENT,259PP_PWR_LIMIT_DEFAULT,260PP_PWR_LIMIT_MAX,261};262263/**264* enum pp_power_type - Used to specify the type of the requested power265*266* @PP_PWR_TYPE_SUSTAINED: manages the configurable, thermally significant267* moving average of APU power (default ~5000 ms).268* @PP_PWR_TYPE_FAST: manages the ~10 ms moving average of APU power,269* where supported.270*/271enum pp_power_type {272PP_PWR_TYPE_SUSTAINED,273PP_PWR_TYPE_FAST,274};275276enum pp_xgmi_plpd_mode {277XGMI_PLPD_NONE = -1,278XGMI_PLPD_DISALLOW,279XGMI_PLPD_DEFAULT,280XGMI_PLPD_OPTIMIZED,281XGMI_PLPD_COUNT,282};283284enum pp_pm_policy {285PP_PM_POLICY_NONE = -1,286PP_PM_POLICY_SOC_PSTATE = 0,287PP_PM_POLICY_XGMI_PLPD,288PP_PM_POLICY_NUM,289};290291enum pp_policy_soc_pstate {292SOC_PSTATE_DEFAULT = 0,293SOC_PSTATE_0,294SOC_PSTATE_1,295SOC_PSTATE_2,296SOC_PSTAT_COUNT,297};298299#define PP_POLICY_MAX_LEVELS 5300301#define PP_GROUP_MASK 0xF0000000302#define PP_GROUP_SHIFT 28303304#define PP_BLOCK_MASK 0x0FFFFF00305#define PP_BLOCK_SHIFT 8306307#define PP_BLOCK_GFX_CG 0x01308#define PP_BLOCK_GFX_MG 0x02309#define PP_BLOCK_GFX_3D 0x04310#define PP_BLOCK_GFX_RLC 0x08311#define PP_BLOCK_GFX_CP 0x10312#define PP_BLOCK_SYS_BIF 0x01313#define PP_BLOCK_SYS_MC 0x02314#define PP_BLOCK_SYS_ROM 0x04315#define PP_BLOCK_SYS_DRM 0x08316#define PP_BLOCK_SYS_HDP 0x10317#define PP_BLOCK_SYS_SDMA 0x20318319#define PP_STATE_MASK 0x0000000F320#define PP_STATE_SHIFT 0321#define PP_STATE_SUPPORT_MASK 0x000000F0322#define PP_STATE_SUPPORT_SHIFT 0323324#define PP_STATE_CG 0x01325#define PP_STATE_LS 0x02326#define PP_STATE_DS 0x04327#define PP_STATE_SD 0x08328#define PP_STATE_SUPPORT_CG 0x10329#define PP_STATE_SUPPORT_LS 0x20330#define PP_STATE_SUPPORT_DS 0x40331#define PP_STATE_SUPPORT_SD 0x80332333#define PP_CG_MSG_ID(group, block, support, state) \334((group) << PP_GROUP_SHIFT | (block) << PP_BLOCK_SHIFT | \335(support) << PP_STATE_SUPPORT_SHIFT | (state) << PP_STATE_SHIFT)336337#define XGMI_MODE_PSTATE_D3 0338#define XGMI_MODE_PSTATE_D0 1339340#define NUM_HBM_INSTANCES 4341#define NUM_XGMI_LINKS 8342#define MAX_GFX_CLKS 8343#define MAX_CLKS 4344#define NUM_VCN 4345#define NUM_JPEG_ENG 32346#define NUM_JPEG_ENG_V1 40347#define MAX_XCC 8348#define NUM_XCP 8349struct seq_file;350enum amd_pp_clock_type;351struct amd_pp_simple_clock_info;352struct amd_pp_display_configuration;353struct amd_pp_clock_info;354struct pp_display_clock_request;355struct pp_clock_levels_with_voltage;356struct pp_clock_levels_with_latency;357struct amd_pp_clocks;358struct pp_smu_wm_range_sets;359struct pp_smu_nv_clock_table;360struct dpm_clocks;361362struct amdgpu_xcp_metrics {363/* Utilization Instantaneous (%) */364uint32_t gfx_busy_inst[MAX_XCC];365uint16_t jpeg_busy[NUM_JPEG_ENG];366uint16_t vcn_busy[NUM_VCN];367/* Utilization Accumulated (%) */368uint64_t gfx_busy_acc[MAX_XCC];369};370371struct amdgpu_xcp_metrics_v1_1 {372/* Utilization Instantaneous (%) */373uint32_t gfx_busy_inst[MAX_XCC];374uint16_t jpeg_busy[NUM_JPEG_ENG];375uint16_t vcn_busy[NUM_VCN];376/* Utilization Accumulated (%) */377uint64_t gfx_busy_acc[MAX_XCC];378/* Total App Clock Counter Accumulated */379uint64_t gfx_below_host_limit_acc[MAX_XCC];380};381382struct amdgpu_xcp_metrics_v1_2 {383/* Utilization Instantaneous (%) */384uint32_t gfx_busy_inst[MAX_XCC];385uint16_t jpeg_busy[NUM_JPEG_ENG_V1];386uint16_t vcn_busy[NUM_VCN];387/* Utilization Accumulated (%) */388uint64_t gfx_busy_acc[MAX_XCC];389/* Total App Clock Counter Accumulated */390uint64_t gfx_below_host_limit_ppt_acc[MAX_XCC];391uint64_t gfx_below_host_limit_thm_acc[MAX_XCC];392uint64_t gfx_low_utilization_acc[MAX_XCC];393uint64_t gfx_below_host_limit_total_acc[MAX_XCC];394};395396struct amd_pm_funcs {397/* export for dpm on ci and si */398int (*pre_set_power_state)(void *handle);399int (*set_power_state)(void *handle);400void (*post_set_power_state)(void *handle);401void (*display_configuration_changed)(void *handle);402void (*print_power_state)(void *handle, void *ps);403bool (*vblank_too_short)(void *handle);404void (*enable_bapm)(void *handle, bool enable);405int (*check_state_equal)(void *handle,406void *cps,407void *rps,408bool *equal);409/* export for sysfs */410int (*set_fan_control_mode)(void *handle, u32 mode);411int (*get_fan_control_mode)(void *handle, u32 *fan_mode);412int (*set_fan_speed_pwm)(void *handle, u32 speed);413int (*get_fan_speed_pwm)(void *handle, u32 *speed);414int (*force_clock_level)(void *handle, enum pp_clock_type type, uint32_t mask);415int (*print_clock_levels)(void *handle, enum pp_clock_type type, char *buf);416int (*emit_clock_levels)(void *handle, enum pp_clock_type type, char *buf, int *offset);417int (*force_performance_level)(void *handle, enum amd_dpm_forced_level level);418int (*get_sclk_od)(void *handle);419int (*set_sclk_od)(void *handle, uint32_t value);420int (*get_mclk_od)(void *handle);421int (*set_mclk_od)(void *handle, uint32_t value);422int (*read_sensor)(void *handle, int idx, void *value, int *size);423int (*get_apu_thermal_limit)(void *handle, uint32_t *limit);424int (*set_apu_thermal_limit)(void *handle, uint32_t limit);425enum amd_dpm_forced_level (*get_performance_level)(void *handle);426enum amd_pm_state_type (*get_current_power_state)(void *handle);427int (*get_fan_speed_rpm)(void *handle, uint32_t *rpm);428int (*set_fan_speed_rpm)(void *handle, uint32_t rpm);429int (*get_pp_num_states)(void *handle, struct pp_states_info *data);430int (*get_pp_table)(void *handle, char **table);431int (*set_pp_table)(void *handle, const char *buf, size_t size);432void (*debugfs_print_current_performance_level)(void *handle, struct seq_file *m);433int (*switch_power_profile)(void *handle, enum PP_SMC_POWER_PROFILE type, bool en);434int (*pause_power_profile)(void *handle, bool pause);435/* export to amdgpu */436struct amd_vce_state *(*get_vce_clock_state)(void *handle, u32 idx);437int (*dispatch_tasks)(void *handle, enum amd_pp_task task_id,438enum amd_pm_state_type *user_state);439int (*load_firmware)(void *handle);440int (*wait_for_fw_loading_complete)(void *handle);441int (*set_powergating_by_smu)(void *handle,442uint32_t block_type,443bool gate,444int inst);445int (*set_clockgating_by_smu)(void *handle, uint32_t msg_id);446int (*set_power_limit)(void *handle, uint32_t n);447int (*get_power_limit)(void *handle, uint32_t *limit,448enum pp_power_limit_level pp_limit_level,449enum pp_power_type power_type);450int (*get_power_profile_mode)(void *handle, char *buf);451int (*set_power_profile_mode)(void *handle, long *input, uint32_t size);452int (*set_fine_grain_clk_vol)(void *handle, uint32_t type, long *input, uint32_t size);453int (*odn_edit_dpm_table)(void *handle, enum PP_OD_DPM_TABLE_COMMAND type,454long *input, uint32_t size);455int (*set_mp1_state)(void *handle, enum pp_mp1_state mp1_state);456int (*smu_i2c_bus_access)(void *handle, bool acquire);457int (*gfx_state_change_set)(void *handle, uint32_t state);458/* export to DC */459u32 (*get_sclk)(void *handle, bool low);460u32 (*get_mclk)(void *handle, bool low);461int (*display_configuration_change)(void *handle,462const struct amd_pp_display_configuration *input);463int (*get_display_power_level)(void *handle,464struct amd_pp_simple_clock_info *output);465int (*get_current_clocks)(void *handle,466struct amd_pp_clock_info *clocks);467int (*get_clock_by_type)(void *handle,468enum amd_pp_clock_type type,469struct amd_pp_clocks *clocks);470int (*get_clock_by_type_with_latency)(void *handle,471enum amd_pp_clock_type type,472struct pp_clock_levels_with_latency *clocks);473int (*get_clock_by_type_with_voltage)(void *handle,474enum amd_pp_clock_type type,475struct pp_clock_levels_with_voltage *clocks);476int (*set_watermarks_for_clocks_ranges)(void *handle,477void *clock_ranges);478int (*display_clock_voltage_request)(void *handle,479struct pp_display_clock_request *clock);480int (*get_display_mode_validation_clocks)(void *handle,481struct amd_pp_simple_clock_info *clocks);482int (*notify_smu_enable_pwe)(void *handle);483int (*enable_mgpu_fan_boost)(void *handle);484int (*set_active_display_count)(void *handle, uint32_t count);485int (*set_hard_min_dcefclk_by_freq)(void *handle, uint32_t clock);486int (*set_hard_min_fclk_by_freq)(void *handle, uint32_t clock);487int (*set_min_deep_sleep_dcefclk)(void *handle, uint32_t clock);488int (*get_asic_baco_capability)(void *handle);489int (*get_asic_baco_state)(void *handle, int *state);490int (*set_asic_baco_state)(void *handle, int state);491int (*get_ppfeature_status)(void *handle, char *buf);492int (*set_ppfeature_status)(void *handle, uint64_t ppfeature_masks);493int (*asic_reset_mode_2)(void *handle);494int (*asic_reset_enable_gfx_features)(void *handle);495int (*set_df_cstate)(void *handle, enum pp_df_cstate state);496int (*set_xgmi_pstate)(void *handle, uint32_t pstate);497ssize_t (*get_gpu_metrics)(void *handle, void **table);498ssize_t (*get_xcp_metrics)(void *handle, int xcp_id, void *table);499ssize_t (*get_pm_metrics)(void *handle, void *pmmetrics, size_t size);500int (*set_watermarks_for_clock_ranges)(void *handle,501struct pp_smu_wm_range_sets *ranges);502int (*display_disable_memory_clock_switch)(void *handle,503bool disable_memory_clock_switch);504int (*get_max_sustainable_clocks_by_dc)(void *handle,505struct pp_smu_nv_clock_table *max_clocks);506int (*get_uclk_dpm_states)(void *handle,507unsigned int *clock_values_in_khz,508unsigned int *num_states);509int (*get_dpm_clock_table)(void *handle,510struct dpm_clocks *clock_table);511int (*get_smu_prv_buf_details)(void *handle, void **addr, size_t *size);512void (*pm_compute_clocks)(void *handle);513int (*notify_rlc_state)(void *handle, bool en);514};515516struct metrics_table_header {517uint16_t structure_size;518uint8_t format_revision;519uint8_t content_revision;520};521522/*523* gpu_metrics_v1_0 is not recommended as it's not naturally aligned.524* Use gpu_metrics_v1_1 or later instead.525*/526struct gpu_metrics_v1_0 {527struct metrics_table_header common_header;528529/* Driver attached timestamp (in ns) */530uint64_t system_clock_counter;531532/* Temperature */533uint16_t temperature_edge;534uint16_t temperature_hotspot;535uint16_t temperature_mem;536uint16_t temperature_vrgfx;537uint16_t temperature_vrsoc;538uint16_t temperature_vrmem;539540/* Utilization */541uint16_t average_gfx_activity;542uint16_t average_umc_activity; // memory controller543uint16_t average_mm_activity; // UVD or VCN544545/* Power/Energy */546uint16_t average_socket_power;547uint32_t energy_accumulator;548549/* Average clocks */550uint16_t average_gfxclk_frequency;551uint16_t average_socclk_frequency;552uint16_t average_uclk_frequency;553uint16_t average_vclk0_frequency;554uint16_t average_dclk0_frequency;555uint16_t average_vclk1_frequency;556uint16_t average_dclk1_frequency;557558/* Current clocks */559uint16_t current_gfxclk;560uint16_t current_socclk;561uint16_t current_uclk;562uint16_t current_vclk0;563uint16_t current_dclk0;564uint16_t current_vclk1;565uint16_t current_dclk1;566567/* Throttle status */568uint32_t throttle_status;569570/* Fans */571uint16_t current_fan_speed;572573/* Link width/speed */574uint8_t pcie_link_width;575uint8_t pcie_link_speed; // in 0.1 GT/s576};577578struct gpu_metrics_v1_1 {579struct metrics_table_header common_header;580581/* Temperature */582uint16_t temperature_edge;583uint16_t temperature_hotspot;584uint16_t temperature_mem;585uint16_t temperature_vrgfx;586uint16_t temperature_vrsoc;587uint16_t temperature_vrmem;588589/* Utilization */590uint16_t average_gfx_activity;591uint16_t average_umc_activity; // memory controller592uint16_t average_mm_activity; // UVD or VCN593594/* Power/Energy */595uint16_t average_socket_power;596uint64_t energy_accumulator;597598/* Driver attached timestamp (in ns) */599uint64_t system_clock_counter;600601/* Average clocks */602uint16_t average_gfxclk_frequency;603uint16_t average_socclk_frequency;604uint16_t average_uclk_frequency;605uint16_t average_vclk0_frequency;606uint16_t average_dclk0_frequency;607uint16_t average_vclk1_frequency;608uint16_t average_dclk1_frequency;609610/* Current clocks */611uint16_t current_gfxclk;612uint16_t current_socclk;613uint16_t current_uclk;614uint16_t current_vclk0;615uint16_t current_dclk0;616uint16_t current_vclk1;617uint16_t current_dclk1;618619/* Throttle status */620uint32_t throttle_status;621622/* Fans */623uint16_t current_fan_speed;624625/* Link width/speed */626uint16_t pcie_link_width;627uint16_t pcie_link_speed; // in 0.1 GT/s628629uint16_t padding;630631uint32_t gfx_activity_acc;632uint32_t mem_activity_acc;633634uint16_t temperature_hbm[NUM_HBM_INSTANCES];635};636637struct gpu_metrics_v1_2 {638struct metrics_table_header common_header;639640/* Temperature */641uint16_t temperature_edge;642uint16_t temperature_hotspot;643uint16_t temperature_mem;644uint16_t temperature_vrgfx;645uint16_t temperature_vrsoc;646uint16_t temperature_vrmem;647648/* Utilization */649uint16_t average_gfx_activity;650uint16_t average_umc_activity; // memory controller651uint16_t average_mm_activity; // UVD or VCN652653/* Power/Energy */654uint16_t average_socket_power;655uint64_t energy_accumulator;656657/* Driver attached timestamp (in ns) */658uint64_t system_clock_counter;659660/* Average clocks */661uint16_t average_gfxclk_frequency;662uint16_t average_socclk_frequency;663uint16_t average_uclk_frequency;664uint16_t average_vclk0_frequency;665uint16_t average_dclk0_frequency;666uint16_t average_vclk1_frequency;667uint16_t average_dclk1_frequency;668669/* Current clocks */670uint16_t current_gfxclk;671uint16_t current_socclk;672uint16_t current_uclk;673uint16_t current_vclk0;674uint16_t current_dclk0;675uint16_t current_vclk1;676uint16_t current_dclk1;677678/* Throttle status (ASIC dependent) */679uint32_t throttle_status;680681/* Fans */682uint16_t current_fan_speed;683684/* Link width/speed */685uint16_t pcie_link_width;686uint16_t pcie_link_speed; // in 0.1 GT/s687688uint16_t padding;689690uint32_t gfx_activity_acc;691uint32_t mem_activity_acc;692693uint16_t temperature_hbm[NUM_HBM_INSTANCES];694695/* PMFW attached timestamp (10ns resolution) */696uint64_t firmware_timestamp;697};698699struct gpu_metrics_v1_3 {700struct metrics_table_header common_header;701702/* Temperature */703uint16_t temperature_edge;704uint16_t temperature_hotspot;705uint16_t temperature_mem;706uint16_t temperature_vrgfx;707uint16_t temperature_vrsoc;708uint16_t temperature_vrmem;709710/* Utilization */711uint16_t average_gfx_activity;712uint16_t average_umc_activity; // memory controller713uint16_t average_mm_activity; // UVD or VCN714715/* Power/Energy */716uint16_t average_socket_power;717uint64_t energy_accumulator;718719/* Driver attached timestamp (in ns) */720uint64_t system_clock_counter;721722/* Average clocks */723uint16_t average_gfxclk_frequency;724uint16_t average_socclk_frequency;725uint16_t average_uclk_frequency;726uint16_t average_vclk0_frequency;727uint16_t average_dclk0_frequency;728uint16_t average_vclk1_frequency;729uint16_t average_dclk1_frequency;730731/* Current clocks */732uint16_t current_gfxclk;733uint16_t current_socclk;734uint16_t current_uclk;735uint16_t current_vclk0;736uint16_t current_dclk0;737uint16_t current_vclk1;738uint16_t current_dclk1;739740/* Throttle status */741uint32_t throttle_status;742743/* Fans */744uint16_t current_fan_speed;745746/* Link width/speed */747uint16_t pcie_link_width;748uint16_t pcie_link_speed; // in 0.1 GT/s749750uint16_t padding;751752uint32_t gfx_activity_acc;753uint32_t mem_activity_acc;754755uint16_t temperature_hbm[NUM_HBM_INSTANCES];756757/* PMFW attached timestamp (10ns resolution) */758uint64_t firmware_timestamp;759760/* Voltage (mV) */761uint16_t voltage_soc;762uint16_t voltage_gfx;763uint16_t voltage_mem;764765uint16_t padding1;766767/* Throttle status (ASIC independent) */768uint64_t indep_throttle_status;769};770771struct gpu_metrics_v1_4 {772struct metrics_table_header common_header;773774/* Temperature (Celsius) */775uint16_t temperature_hotspot;776uint16_t temperature_mem;777uint16_t temperature_vrsoc;778779/* Power (Watts) */780uint16_t curr_socket_power;781782/* Utilization (%) */783uint16_t average_gfx_activity;784uint16_t average_umc_activity; // memory controller785uint16_t vcn_activity[NUM_VCN];786787/* Energy (15.259uJ (2^-16) units) */788uint64_t energy_accumulator;789790/* Driver attached timestamp (in ns) */791uint64_t system_clock_counter;792793/* Throttle status */794uint32_t throttle_status;795796/* Clock Lock Status. Each bit corresponds to clock instance */797uint32_t gfxclk_lock_status;798799/* Link width (number of lanes) and speed (in 0.1 GT/s) */800uint16_t pcie_link_width;801uint16_t pcie_link_speed;802803/* XGMI bus width and bitrate (in Gbps) */804uint16_t xgmi_link_width;805uint16_t xgmi_link_speed;806807/* Utilization Accumulated (%) */808uint32_t gfx_activity_acc;809uint32_t mem_activity_acc;810811/*PCIE accumulated bandwidth (GB/sec) */812uint64_t pcie_bandwidth_acc;813814/*PCIE instantaneous bandwidth (GB/sec) */815uint64_t pcie_bandwidth_inst;816817/* PCIE L0 to recovery state transition accumulated count */818uint64_t pcie_l0_to_recov_count_acc;819820/* PCIE replay accumulated count */821uint64_t pcie_replay_count_acc;822823/* PCIE replay rollover accumulated count */824uint64_t pcie_replay_rover_count_acc;825826/* XGMI accumulated data transfer size(KiloBytes) */827uint64_t xgmi_read_data_acc[NUM_XGMI_LINKS];828uint64_t xgmi_write_data_acc[NUM_XGMI_LINKS];829830/* PMFW attached timestamp (10ns resolution) */831uint64_t firmware_timestamp;832833/* Current clocks (Mhz) */834uint16_t current_gfxclk[MAX_GFX_CLKS];835uint16_t current_socclk[MAX_CLKS];836uint16_t current_vclk0[MAX_CLKS];837uint16_t current_dclk0[MAX_CLKS];838uint16_t current_uclk;839840uint16_t padding;841};842843struct gpu_metrics_v1_5 {844struct metrics_table_header common_header;845846/* Temperature (Celsius) */847uint16_t temperature_hotspot;848uint16_t temperature_mem;849uint16_t temperature_vrsoc;850851/* Power (Watts) */852uint16_t curr_socket_power;853854/* Utilization (%) */855uint16_t average_gfx_activity;856uint16_t average_umc_activity; // memory controller857uint16_t vcn_activity[NUM_VCN];858uint16_t jpeg_activity[NUM_JPEG_ENG];859860/* Energy (15.259uJ (2^-16) units) */861uint64_t energy_accumulator;862863/* Driver attached timestamp (in ns) */864uint64_t system_clock_counter;865866/* Throttle status */867uint32_t throttle_status;868869/* Clock Lock Status. Each bit corresponds to clock instance */870uint32_t gfxclk_lock_status;871872/* Link width (number of lanes) and speed (in 0.1 GT/s) */873uint16_t pcie_link_width;874uint16_t pcie_link_speed;875876/* XGMI bus width and bitrate (in Gbps) */877uint16_t xgmi_link_width;878uint16_t xgmi_link_speed;879880/* Utilization Accumulated (%) */881uint32_t gfx_activity_acc;882uint32_t mem_activity_acc;883884/*PCIE accumulated bandwidth (GB/sec) */885uint64_t pcie_bandwidth_acc;886887/*PCIE instantaneous bandwidth (GB/sec) */888uint64_t pcie_bandwidth_inst;889890/* PCIE L0 to recovery state transition accumulated count */891uint64_t pcie_l0_to_recov_count_acc;892893/* PCIE replay accumulated count */894uint64_t pcie_replay_count_acc;895896/* PCIE replay rollover accumulated count */897uint64_t pcie_replay_rover_count_acc;898899/* PCIE NAK sent accumulated count */900uint32_t pcie_nak_sent_count_acc;901902/* PCIE NAK received accumulated count */903uint32_t pcie_nak_rcvd_count_acc;904905/* XGMI accumulated data transfer size(KiloBytes) */906uint64_t xgmi_read_data_acc[NUM_XGMI_LINKS];907uint64_t xgmi_write_data_acc[NUM_XGMI_LINKS];908909/* PMFW attached timestamp (10ns resolution) */910uint64_t firmware_timestamp;911912/* Current clocks (Mhz) */913uint16_t current_gfxclk[MAX_GFX_CLKS];914uint16_t current_socclk[MAX_CLKS];915uint16_t current_vclk0[MAX_CLKS];916uint16_t current_dclk0[MAX_CLKS];917uint16_t current_uclk;918919uint16_t padding;920};921922struct gpu_metrics_v1_6 {923struct metrics_table_header common_header;924925/* Temperature (Celsius) */926uint16_t temperature_hotspot;927uint16_t temperature_mem;928uint16_t temperature_vrsoc;929930/* Power (Watts) */931uint16_t curr_socket_power;932933/* Utilization (%) */934uint16_t average_gfx_activity;935uint16_t average_umc_activity; // memory controller936937/* Energy (15.259uJ (2^-16) units) */938uint64_t energy_accumulator;939940/* Driver attached timestamp (in ns) */941uint64_t system_clock_counter;942943/* Accumulation cycle counter */944uint32_t accumulation_counter;945946/* Accumulated throttler residencies */947uint32_t prochot_residency_acc;948uint32_t ppt_residency_acc;949uint32_t socket_thm_residency_acc;950uint32_t vr_thm_residency_acc;951uint32_t hbm_thm_residency_acc;952953/* Clock Lock Status. Each bit corresponds to clock instance */954uint32_t gfxclk_lock_status;955956/* Link width (number of lanes) and speed (in 0.1 GT/s) */957uint16_t pcie_link_width;958uint16_t pcie_link_speed;959960/* XGMI bus width and bitrate (in Gbps) */961uint16_t xgmi_link_width;962uint16_t xgmi_link_speed;963964/* Utilization Accumulated (%) */965uint32_t gfx_activity_acc;966uint32_t mem_activity_acc;967968/*PCIE accumulated bandwidth (GB/sec) */969uint64_t pcie_bandwidth_acc;970971/*PCIE instantaneous bandwidth (GB/sec) */972uint64_t pcie_bandwidth_inst;973974/* PCIE L0 to recovery state transition accumulated count */975uint64_t pcie_l0_to_recov_count_acc;976977/* PCIE replay accumulated count */978uint64_t pcie_replay_count_acc;979980/* PCIE replay rollover accumulated count */981uint64_t pcie_replay_rover_count_acc;982983/* PCIE NAK sent accumulated count */984uint32_t pcie_nak_sent_count_acc;985986/* PCIE NAK received accumulated count */987uint32_t pcie_nak_rcvd_count_acc;988989/* XGMI accumulated data transfer size(KiloBytes) */990uint64_t xgmi_read_data_acc[NUM_XGMI_LINKS];991uint64_t xgmi_write_data_acc[NUM_XGMI_LINKS];992993/* PMFW attached timestamp (10ns resolution) */994uint64_t firmware_timestamp;995996/* Current clocks (Mhz) */997uint16_t current_gfxclk[MAX_GFX_CLKS];998uint16_t current_socclk[MAX_CLKS];999uint16_t current_vclk0[MAX_CLKS];1000uint16_t current_dclk0[MAX_CLKS];1001uint16_t current_uclk;10021003/* Number of current partition */1004uint16_t num_partition;10051006/* XCP metrics stats */1007struct amdgpu_xcp_metrics xcp_stats[NUM_XCP];10081009/* PCIE other end recovery counter */1010uint32_t pcie_lc_perf_other_end_recovery;1011};10121013struct gpu_metrics_v1_7 {1014struct metrics_table_header common_header;10151016/* Temperature (Celsius) */1017uint16_t temperature_hotspot;1018uint16_t temperature_mem;1019uint16_t temperature_vrsoc;10201021/* Power (Watts) */1022uint16_t curr_socket_power;10231024/* Utilization (%) */1025uint16_t average_gfx_activity;1026uint16_t average_umc_activity; // memory controller10271028/* VRAM max bandwidthi (in GB/sec) at max memory clock */1029uint64_t mem_max_bandwidth;10301031/* Energy (15.259uJ (2^-16) units) */1032uint64_t energy_accumulator;10331034/* Driver attached timestamp (in ns) */1035uint64_t system_clock_counter;10361037/* Accumulation cycle counter */1038uint32_t accumulation_counter;10391040/* Accumulated throttler residencies */1041uint32_t prochot_residency_acc;1042uint32_t ppt_residency_acc;1043uint32_t socket_thm_residency_acc;1044uint32_t vr_thm_residency_acc;1045uint32_t hbm_thm_residency_acc;10461047/* Clock Lock Status. Each bit corresponds to clock instance */1048uint32_t gfxclk_lock_status;10491050/* Link width (number of lanes) and speed (in 0.1 GT/s) */1051uint16_t pcie_link_width;1052uint16_t pcie_link_speed;10531054/* XGMI bus width and bitrate (in Gbps) */1055uint16_t xgmi_link_width;1056uint16_t xgmi_link_speed;10571058/* Utilization Accumulated (%) */1059uint32_t gfx_activity_acc;1060uint32_t mem_activity_acc;10611062/*PCIE accumulated bandwidth (GB/sec) */1063uint64_t pcie_bandwidth_acc;10641065/*PCIE instantaneous bandwidth (GB/sec) */1066uint64_t pcie_bandwidth_inst;10671068/* PCIE L0 to recovery state transition accumulated count */1069uint64_t pcie_l0_to_recov_count_acc;10701071/* PCIE replay accumulated count */1072uint64_t pcie_replay_count_acc;10731074/* PCIE replay rollover accumulated count */1075uint64_t pcie_replay_rover_count_acc;10761077/* PCIE NAK sent accumulated count */1078uint32_t pcie_nak_sent_count_acc;10791080/* PCIE NAK received accumulated count */1081uint32_t pcie_nak_rcvd_count_acc;10821083/* XGMI accumulated data transfer size(KiloBytes) */1084uint64_t xgmi_read_data_acc[NUM_XGMI_LINKS];1085uint64_t xgmi_write_data_acc[NUM_XGMI_LINKS];10861087/* XGMI link status(active/inactive) */1088uint16_t xgmi_link_status[NUM_XGMI_LINKS];10891090uint16_t padding;10911092/* PMFW attached timestamp (10ns resolution) */1093uint64_t firmware_timestamp;10941095/* Current clocks (Mhz) */1096uint16_t current_gfxclk[MAX_GFX_CLKS];1097uint16_t current_socclk[MAX_CLKS];1098uint16_t current_vclk0[MAX_CLKS];1099uint16_t current_dclk0[MAX_CLKS];1100uint16_t current_uclk;11011102/* Number of current partition */1103uint16_t num_partition;11041105/* XCP metrics stats */1106struct amdgpu_xcp_metrics_v1_1 xcp_stats[NUM_XCP];11071108/* PCIE other end recovery counter */1109uint32_t pcie_lc_perf_other_end_recovery;1110};11111112struct gpu_metrics_v1_8 {1113struct metrics_table_header common_header;11141115/* Temperature (Celsius) */1116uint16_t temperature_hotspot;1117uint16_t temperature_mem;1118uint16_t temperature_vrsoc;11191120/* Power (Watts) */1121uint16_t curr_socket_power;11221123/* Utilization (%) */1124uint16_t average_gfx_activity;1125uint16_t average_umc_activity; // memory controller11261127/* VRAM max bandwidthi (in GB/sec) at max memory clock */1128uint64_t mem_max_bandwidth;11291130/* Energy (15.259uJ (2^-16) units) */1131uint64_t energy_accumulator;11321133/* Driver attached timestamp (in ns) */1134uint64_t system_clock_counter;11351136/* Accumulation cycle counter */1137uint32_t accumulation_counter;11381139/* Accumulated throttler residencies */1140uint32_t prochot_residency_acc;1141uint32_t ppt_residency_acc;1142uint32_t socket_thm_residency_acc;1143uint32_t vr_thm_residency_acc;1144uint32_t hbm_thm_residency_acc;11451146/* Clock Lock Status. Each bit corresponds to clock instance */1147uint32_t gfxclk_lock_status;11481149/* Link width (number of lanes) and speed (in 0.1 GT/s) */1150uint16_t pcie_link_width;1151uint16_t pcie_link_speed;11521153/* XGMI bus width and bitrate (in Gbps) */1154uint16_t xgmi_link_width;1155uint16_t xgmi_link_speed;11561157/* Utilization Accumulated (%) */1158uint32_t gfx_activity_acc;1159uint32_t mem_activity_acc;11601161/*PCIE accumulated bandwidth (GB/sec) */1162uint64_t pcie_bandwidth_acc;11631164/*PCIE instantaneous bandwidth (GB/sec) */1165uint64_t pcie_bandwidth_inst;11661167/* PCIE L0 to recovery state transition accumulated count */1168uint64_t pcie_l0_to_recov_count_acc;11691170/* PCIE replay accumulated count */1171uint64_t pcie_replay_count_acc;11721173/* PCIE replay rollover accumulated count */1174uint64_t pcie_replay_rover_count_acc;11751176/* PCIE NAK sent accumulated count */1177uint32_t pcie_nak_sent_count_acc;11781179/* PCIE NAK received accumulated count */1180uint32_t pcie_nak_rcvd_count_acc;11811182/* XGMI accumulated data transfer size(KiloBytes) */1183uint64_t xgmi_read_data_acc[NUM_XGMI_LINKS];1184uint64_t xgmi_write_data_acc[NUM_XGMI_LINKS];11851186/* XGMI link status(active/inactive) */1187uint16_t xgmi_link_status[NUM_XGMI_LINKS];11881189uint16_t padding;11901191/* PMFW attached timestamp (10ns resolution) */1192uint64_t firmware_timestamp;11931194/* Current clocks (Mhz) */1195uint16_t current_gfxclk[MAX_GFX_CLKS];1196uint16_t current_socclk[MAX_CLKS];1197uint16_t current_vclk0[MAX_CLKS];1198uint16_t current_dclk0[MAX_CLKS];1199uint16_t current_uclk;12001201/* Number of current partition */1202uint16_t num_partition;12031204/* XCP metrics stats */1205struct amdgpu_xcp_metrics_v1_2 xcp_stats[NUM_XCP];12061207/* PCIE other end recovery counter */1208uint32_t pcie_lc_perf_other_end_recovery;1209};12101211/*1212* gpu_metrics_v2_0 is not recommended as it's not naturally aligned.1213* Use gpu_metrics_v2_1 or later instead.1214*/1215struct gpu_metrics_v2_0 {1216struct metrics_table_header common_header;12171218/* Driver attached timestamp (in ns) */1219uint64_t system_clock_counter;12201221/* Temperature */1222uint16_t temperature_gfx; // gfx temperature on APUs1223uint16_t temperature_soc; // soc temperature on APUs1224uint16_t temperature_core[8]; // CPU core temperature on APUs1225uint16_t temperature_l3[2];12261227/* Utilization */1228uint16_t average_gfx_activity;1229uint16_t average_mm_activity; // UVD or VCN12301231/* Power/Energy */1232uint16_t average_socket_power; // dGPU + APU power on A + A platform1233uint16_t average_cpu_power;1234uint16_t average_soc_power;1235uint16_t average_gfx_power;1236uint16_t average_core_power[8]; // CPU core power on APUs12371238/* Average clocks */1239uint16_t average_gfxclk_frequency;1240uint16_t average_socclk_frequency;1241uint16_t average_uclk_frequency;1242uint16_t average_fclk_frequency;1243uint16_t average_vclk_frequency;1244uint16_t average_dclk_frequency;12451246/* Current clocks */1247uint16_t current_gfxclk;1248uint16_t current_socclk;1249uint16_t current_uclk;1250uint16_t current_fclk;1251uint16_t current_vclk;1252uint16_t current_dclk;1253uint16_t current_coreclk[8]; // CPU core clocks1254uint16_t current_l3clk[2];12551256/* Throttle status */1257uint32_t throttle_status;12581259/* Fans */1260uint16_t fan_pwm;12611262uint16_t padding;1263};12641265struct gpu_metrics_v2_1 {1266struct metrics_table_header common_header;12671268/* Temperature */1269uint16_t temperature_gfx; // gfx temperature on APUs1270uint16_t temperature_soc; // soc temperature on APUs1271uint16_t temperature_core[8]; // CPU core temperature on APUs1272uint16_t temperature_l3[2];12731274/* Utilization */1275uint16_t average_gfx_activity;1276uint16_t average_mm_activity; // UVD or VCN12771278/* Driver attached timestamp (in ns) */1279uint64_t system_clock_counter;12801281/* Power/Energy */1282uint16_t average_socket_power; // dGPU + APU power on A + A platform1283uint16_t average_cpu_power;1284uint16_t average_soc_power;1285uint16_t average_gfx_power;1286uint16_t average_core_power[8]; // CPU core power on APUs12871288/* Average clocks */1289uint16_t average_gfxclk_frequency;1290uint16_t average_socclk_frequency;1291uint16_t average_uclk_frequency;1292uint16_t average_fclk_frequency;1293uint16_t average_vclk_frequency;1294uint16_t average_dclk_frequency;12951296/* Current clocks */1297uint16_t current_gfxclk;1298uint16_t current_socclk;1299uint16_t current_uclk;1300uint16_t current_fclk;1301uint16_t current_vclk;1302uint16_t current_dclk;1303uint16_t current_coreclk[8]; // CPU core clocks1304uint16_t current_l3clk[2];13051306/* Throttle status */1307uint32_t throttle_status;13081309/* Fans */1310uint16_t fan_pwm;13111312uint16_t padding[3];1313};13141315struct gpu_metrics_v2_2 {1316struct metrics_table_header common_header;13171318/* Temperature */1319uint16_t temperature_gfx; // gfx temperature on APUs1320uint16_t temperature_soc; // soc temperature on APUs1321uint16_t temperature_core[8]; // CPU core temperature on APUs1322uint16_t temperature_l3[2];13231324/* Utilization */1325uint16_t average_gfx_activity;1326uint16_t average_mm_activity; // UVD or VCN13271328/* Driver attached timestamp (in ns) */1329uint64_t system_clock_counter;13301331/* Power/Energy */1332uint16_t average_socket_power; // dGPU + APU power on A + A platform1333uint16_t average_cpu_power;1334uint16_t average_soc_power;1335uint16_t average_gfx_power;1336uint16_t average_core_power[8]; // CPU core power on APUs13371338/* Average clocks */1339uint16_t average_gfxclk_frequency;1340uint16_t average_socclk_frequency;1341uint16_t average_uclk_frequency;1342uint16_t average_fclk_frequency;1343uint16_t average_vclk_frequency;1344uint16_t average_dclk_frequency;13451346/* Current clocks */1347uint16_t current_gfxclk;1348uint16_t current_socclk;1349uint16_t current_uclk;1350uint16_t current_fclk;1351uint16_t current_vclk;1352uint16_t current_dclk;1353uint16_t current_coreclk[8]; // CPU core clocks1354uint16_t current_l3clk[2];13551356/* Throttle status (ASIC dependent) */1357uint32_t throttle_status;13581359/* Fans */1360uint16_t fan_pwm;13611362uint16_t padding[3];13631364/* Throttle status (ASIC independent) */1365uint64_t indep_throttle_status;1366};13671368struct gpu_metrics_v2_3 {1369struct metrics_table_header common_header;13701371/* Temperature */1372uint16_t temperature_gfx; // gfx temperature on APUs1373uint16_t temperature_soc; // soc temperature on APUs1374uint16_t temperature_core[8]; // CPU core temperature on APUs1375uint16_t temperature_l3[2];13761377/* Utilization */1378uint16_t average_gfx_activity;1379uint16_t average_mm_activity; // UVD or VCN13801381/* Driver attached timestamp (in ns) */1382uint64_t system_clock_counter;13831384/* Power/Energy */1385uint16_t average_socket_power; // dGPU + APU power on A + A platform1386uint16_t average_cpu_power;1387uint16_t average_soc_power;1388uint16_t average_gfx_power;1389uint16_t average_core_power[8]; // CPU core power on APUs13901391/* Average clocks */1392uint16_t average_gfxclk_frequency;1393uint16_t average_socclk_frequency;1394uint16_t average_uclk_frequency;1395uint16_t average_fclk_frequency;1396uint16_t average_vclk_frequency;1397uint16_t average_dclk_frequency;13981399/* Current clocks */1400uint16_t current_gfxclk;1401uint16_t current_socclk;1402uint16_t current_uclk;1403uint16_t current_fclk;1404uint16_t current_vclk;1405uint16_t current_dclk;1406uint16_t current_coreclk[8]; // CPU core clocks1407uint16_t current_l3clk[2];14081409/* Throttle status (ASIC dependent) */1410uint32_t throttle_status;14111412/* Fans */1413uint16_t fan_pwm;14141415uint16_t padding[3];14161417/* Throttle status (ASIC independent) */1418uint64_t indep_throttle_status;14191420/* Average Temperature */1421uint16_t average_temperature_gfx; // average gfx temperature on APUs1422uint16_t average_temperature_soc; // average soc temperature on APUs1423uint16_t average_temperature_core[8]; // average CPU core temperature on APUs1424uint16_t average_temperature_l3[2];1425};14261427struct gpu_metrics_v2_4 {1428struct metrics_table_header common_header;14291430/* Temperature (unit: centi-Celsius) */1431uint16_t temperature_gfx;1432uint16_t temperature_soc;1433uint16_t temperature_core[8];1434uint16_t temperature_l3[2];14351436/* Utilization (unit: centi) */1437uint16_t average_gfx_activity;1438uint16_t average_mm_activity;14391440/* Driver attached timestamp (in ns) */1441uint64_t system_clock_counter;14421443/* Power/Energy (unit: mW) */1444uint16_t average_socket_power;1445uint16_t average_cpu_power;1446uint16_t average_soc_power;1447uint16_t average_gfx_power;1448uint16_t average_core_power[8];14491450/* Average clocks (unit: MHz) */1451uint16_t average_gfxclk_frequency;1452uint16_t average_socclk_frequency;1453uint16_t average_uclk_frequency;1454uint16_t average_fclk_frequency;1455uint16_t average_vclk_frequency;1456uint16_t average_dclk_frequency;14571458/* Current clocks (unit: MHz) */1459uint16_t current_gfxclk;1460uint16_t current_socclk;1461uint16_t current_uclk;1462uint16_t current_fclk;1463uint16_t current_vclk;1464uint16_t current_dclk;1465uint16_t current_coreclk[8];1466uint16_t current_l3clk[2];14671468/* Throttle status (ASIC dependent) */1469uint32_t throttle_status;14701471/* Fans */1472uint16_t fan_pwm;14731474uint16_t padding[3];14751476/* Throttle status (ASIC independent) */1477uint64_t indep_throttle_status;14781479/* Average Temperature (unit: centi-Celsius) */1480uint16_t average_temperature_gfx;1481uint16_t average_temperature_soc;1482uint16_t average_temperature_core[8];1483uint16_t average_temperature_l3[2];14841485/* Power/Voltage (unit: mV) */1486uint16_t average_cpu_voltage;1487uint16_t average_soc_voltage;1488uint16_t average_gfx_voltage;14891490/* Power/Current (unit: mA) */1491uint16_t average_cpu_current;1492uint16_t average_soc_current;1493uint16_t average_gfx_current;1494};14951496struct gpu_metrics_v3_0 {1497struct metrics_table_header common_header;14981499/* Temperature */1500/* gfx temperature on APUs */1501uint16_t temperature_gfx;1502/* soc temperature on APUs */1503uint16_t temperature_soc;1504/* CPU core temperature on APUs */1505uint16_t temperature_core[16];1506/* skin temperature on APUs */1507uint16_t temperature_skin;15081509/* Utilization */1510/* time filtered GFX busy % [0-100] */1511uint16_t average_gfx_activity;1512/* time filtered VCN busy % [0-100] */1513uint16_t average_vcn_activity;1514/* time filtered IPU per-column busy % [0-100] */1515uint16_t average_ipu_activity[8];1516/* time filtered per-core C0 residency % [0-100]*/1517uint16_t average_core_c0_activity[16];1518/* time filtered DRAM read bandwidth [MB/sec] */1519uint16_t average_dram_reads;1520/* time filtered DRAM write bandwidth [MB/sec] */1521uint16_t average_dram_writes;1522/* time filtered IPU read bandwidth [MB/sec] */1523uint16_t average_ipu_reads;1524/* time filtered IPU write bandwidth [MB/sec] */1525uint16_t average_ipu_writes;15261527/* Driver attached timestamp (in ns) */1528uint64_t system_clock_counter;15291530/* Power/Energy */1531/* time filtered power used for PPT/STAPM [APU+dGPU] [mW] */1532uint32_t average_socket_power;1533/* time filtered IPU power [mW] */1534uint16_t average_ipu_power;1535/* time filtered APU power [mW] */1536uint32_t average_apu_power;1537/* time filtered GFX power [mW] */1538uint32_t average_gfx_power;1539/* time filtered dGPU power [mW] */1540uint32_t average_dgpu_power;1541/* time filtered sum of core power across all cores in the socket [mW] */1542uint32_t average_all_core_power;1543/* calculated core power [mW] */1544uint16_t average_core_power[16];1545/* time filtered total system power [mW] */1546uint16_t average_sys_power;1547/* maximum IRM defined STAPM power limit [mW] */1548uint16_t stapm_power_limit;1549/* time filtered STAPM power limit [mW] */1550uint16_t current_stapm_power_limit;15511552/* time filtered clocks [MHz] */1553uint16_t average_gfxclk_frequency;1554uint16_t average_socclk_frequency;1555uint16_t average_vpeclk_frequency;1556uint16_t average_ipuclk_frequency;1557uint16_t average_fclk_frequency;1558uint16_t average_vclk_frequency;1559uint16_t average_uclk_frequency;1560uint16_t average_mpipu_frequency;15611562/* Current clocks */1563/* target core frequency [MHz] */1564uint16_t current_coreclk[16];1565/* CCLK frequency limit enforced on classic cores [MHz] */1566uint16_t current_core_maxfreq;1567/* GFXCLK frequency limit enforced on GFX [MHz] */1568uint16_t current_gfx_maxfreq;15691570/* Throttle Residency (ASIC dependent) */1571uint32_t throttle_residency_prochot;1572uint32_t throttle_residency_spl;1573uint32_t throttle_residency_fppt;1574uint32_t throttle_residency_sppt;1575uint32_t throttle_residency_thm_core;1576uint32_t throttle_residency_thm_gfx;1577uint32_t throttle_residency_thm_soc;15781579/* Metrics table alpha filter time constant [us] */1580uint32_t time_filter_alphavalue;1581};15821583struct amdgpu_pmmetrics_header {1584uint16_t structure_size;1585uint16_t pad;1586uint32_t mp1_ip_discovery_version;1587uint32_t pmfw_version;1588uint32_t pmmetrics_version;1589};15901591struct amdgpu_pm_metrics {1592struct amdgpu_pmmetrics_header common_header;15931594uint8_t data[];1595};15961597struct amdgpu_partition_metrics_v1_0 {1598struct metrics_table_header common_header;1599/* Current clocks (Mhz) */1600uint16_t current_gfxclk[MAX_XCC];1601uint16_t current_socclk[MAX_CLKS];1602uint16_t current_vclk0[MAX_CLKS];1603uint16_t current_dclk0[MAX_CLKS];1604uint16_t current_uclk;1605uint16_t padding;16061607/* Utilization Instantaneous (%) */1608uint32_t gfx_busy_inst[MAX_XCC];1609uint16_t jpeg_busy[NUM_JPEG_ENG_V1];1610uint16_t vcn_busy[NUM_VCN];1611/* Utilization Accumulated (%) */1612uint64_t gfx_busy_acc[MAX_XCC];1613/* Total App Clock Counter Accumulated */1614uint64_t gfx_below_host_limit_ppt_acc[MAX_XCC];1615uint64_t gfx_below_host_limit_thm_acc[MAX_XCC];1616uint64_t gfx_low_utilization_acc[MAX_XCC];1617uint64_t gfx_below_host_limit_total_acc[MAX_XCC];1618};16191620#endif162116221623