@@ -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