diff options
Diffstat (limited to 'drivers/gpu/drm/amd/include/kgd_pp_interface.h')
| -rw-r--r-- | drivers/gpu/drm/amd/include/kgd_pp_interface.h | 110 | 
1 files changed, 110 insertions, 0 deletions
| diff --git a/drivers/gpu/drm/amd/include/kgd_pp_interface.h b/drivers/gpu/drm/amd/include/kgd_pp_interface.h index a7f92d0b3a90..94132c70d7af 100644 --- a/drivers/gpu/drm/amd/include/kgd_pp_interface.h +++ b/drivers/gpu/drm/amd/include/kgd_pp_interface.h @@ -281,6 +281,7 @@ struct amd_pm_funcs {  	int (*get_power_limit)(void *handle, uint32_t *limit, bool default_limit);  	int (*get_power_profile_mode)(void *handle, char *buf);  	int (*set_power_profile_mode)(void *handle, long *input, uint32_t size); +	int (*set_fine_grain_clk_vol)(void *handle, uint32_t type, long *input, uint32_t size);  	int (*odn_edit_dpm_table)(void *handle, uint32_t type, long *input, uint32_t size);  	int (*set_mp1_state)(void *handle, enum pp_mp1_state mp1_state);  	int (*smu_i2c_bus_access)(void *handle, bool acquire); @@ -322,6 +323,115 @@ struct amd_pm_funcs {  	int (*asic_reset_mode_2)(void *handle);  	int (*set_df_cstate)(void *handle, enum pp_df_cstate state);  	int (*set_xgmi_pstate)(void *handle, uint32_t pstate); +	ssize_t (*get_gpu_metrics)(void *handle, void **table); +}; + +struct metrics_table_header { +	uint16_t			structure_size; +	uint8_t				format_revision; +	uint8_t				content_revision; +}; + +struct gpu_metrics_v1_0 { +	struct metrics_table_header	common_header; + +	/* Driver attached timestamp (in ns) */ +	uint64_t			system_clock_counter; + +	/* Temperature */ +	uint16_t			temperature_edge; +	uint16_t			temperature_hotspot; +	uint16_t			temperature_mem; +	uint16_t			temperature_vrgfx; +	uint16_t			temperature_vrsoc; +	uint16_t			temperature_vrmem; + +	/* Utilization */ +	uint16_t			average_gfx_activity; +	uint16_t			average_umc_activity; // memory controller +	uint16_t			average_mm_activity; // UVD or VCN + +	/* Power/Energy */ +	uint16_t			average_socket_power; +	uint32_t			energy_accumulator; + +	/* Average clocks */ +	uint16_t			average_gfxclk_frequency; +	uint16_t			average_socclk_frequency; +	uint16_t			average_uclk_frequency; +	uint16_t			average_vclk0_frequency; +	uint16_t			average_dclk0_frequency; +	uint16_t			average_vclk1_frequency; +	uint16_t			average_dclk1_frequency; + +	/* Current clocks */ +	uint16_t			current_gfxclk; +	uint16_t			current_socclk; +	uint16_t			current_uclk; +	uint16_t			current_vclk0; +	uint16_t			current_dclk0; +	uint16_t			current_vclk1; +	uint16_t			current_dclk1; + +	/* Throttle status */ +	uint32_t			throttle_status; + +	/* Fans */ +	uint16_t			current_fan_speed; + +	/* Link width/speed */ +	uint8_t				pcie_link_width; +	uint8_t				pcie_link_speed; // in 0.1 GT/s +}; + +struct gpu_metrics_v2_0 { +	struct metrics_table_header	common_header; + +	/* Driver attached timestamp (in ns) */ +	uint64_t			system_clock_counter; + +	/* Temperature */ +	uint16_t			temperature_gfx; // gfx temperature on APUs +	uint16_t			temperature_soc; // soc temperature on APUs +	uint16_t			temperature_core[8]; // CPU core temperature on APUs +	uint16_t			temperature_l3[2]; + +	/* Utilization */ +	uint16_t			average_gfx_activity; +	uint16_t			average_mm_activity; // UVD or VCN + +	/* Power/Energy */ +	uint16_t			average_socket_power; // dGPU + APU power on A + A platform +	uint16_t			average_cpu_power; +	uint16_t			average_soc_power; +	uint16_t			average_gfx_power; +	uint16_t			average_core_power[8]; // CPU core power on APUs + +	/* Average clocks */ +	uint16_t			average_gfxclk_frequency; +	uint16_t			average_socclk_frequency; +	uint16_t			average_uclk_frequency; +	uint16_t			average_fclk_frequency; +	uint16_t			average_vclk_frequency; +	uint16_t			average_dclk_frequency; + +	/* Current clocks */ +	uint16_t			current_gfxclk; +	uint16_t			current_socclk; +	uint16_t			current_uclk; +	uint16_t			current_fclk; +	uint16_t			current_vclk; +	uint16_t			current_dclk; +	uint16_t			current_coreclk[8]; // CPU core clocks +	uint16_t			current_l3clk[2]; + +	/* Throttle status */ +	uint32_t			throttle_status; + +	/* Fans */ +	uint16_t			fan_pwm; + +	uint16_t			padding;  };  #endif | 
