mirror of
https://github.com/torvalds/linux.git
synced 2025-12-07 20:06:24 +00:00
drm/amdgpu/pm: Add definition for gpu_metrics v1.9
Add gpu metrics definition which is only a set of gpu metrics attributes. A field is encoded by its id, type and number of instances. Signed-off-by: Lijo Lazar <lijo.lazar@amd.com> Reviewed-by: Asad Kamal <asad.kamal@amd.com> Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
This commit is contained in:
@@ -532,6 +532,110 @@ struct metrics_table_header {
|
||||
uint8_t content_revision;
|
||||
};
|
||||
|
||||
enum amdgpu_metrics_attr_id {
|
||||
AMDGPU_METRICS_ATTR_ID_TEMPERATURE_HOTSPOT,
|
||||
AMDGPU_METRICS_ATTR_ID_TEMPERATURE_MEM,
|
||||
AMDGPU_METRICS_ATTR_ID_TEMPERATURE_VRSOC,
|
||||
AMDGPU_METRICS_ATTR_ID_CURR_SOCKET_POWER,
|
||||
AMDGPU_METRICS_ATTR_ID_AVERAGE_GFX_ACTIVITY,
|
||||
AMDGPU_METRICS_ATTR_ID_AVERAGE_UMC_ACTIVITY,
|
||||
AMDGPU_METRICS_ATTR_ID_MEM_MAX_BANDWIDTH,
|
||||
AMDGPU_METRICS_ATTR_ID_ENERGY_ACCUMULATOR,
|
||||
AMDGPU_METRICS_ATTR_ID_SYSTEM_CLOCK_COUNTER,
|
||||
AMDGPU_METRICS_ATTR_ID_ACCUMULATION_COUNTER,
|
||||
AMDGPU_METRICS_ATTR_ID_PROCHOT_RESIDENCY_ACC,
|
||||
AMDGPU_METRICS_ATTR_ID_PPT_RESIDENCY_ACC,
|
||||
AMDGPU_METRICS_ATTR_ID_SOCKET_THM_RESIDENCY_ACC,
|
||||
AMDGPU_METRICS_ATTR_ID_VR_THM_RESIDENCY_ACC,
|
||||
AMDGPU_METRICS_ATTR_ID_HBM_THM_RESIDENCY_ACC,
|
||||
AMDGPU_METRICS_ATTR_ID_GFXCLK_LOCK_STATUS,
|
||||
AMDGPU_METRICS_ATTR_ID_PCIE_LINK_WIDTH,
|
||||
AMDGPU_METRICS_ATTR_ID_PCIE_LINK_SPEED,
|
||||
AMDGPU_METRICS_ATTR_ID_XGMI_LINK_WIDTH,
|
||||
AMDGPU_METRICS_ATTR_ID_XGMI_LINK_SPEED,
|
||||
AMDGPU_METRICS_ATTR_ID_GFX_ACTIVITY_ACC,
|
||||
AMDGPU_METRICS_ATTR_ID_MEM_ACTIVITY_ACC,
|
||||
AMDGPU_METRICS_ATTR_ID_PCIE_BANDWIDTH_ACC,
|
||||
AMDGPU_METRICS_ATTR_ID_PCIE_BANDWIDTH_INST,
|
||||
AMDGPU_METRICS_ATTR_ID_PCIE_L0_TO_RECOV_COUNT_ACC,
|
||||
AMDGPU_METRICS_ATTR_ID_PCIE_REPLAY_COUNT_ACC,
|
||||
AMDGPU_METRICS_ATTR_ID_PCIE_REPLAY_ROVER_COUNT_ACC,
|
||||
AMDGPU_METRICS_ATTR_ID_PCIE_NAK_SENT_COUNT_ACC,
|
||||
AMDGPU_METRICS_ATTR_ID_PCIE_NAK_RCVD_COUNT_ACC,
|
||||
AMDGPU_METRICS_ATTR_ID_XGMI_READ_DATA_ACC,
|
||||
AMDGPU_METRICS_ATTR_ID_XGMI_WRITE_DATA_ACC,
|
||||
AMDGPU_METRICS_ATTR_ID_XGMI_LINK_STATUS,
|
||||
AMDGPU_METRICS_ATTR_ID_FIRMWARE_TIMESTAMP,
|
||||
AMDGPU_METRICS_ATTR_ID_CURRENT_GFXCLK,
|
||||
AMDGPU_METRICS_ATTR_ID_CURRENT_SOCCLK,
|
||||
AMDGPU_METRICS_ATTR_ID_CURRENT_VCLK0,
|
||||
AMDGPU_METRICS_ATTR_ID_CURRENT_DCLK0,
|
||||
AMDGPU_METRICS_ATTR_ID_CURRENT_UCLK,
|
||||
AMDGPU_METRICS_ATTR_ID_NUM_PARTITION,
|
||||
AMDGPU_METRICS_ATTR_ID_PCIE_LC_PERF_OTHER_END_RECOVERY,
|
||||
AMDGPU_METRICS_ATTR_ID_GFX_BUSY_INST,
|
||||
AMDGPU_METRICS_ATTR_ID_JPEG_BUSY,
|
||||
AMDGPU_METRICS_ATTR_ID_VCN_BUSY,
|
||||
AMDGPU_METRICS_ATTR_ID_GFX_BUSY_ACC,
|
||||
AMDGPU_METRICS_ATTR_ID_GFX_BELOW_HOST_LIMIT_PPT_ACC,
|
||||
AMDGPU_METRICS_ATTR_ID_GFX_BELOW_HOST_LIMIT_THM_ACC,
|
||||
AMDGPU_METRICS_ATTR_ID_GFX_LOW_UTILIZATION_ACC,
|
||||
AMDGPU_METRICS_ATTR_ID_GFX_BELOW_HOST_LIMIT_TOTAL_ACC,
|
||||
AMDGPU_METRICS_ATTR_ID_MAX,
|
||||
};
|
||||
|
||||
enum amdgpu_metrics_attr_type {
|
||||
AMDGPU_METRICS_TYPE_U8,
|
||||
AMDGPU_METRICS_TYPE_S8,
|
||||
AMDGPU_METRICS_TYPE_U16,
|
||||
AMDGPU_METRICS_TYPE_S16,
|
||||
AMDGPU_METRICS_TYPE_U32,
|
||||
AMDGPU_METRICS_TYPE_S32,
|
||||
AMDGPU_METRICS_TYPE_U64,
|
||||
AMDGPU_METRICS_TYPE_S64,
|
||||
AMDGPU_METRICS_TYPE_MAX,
|
||||
};
|
||||
|
||||
enum amdgpu_metrics_attr_unit {
|
||||
/* None */
|
||||
AMDGPU_METRICS_UNIT_NONE,
|
||||
/* MHz*/
|
||||
AMDGPU_METRICS_UNIT_CLOCK_1,
|
||||
/* Degree Celsius*/
|
||||
AMDGPU_METRICS_UNIT_TEMP_1,
|
||||
/* Watts*/
|
||||
AMDGPU_METRICS_UNIT_POWER_1,
|
||||
/* In nanoseconds*/
|
||||
AMDGPU_METRICS_UNIT_TIME_1,
|
||||
/* In 10 nanoseconds*/
|
||||
AMDGPU_METRICS_UNIT_TIME_2,
|
||||
/* Speed in GT/s */
|
||||
AMDGPU_METRICS_UNIT_SPEED_1,
|
||||
/* Speed in 0.1 GT/s */
|
||||
AMDGPU_METRICS_UNIT_SPEED_2,
|
||||
/* Bandwidth GB/s */
|
||||
AMDGPU_METRICS_UNIT_BW_1,
|
||||
/* Data in KB */
|
||||
AMDGPU_METRICS_UNIT_DATA_1,
|
||||
/* Percentage */
|
||||
AMDGPU_METRICS_UNIT_PERCENT,
|
||||
AMDGPU_METRICS_UNIT_MAX,
|
||||
};
|
||||
|
||||
#define AMDGPU_METRICS_ATTR_UNIT_MASK 0xFF000000
|
||||
#define AMDGPU_METRICS_ATTR_UNIT_SHIFT 24
|
||||
#define AMDGPU_METRICS_ATTR_TYPE_MASK 0x00F00000
|
||||
#define AMDGPU_METRICS_ATTR_TYPE_SHIFT 20
|
||||
#define AMDGPU_METRICS_ATTR_ID_MASK 0x000FFC00
|
||||
#define AMDGPU_METRICS_ATTR_ID_SHIFT 10
|
||||
#define AMDGPU_METRICS_ATTR_INST_MASK 0x000003FF
|
||||
#define AMDGPU_METRICS_ATTR_INST_SHIFT 0
|
||||
|
||||
#define AMDGPU_METRICS_ENC_ATTR(unit, type, id, inst) \
|
||||
(((u64)(unit) << AMDGPU_METRICS_ATTR_UNIT_SHIFT) | \
|
||||
((u64)(type) << AMDGPU_METRICS_ATTR_TYPE_SHIFT) | \
|
||||
((u64)(id) << AMDGPU_METRICS_ATTR_ID_SHIFT) | (inst))
|
||||
|
||||
/*
|
||||
* gpu_metrics_v1_0 is not recommended as it's not naturally aligned.
|
||||
* Use gpu_metrics_v1_1 or later instead.
|
||||
@@ -1221,6 +1325,19 @@ struct gpu_metrics_v1_8 {
|
||||
uint32_t pcie_lc_perf_other_end_recovery;
|
||||
};
|
||||
|
||||
struct gpu_metrics_attr {
|
||||
/* Field type encoded with AMDGPU_METRICS_ENC_ATTR */
|
||||
uint64_t attr_encoding;
|
||||
/* Attribute value, depends on attr_encoding */
|
||||
void *attr_value;
|
||||
};
|
||||
|
||||
struct gpu_metrics_v1_9 {
|
||||
struct metrics_table_header common_header;
|
||||
int attr_count;
|
||||
struct gpu_metrics_attr metrics_attrs[];
|
||||
};
|
||||
|
||||
/*
|
||||
* gpu_metrics_v2_0 is not recommended as it's not naturally aligned.
|
||||
* Use gpu_metrics_v2_1 or later instead.
|
||||
|
||||
Reference in New Issue
Block a user