795 lines
23 KiB
C++
795 lines
23 KiB
C++
#include <cstdint>
|
|
|
|
/* STRUCTS COPIED WHOLESALE FROM LINUX SOURCE CODE, formatted and wrapped around a namespace
|
|
https://github.com/torvalds/linux/blob/master/drivers/gpu/drm/amd/include/kgd_pp_interface.h */
|
|
|
|
#define NUM_HBM_INSTANCES 4
|
|
#define NUM_XGMI_LINKS 8
|
|
#define MAX_GFX_CLKS 8
|
|
#define MAX_CLKS 4
|
|
#define NUM_VCN 4
|
|
#define NUM_JPEG_ENG 32
|
|
#define NUM_JPEG_ENG_V1 40
|
|
#define MAX_XCC 8
|
|
#define NUM_XCP 8
|
|
|
|
namespace gpu {
|
|
|
|
struct metrics_table_header {
|
|
uint16_t structure_size;
|
|
uint8_t format_revision;
|
|
uint8_t content_revision;
|
|
};
|
|
|
|
/*
|
|
* gpu_metrics_v1_0 is not recommended as it's not naturally aligned.
|
|
* Use gpu_metrics_v1_1 or later instead.
|
|
*/
|
|
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_v1_1 {
|
|
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];
|
|
};
|
|
|
|
struct gpu_metrics_v1_2 {
|
|
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 (ASIC dependent) */
|
|
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;
|
|
};
|
|
|
|
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;
|
|
|
|
/* Throttle status (ASIC independent) */
|
|
uint64_t indep_throttle_status;
|
|
};
|
|
|
|
struct gpu_metrics_v1_4 {
|
|
struct metrics_table_header common_header;
|
|
|
|
/* Temperature (Celsius) */
|
|
uint16_t temperature_hotspot;
|
|
uint16_t temperature_mem;
|
|
uint16_t temperature_vrsoc;
|
|
|
|
/* Power (Watts) */
|
|
uint16_t curr_socket_power;
|
|
|
|
/* Utilization (%) */
|
|
uint16_t average_gfx_activity;
|
|
uint16_t average_umc_activity; // memory controller
|
|
uint16_t vcn_activity[NUM_VCN];
|
|
|
|
/* Energy (15.259uJ (2^-16) units) */
|
|
uint64_t energy_accumulator;
|
|
|
|
/* Driver attached timestamp (in ns) */
|
|
uint64_t system_clock_counter;
|
|
|
|
/* Throttle status */
|
|
uint32_t throttle_status;
|
|
|
|
/* Clock Lock Status. Each bit corresponds to clock instance */
|
|
uint32_t gfxclk_lock_status;
|
|
|
|
/* Link width (number of lanes) and speed (in 0.1 GT/s) */
|
|
uint16_t pcie_link_width;
|
|
uint16_t pcie_link_speed;
|
|
|
|
/* XGMI bus width and bitrate (in Gbps) */
|
|
uint16_t xgmi_link_width;
|
|
uint16_t xgmi_link_speed;
|
|
|
|
/* Utilization Accumulated (%) */
|
|
uint32_t gfx_activity_acc;
|
|
uint32_t mem_activity_acc;
|
|
|
|
/*PCIE accumulated bandwidth (GB/sec) */
|
|
uint64_t pcie_bandwidth_acc;
|
|
|
|
/*PCIE instantaneous bandwidth (GB/sec) */
|
|
uint64_t pcie_bandwidth_inst;
|
|
|
|
/* PCIE L0 to recovery state transition accumulated count */
|
|
uint64_t pcie_l0_to_recov_count_acc;
|
|
|
|
/* PCIE replay accumulated count */
|
|
uint64_t pcie_replay_count_acc;
|
|
|
|
/* PCIE replay rollover accumulated count */
|
|
uint64_t pcie_replay_rover_count_acc;
|
|
|
|
/* XGMI accumulated data transfer size(KiloBytes) */
|
|
uint64_t xgmi_read_data_acc[NUM_XGMI_LINKS];
|
|
uint64_t xgmi_write_data_acc[NUM_XGMI_LINKS];
|
|
|
|
/* PMFW attached timestamp (10ns resolution) */
|
|
uint64_t firmware_timestamp;
|
|
|
|
/* Current clocks (Mhz) */
|
|
uint16_t current_gfxclk[MAX_GFX_CLKS];
|
|
uint16_t current_socclk[MAX_CLKS];
|
|
uint16_t current_vclk0[MAX_CLKS];
|
|
uint16_t current_dclk0[MAX_CLKS];
|
|
uint16_t current_uclk;
|
|
|
|
uint16_t padding;
|
|
};
|
|
|
|
struct gpu_metrics_v1_5 {
|
|
struct metrics_table_header common_header;
|
|
|
|
/* Temperature (Celsius) */
|
|
uint16_t temperature_hotspot;
|
|
uint16_t temperature_mem;
|
|
uint16_t temperature_vrsoc;
|
|
|
|
/* Power (Watts) */
|
|
uint16_t curr_socket_power;
|
|
|
|
/* Utilization (%) */
|
|
uint16_t average_gfx_activity;
|
|
uint16_t average_umc_activity; // memory controller
|
|
uint16_t vcn_activity[NUM_VCN];
|
|
uint16_t jpeg_activity[NUM_JPEG_ENG];
|
|
|
|
/* Energy (15.259uJ (2^-16) units) */
|
|
uint64_t energy_accumulator;
|
|
|
|
/* Driver attached timestamp (in ns) */
|
|
uint64_t system_clock_counter;
|
|
|
|
/* Throttle status */
|
|
uint32_t throttle_status;
|
|
|
|
/* Clock Lock Status. Each bit corresponds to clock instance */
|
|
uint32_t gfxclk_lock_status;
|
|
|
|
/* Link width (number of lanes) and speed (in 0.1 GT/s) */
|
|
uint16_t pcie_link_width;
|
|
uint16_t pcie_link_speed;
|
|
|
|
/* XGMI bus width and bitrate (in Gbps) */
|
|
uint16_t xgmi_link_width;
|
|
uint16_t xgmi_link_speed;
|
|
|
|
/* Utilization Accumulated (%) */
|
|
uint32_t gfx_activity_acc;
|
|
uint32_t mem_activity_acc;
|
|
|
|
/*PCIE accumulated bandwidth (GB/sec) */
|
|
uint64_t pcie_bandwidth_acc;
|
|
|
|
/*PCIE instantaneous bandwidth (GB/sec) */
|
|
uint64_t pcie_bandwidth_inst;
|
|
|
|
/* PCIE L0 to recovery state transition accumulated count */
|
|
uint64_t pcie_l0_to_recov_count_acc;
|
|
|
|
/* PCIE replay accumulated count */
|
|
uint64_t pcie_replay_count_acc;
|
|
|
|
/* PCIE replay rollover accumulated count */
|
|
uint64_t pcie_replay_rover_count_acc;
|
|
|
|
/* PCIE NAK sent accumulated count */
|
|
uint32_t pcie_nak_sent_count_acc;
|
|
|
|
/* PCIE NAK received accumulated count */
|
|
uint32_t pcie_nak_rcvd_count_acc;
|
|
|
|
/* XGMI accumulated data transfer size(KiloBytes) */
|
|
uint64_t xgmi_read_data_acc[NUM_XGMI_LINKS];
|
|
uint64_t xgmi_write_data_acc[NUM_XGMI_LINKS];
|
|
|
|
/* PMFW attached timestamp (10ns resolution) */
|
|
uint64_t firmware_timestamp;
|
|
|
|
/* Current clocks (Mhz) */
|
|
uint16_t current_gfxclk[MAX_GFX_CLKS];
|
|
uint16_t current_socclk[MAX_CLKS];
|
|
uint16_t current_vclk0[MAX_CLKS];
|
|
uint16_t current_dclk0[MAX_CLKS];
|
|
uint16_t current_uclk;
|
|
|
|
uint16_t padding;
|
|
};
|
|
|
|
/*
|
|
* gpu_metrics_v2_0 is not recommended as it's not naturally aligned.
|
|
* Use gpu_metrics_v2_1 or later instead.
|
|
*/
|
|
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;
|
|
};
|
|
|
|
struct gpu_metrics_v2_1 {
|
|
struct metrics_table_header common_header;
|
|
|
|
/* 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
|
|
|
|
/* Driver attached timestamp (in ns) */
|
|
uint64_t system_clock_counter;
|
|
|
|
/* 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[3];
|
|
};
|
|
|
|
struct gpu_metrics_v2_2 {
|
|
struct metrics_table_header common_header;
|
|
|
|
/* 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
|
|
|
|
/* Driver attached timestamp (in ns) */
|
|
uint64_t system_clock_counter;
|
|
|
|
/* 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 (ASIC dependent) */
|
|
uint32_t throttle_status;
|
|
|
|
/* Fans */
|
|
uint16_t fan_pwm;
|
|
|
|
uint16_t padding[3];
|
|
|
|
/* Throttle status (ASIC independent) */
|
|
uint64_t indep_throttle_status;
|
|
};
|
|
|
|
struct gpu_metrics_v2_3 {
|
|
struct metrics_table_header common_header;
|
|
|
|
/* 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
|
|
|
|
/* Driver attached timestamp (in ns) */
|
|
uint64_t system_clock_counter;
|
|
|
|
/* 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 (ASIC dependent) */
|
|
uint32_t throttle_status;
|
|
|
|
/* Fans */
|
|
uint16_t fan_pwm;
|
|
|
|
uint16_t padding[3];
|
|
|
|
/* Throttle status (ASIC independent) */
|
|
uint64_t indep_throttle_status;
|
|
|
|
/* Average Temperature */
|
|
uint16_t average_temperature_gfx; // average gfx temperature on APUs
|
|
uint16_t average_temperature_soc; // average soc temperature on APUs
|
|
uint16_t average_temperature_core[8]; // average CPU core temperature on APUs
|
|
uint16_t average_temperature_l3[2];
|
|
};
|
|
|
|
struct gpu_metrics_v2_4 {
|
|
struct metrics_table_header common_header;
|
|
|
|
/* Temperature (unit: centi-Celsius) */
|
|
uint16_t temperature_gfx;
|
|
uint16_t temperature_soc;
|
|
uint16_t temperature_core[8];
|
|
uint16_t temperature_l3[2];
|
|
|
|
/* Utilization (unit: centi) */
|
|
uint16_t average_gfx_activity;
|
|
uint16_t average_mm_activity;
|
|
|
|
/* Driver attached timestamp (in ns) */
|
|
uint64_t system_clock_counter;
|
|
|
|
/* Power/Energy (unit: mW) */
|
|
uint16_t average_socket_power;
|
|
uint16_t average_cpu_power;
|
|
uint16_t average_soc_power;
|
|
uint16_t average_gfx_power;
|
|
uint16_t average_core_power[8];
|
|
|
|
/* Average clocks (unit: MHz) */
|
|
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 (unit: MHz) */
|
|
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];
|
|
uint16_t current_l3clk[2];
|
|
|
|
/* Throttle status (ASIC dependent) */
|
|
uint32_t throttle_status;
|
|
|
|
/* Fans */
|
|
uint16_t fan_pwm;
|
|
|
|
uint16_t padding[3];
|
|
|
|
/* Throttle status (ASIC independent) */
|
|
uint64_t indep_throttle_status;
|
|
|
|
/* Average Temperature (unit: centi-Celsius) */
|
|
uint16_t average_temperature_gfx;
|
|
uint16_t average_temperature_soc;
|
|
uint16_t average_temperature_core[8];
|
|
uint16_t average_temperature_l3[2];
|
|
|
|
/* Power/Voltage (unit: mV) */
|
|
uint16_t average_cpu_voltage;
|
|
uint16_t average_soc_voltage;
|
|
uint16_t average_gfx_voltage;
|
|
|
|
/* Power/Current (unit: mA) */
|
|
uint16_t average_cpu_current;
|
|
uint16_t average_soc_current;
|
|
uint16_t average_gfx_current;
|
|
};
|
|
|
|
struct gpu_metrics_v3_0 {
|
|
struct metrics_table_header common_header;
|
|
|
|
/* Temperature */
|
|
/* gfx temperature on APUs */
|
|
uint16_t temperature_gfx;
|
|
/* soc temperature on APUs */
|
|
uint16_t temperature_soc;
|
|
/* CPU core temperature on APUs */
|
|
uint16_t temperature_core[16];
|
|
/* skin temperature on APUs */
|
|
uint16_t temperature_skin;
|
|
|
|
/* Utilization */
|
|
/* time filtered GFX busy % [0-100] */
|
|
uint16_t average_gfx_activity;
|
|
/* time filtered VCN busy % [0-100] */
|
|
uint16_t average_vcn_activity;
|
|
/* time filtered IPU per-column busy % [0-100] */
|
|
uint16_t average_ipu_activity[8];
|
|
/* time filtered per-core C0 residency % [0-100]*/
|
|
uint16_t average_core_c0_activity[16];
|
|
/* time filtered DRAM read bandwidth [MB/sec] */
|
|
uint16_t average_dram_reads;
|
|
/* time filtered DRAM write bandwidth [MB/sec] */
|
|
uint16_t average_dram_writes;
|
|
/* time filtered IPU read bandwidth [MB/sec] */
|
|
uint16_t average_ipu_reads;
|
|
/* time filtered IPU write bandwidth [MB/sec] */
|
|
uint16_t average_ipu_writes;
|
|
|
|
/* Driver attached timestamp (in ns) */
|
|
uint64_t system_clock_counter;
|
|
|
|
/* Power/Energy */
|
|
/* time filtered power used for PPT/STAPM [APU+dGPU] [mW] */
|
|
uint32_t average_socket_power;
|
|
/* time filtered IPU power [mW] */
|
|
uint16_t average_ipu_power;
|
|
/* time filtered APU power [mW] */
|
|
uint32_t average_apu_power;
|
|
/* time filtered GFX power [mW] */
|
|
uint32_t average_gfx_power;
|
|
/* time filtered dGPU power [mW] */
|
|
uint32_t average_dgpu_power;
|
|
/* time filtered sum of core power across all cores in the socket [mW] */
|
|
uint32_t average_all_core_power;
|
|
/* calculated core power [mW] */
|
|
uint16_t average_core_power[16];
|
|
/* time filtered total system power [mW] */
|
|
uint16_t average_sys_power;
|
|
/* maximum IRM defined STAPM power limit [mW] */
|
|
uint16_t stapm_power_limit;
|
|
/* time filtered STAPM power limit [mW] */
|
|
uint16_t current_stapm_power_limit;
|
|
|
|
/* time filtered clocks [MHz] */
|
|
uint16_t average_gfxclk_frequency;
|
|
uint16_t average_socclk_frequency;
|
|
uint16_t average_vpeclk_frequency;
|
|
uint16_t average_ipuclk_frequency;
|
|
uint16_t average_fclk_frequency;
|
|
uint16_t average_vclk_frequency;
|
|
uint16_t average_uclk_frequency;
|
|
uint16_t average_mpipu_frequency;
|
|
|
|
/* Current clocks */
|
|
/* target core frequency [MHz] */
|
|
uint16_t current_coreclk[16];
|
|
/* CCLK frequency limit enforced on classic cores [MHz] */
|
|
uint16_t current_core_maxfreq;
|
|
/* GFXCLK frequency limit enforced on GFX [MHz] */
|
|
uint16_t current_gfx_maxfreq;
|
|
|
|
/* Throttle Residency (ASIC dependent) */
|
|
uint32_t throttle_residency_prochot;
|
|
uint32_t throttle_residency_spl;
|
|
uint32_t throttle_residency_fppt;
|
|
uint32_t throttle_residency_sppt;
|
|
uint32_t throttle_residency_thm_core;
|
|
uint32_t throttle_residency_thm_gfx;
|
|
uint32_t throttle_residency_thm_soc;
|
|
|
|
/* Metrics table alpha filter time constant [us] */
|
|
uint32_t time_filter_alphavalue;
|
|
};
|
|
} // namespace gpu
|