Skip to content

Commit 849ad2a

Browse files
Lijo Lazaralexdeucher
authored andcommitted
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>
1 parent fea8f13 commit 849ad2a

1 file changed

Lines changed: 117 additions & 0 deletions

File tree

drivers/gpu/drm/amd/include/kgd_pp_interface.h

Lines changed: 117 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -532,6 +532,110 @@ struct metrics_table_header {
532532
uint8_t content_revision;
533533
};
534534

535+
enum amdgpu_metrics_attr_id {
536+
AMDGPU_METRICS_ATTR_ID_TEMPERATURE_HOTSPOT,
537+
AMDGPU_METRICS_ATTR_ID_TEMPERATURE_MEM,
538+
AMDGPU_METRICS_ATTR_ID_TEMPERATURE_VRSOC,
539+
AMDGPU_METRICS_ATTR_ID_CURR_SOCKET_POWER,
540+
AMDGPU_METRICS_ATTR_ID_AVERAGE_GFX_ACTIVITY,
541+
AMDGPU_METRICS_ATTR_ID_AVERAGE_UMC_ACTIVITY,
542+
AMDGPU_METRICS_ATTR_ID_MEM_MAX_BANDWIDTH,
543+
AMDGPU_METRICS_ATTR_ID_ENERGY_ACCUMULATOR,
544+
AMDGPU_METRICS_ATTR_ID_SYSTEM_CLOCK_COUNTER,
545+
AMDGPU_METRICS_ATTR_ID_ACCUMULATION_COUNTER,
546+
AMDGPU_METRICS_ATTR_ID_PROCHOT_RESIDENCY_ACC,
547+
AMDGPU_METRICS_ATTR_ID_PPT_RESIDENCY_ACC,
548+
AMDGPU_METRICS_ATTR_ID_SOCKET_THM_RESIDENCY_ACC,
549+
AMDGPU_METRICS_ATTR_ID_VR_THM_RESIDENCY_ACC,
550+
AMDGPU_METRICS_ATTR_ID_HBM_THM_RESIDENCY_ACC,
551+
AMDGPU_METRICS_ATTR_ID_GFXCLK_LOCK_STATUS,
552+
AMDGPU_METRICS_ATTR_ID_PCIE_LINK_WIDTH,
553+
AMDGPU_METRICS_ATTR_ID_PCIE_LINK_SPEED,
554+
AMDGPU_METRICS_ATTR_ID_XGMI_LINK_WIDTH,
555+
AMDGPU_METRICS_ATTR_ID_XGMI_LINK_SPEED,
556+
AMDGPU_METRICS_ATTR_ID_GFX_ACTIVITY_ACC,
557+
AMDGPU_METRICS_ATTR_ID_MEM_ACTIVITY_ACC,
558+
AMDGPU_METRICS_ATTR_ID_PCIE_BANDWIDTH_ACC,
559+
AMDGPU_METRICS_ATTR_ID_PCIE_BANDWIDTH_INST,
560+
AMDGPU_METRICS_ATTR_ID_PCIE_L0_TO_RECOV_COUNT_ACC,
561+
AMDGPU_METRICS_ATTR_ID_PCIE_REPLAY_COUNT_ACC,
562+
AMDGPU_METRICS_ATTR_ID_PCIE_REPLAY_ROVER_COUNT_ACC,
563+
AMDGPU_METRICS_ATTR_ID_PCIE_NAK_SENT_COUNT_ACC,
564+
AMDGPU_METRICS_ATTR_ID_PCIE_NAK_RCVD_COUNT_ACC,
565+
AMDGPU_METRICS_ATTR_ID_XGMI_READ_DATA_ACC,
566+
AMDGPU_METRICS_ATTR_ID_XGMI_WRITE_DATA_ACC,
567+
AMDGPU_METRICS_ATTR_ID_XGMI_LINK_STATUS,
568+
AMDGPU_METRICS_ATTR_ID_FIRMWARE_TIMESTAMP,
569+
AMDGPU_METRICS_ATTR_ID_CURRENT_GFXCLK,
570+
AMDGPU_METRICS_ATTR_ID_CURRENT_SOCCLK,
571+
AMDGPU_METRICS_ATTR_ID_CURRENT_VCLK0,
572+
AMDGPU_METRICS_ATTR_ID_CURRENT_DCLK0,
573+
AMDGPU_METRICS_ATTR_ID_CURRENT_UCLK,
574+
AMDGPU_METRICS_ATTR_ID_NUM_PARTITION,
575+
AMDGPU_METRICS_ATTR_ID_PCIE_LC_PERF_OTHER_END_RECOVERY,
576+
AMDGPU_METRICS_ATTR_ID_GFX_BUSY_INST,
577+
AMDGPU_METRICS_ATTR_ID_JPEG_BUSY,
578+
AMDGPU_METRICS_ATTR_ID_VCN_BUSY,
579+
AMDGPU_METRICS_ATTR_ID_GFX_BUSY_ACC,
580+
AMDGPU_METRICS_ATTR_ID_GFX_BELOW_HOST_LIMIT_PPT_ACC,
581+
AMDGPU_METRICS_ATTR_ID_GFX_BELOW_HOST_LIMIT_THM_ACC,
582+
AMDGPU_METRICS_ATTR_ID_GFX_LOW_UTILIZATION_ACC,
583+
AMDGPU_METRICS_ATTR_ID_GFX_BELOW_HOST_LIMIT_TOTAL_ACC,
584+
AMDGPU_METRICS_ATTR_ID_MAX,
585+
};
586+
587+
enum amdgpu_metrics_attr_type {
588+
AMDGPU_METRICS_TYPE_U8,
589+
AMDGPU_METRICS_TYPE_S8,
590+
AMDGPU_METRICS_TYPE_U16,
591+
AMDGPU_METRICS_TYPE_S16,
592+
AMDGPU_METRICS_TYPE_U32,
593+
AMDGPU_METRICS_TYPE_S32,
594+
AMDGPU_METRICS_TYPE_U64,
595+
AMDGPU_METRICS_TYPE_S64,
596+
AMDGPU_METRICS_TYPE_MAX,
597+
};
598+
599+
enum amdgpu_metrics_attr_unit {
600+
/* None */
601+
AMDGPU_METRICS_UNIT_NONE,
602+
/* MHz*/
603+
AMDGPU_METRICS_UNIT_CLOCK_1,
604+
/* Degree Celsius*/
605+
AMDGPU_METRICS_UNIT_TEMP_1,
606+
/* Watts*/
607+
AMDGPU_METRICS_UNIT_POWER_1,
608+
/* In nanoseconds*/
609+
AMDGPU_METRICS_UNIT_TIME_1,
610+
/* In 10 nanoseconds*/
611+
AMDGPU_METRICS_UNIT_TIME_2,
612+
/* Speed in GT/s */
613+
AMDGPU_METRICS_UNIT_SPEED_1,
614+
/* Speed in 0.1 GT/s */
615+
AMDGPU_METRICS_UNIT_SPEED_2,
616+
/* Bandwidth GB/s */
617+
AMDGPU_METRICS_UNIT_BW_1,
618+
/* Data in KB */
619+
AMDGPU_METRICS_UNIT_DATA_1,
620+
/* Percentage */
621+
AMDGPU_METRICS_UNIT_PERCENT,
622+
AMDGPU_METRICS_UNIT_MAX,
623+
};
624+
625+
#define AMDGPU_METRICS_ATTR_UNIT_MASK 0xFF000000
626+
#define AMDGPU_METRICS_ATTR_UNIT_SHIFT 24
627+
#define AMDGPU_METRICS_ATTR_TYPE_MASK 0x00F00000
628+
#define AMDGPU_METRICS_ATTR_TYPE_SHIFT 20
629+
#define AMDGPU_METRICS_ATTR_ID_MASK 0x000FFC00
630+
#define AMDGPU_METRICS_ATTR_ID_SHIFT 10
631+
#define AMDGPU_METRICS_ATTR_INST_MASK 0x000003FF
632+
#define AMDGPU_METRICS_ATTR_INST_SHIFT 0
633+
634+
#define AMDGPU_METRICS_ENC_ATTR(unit, type, id, inst) \
635+
(((u64)(unit) << AMDGPU_METRICS_ATTR_UNIT_SHIFT) | \
636+
((u64)(type) << AMDGPU_METRICS_ATTR_TYPE_SHIFT) | \
637+
((u64)(id) << AMDGPU_METRICS_ATTR_ID_SHIFT) | (inst))
638+
535639
/*
536640
* gpu_metrics_v1_0 is not recommended as it's not naturally aligned.
537641
* Use gpu_metrics_v1_1 or later instead.
@@ -1221,6 +1325,19 @@ struct gpu_metrics_v1_8 {
12211325
uint32_t pcie_lc_perf_other_end_recovery;
12221326
};
12231327

1328+
struct gpu_metrics_attr {
1329+
/* Field type encoded with AMDGPU_METRICS_ENC_ATTR */
1330+
uint64_t attr_encoding;
1331+
/* Attribute value, depends on attr_encoding */
1332+
void *attr_value;
1333+
};
1334+
1335+
struct gpu_metrics_v1_9 {
1336+
struct metrics_table_header common_header;
1337+
int attr_count;
1338+
struct gpu_metrics_attr metrics_attrs[];
1339+
};
1340+
12241341
/*
12251342
* gpu_metrics_v2_0 is not recommended as it's not naturally aligned.
12261343
* Use gpu_metrics_v2_1 or later instead.

0 commit comments

Comments
 (0)