[PATCH 1/3] drm/amdgpu/pm: Update metrics table

Lijo Lazar lijo.lazar at amd.com
Wed May 19 15:42:27 UTC 2021


Reviewed-by: Lijo Lazar <lijo.lazar at amd.com>


On 5/19/2021 11:32 AM, David M Nieto wrote:
> expand metrics table with voltages and frequency ranges
> 
> Signed-off-by: David M Nieto <david.nieto at amd.com>
> ---
>   .../gpu/drm/amd/include/kgd_pp_interface.h    | 69 +++++++++++++++++++
>   drivers/gpu/drm/amd/pm/swsmu/smu_cmn.c        |  3 +
>   2 files changed, 72 insertions(+)
> 
> diff --git a/drivers/gpu/drm/amd/include/kgd_pp_interface.h b/drivers/gpu/drm/amd/include/kgd_pp_interface.h
> index e2d13131a432..b1cd52a9d684 100644
> --- a/drivers/gpu/drm/amd/include/kgd_pp_interface.h
> +++ b/drivers/gpu/drm/amd/include/kgd_pp_interface.h
> @@ -536,6 +536,75 @@ struct gpu_metrics_v1_2 {
>   	uint64_t			firmware_timestamp;
>   };
>   
> +struct gpu_metrics_v1_3 {
> +	struct metrics_table_header	common_header;
> +
> +	/* 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;
> +	uint64_t			energy_accumulator;
> +
> +	/* Driver attached timestamp (in ns) */
> +	uint64_t			system_clock_counter;
> +
> +	/* 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 */
> +	uint16_t			pcie_link_width;
> +	uint16_t			pcie_link_speed; // in 0.1 GT/s
> +
> +	uint16_t			padding;
> +
> +	uint32_t			gfx_activity_acc;
> +	uint32_t			mem_activity_acc;
> +
> +	uint16_t			temperature_hbm[NUM_HBM_INSTANCES];
> +
> +	/* PMFW attached timestamp (10ns resolution) */
> +	uint64_t			firmware_timestamp;
> +
> +	/* Voltage (mV) */
> +	uint16_t			voltage_soc;
> +	uint16_t			voltage_gfx;
> +	uint16_t			voltage_mem;
> +
> +	uint16_t			padding1;
> +};
> +
>   /*
>    * gpu_metrics_v2_0 is not recommended as it's not naturally aligned.
>    * Use gpu_metrics_v2_1 or later instead.
> diff --git a/drivers/gpu/drm/amd/pm/swsmu/smu_cmn.c b/drivers/gpu/drm/amd/pm/swsmu/smu_cmn.c
> index 0934e5b3aa17..0ceb7329838c 100644
> --- a/drivers/gpu/drm/amd/pm/swsmu/smu_cmn.c
> +++ b/drivers/gpu/drm/amd/pm/swsmu/smu_cmn.c
> @@ -764,6 +764,9 @@ void smu_cmn_init_soft_gpu_metrics(void *table, uint8_t frev, uint8_t crev)
>   	case METRICS_VERSION(1, 2):
>   		structure_size = sizeof(struct gpu_metrics_v1_2);
>   		break;
> +	case METRICS_VERSION(1, 3):
> +		structure_size = sizeof(struct gpu_metrics_v1_3);
> +		break;
>   	case METRICS_VERSION(2, 0):
>   		structure_size = sizeof(struct gpu_metrics_v2_0);
>   		break;
> 

-- 
Thanks,
Lijo


More information about the amd-gfx mailing list