From 00dedab07b52ca16107e82ce5ca7caaaedf6a417 Mon Sep 17 00:00:00 2001 From: Asad Kamal Date: Mon, 13 May 2024 19:18:00 +0800 Subject: drm/amd/pm: Add gpu_metrics_v1_6 Add new gpu_metrics_v1_6 to acquire accumulated throttler residencies Signed-off-by: Asad Kamal Reviewed-by: Lijo Lazar Reviewed-by: Hawking Zhang Signed-off-by: Alex Deucher --- drivers/gpu/drm/amd/include/kgd_pp_interface.h | 89 ++++++++++++++++++++++++++ 1 file changed, 89 insertions(+) (limited to 'drivers/gpu/drm/amd/include/kgd_pp_interface.h') diff --git a/drivers/gpu/drm/amd/include/kgd_pp_interface.h b/drivers/gpu/drm/amd/include/kgd_pp_interface.h index 805c9d37a2b4..a0955cfe41ce 100644 --- a/drivers/gpu/drm/amd/include/kgd_pp_interface.h +++ b/drivers/gpu/drm/amd/include/kgd_pp_interface.h @@ -854,6 +854,95 @@ struct gpu_metrics_v1_5 { uint16_t padding; }; +struct gpu_metrics_v1_6 { + 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; + + /* Accumulation cycle counter */ + uint32_t accumulation_counter; + + /* Accumulated throttler residencies */ + uint32_t prochot_residency_acc; + uint32_t ppt_residency_acc; + uint32_t socket_thm_residency_acc; + uint32_t vr_thm_residency_acc; + uint32_t hbm_thm_residency_acc; + + /* 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 (Mbps) */ + uint64_t pcie_bandwidth_acc; + + /*PCIE instantaneous bandwidth (Mbps) */ + 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. -- cgit v1.2.3 From 4d154b1ca580fd724f384a7042a5f24611809476 Mon Sep 17 00:00:00 2001 From: Lijo Lazar Date: Wed, 21 Feb 2024 14:54:49 +0530 Subject: drm/amd/pm: Add support for DPM policies Add support to set/get information about different DPM policies. The support is only available on SOCs which use swsmu architecture. A DPM policy type may be defined with different levels. For example, a policy may be defined to select Pstate preference and then later a pstate preference may be chosen. Signed-off-by: Lijo Lazar Acked-by: Alex Deucher Reviewed-by: Asad Kamal Signed-off-by: Alex Deucher --- drivers/gpu/drm/amd/include/kgd_pp_interface.h | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) (limited to 'drivers/gpu/drm/amd/include/kgd_pp_interface.h') diff --git a/drivers/gpu/drm/amd/include/kgd_pp_interface.h b/drivers/gpu/drm/amd/include/kgd_pp_interface.h index a0955cfe41ce..4adfe9f0fd92 100644 --- a/drivers/gpu/drm/amd/include/kgd_pp_interface.h +++ b/drivers/gpu/drm/amd/include/kgd_pp_interface.h @@ -273,6 +273,22 @@ enum pp_xgmi_plpd_mode { XGMI_PLPD_COUNT, }; +enum pp_pm_policy { + PP_PM_POLICY_NONE = -1, + PP_PM_POLICY_SOC_PSTATE = 0, + PP_PM_POLICY_NUM, +}; + +enum pp_policy_soc_pstate { + SOC_PSTATE_DEFAULT = 0, + SOC_PSTATE_0, + SOC_PSTATE_1, + SOC_PSTATE_2, + SOC_PSTAT_COUNT, +}; + +#define PP_POLICY_MAX_LEVELS 5 + #define PP_GROUP_MASK 0xF0000000 #define PP_GROUP_SHIFT 28 -- cgit v1.2.3 From 83b90b138bc291769d212008d7b6952225a1eba0 Mon Sep 17 00:00:00 2001 From: Lijo Lazar Date: Thu, 16 May 2024 13:49:11 +0530 Subject: drm/amd/pm: Add xgmi plpd policy to pm_policy Add support to set XGMI PLPD policy levels through 'pm_policy/xgmi_plpd' sysfs node. Signed-off-by: Lijo Lazar Acked-by: Alex Deucher Reviewed-by: Asad Kamal Signed-off-by: Alex Deucher --- drivers/gpu/drm/amd/include/kgd_pp_interface.h | 1 + 1 file changed, 1 insertion(+) (limited to 'drivers/gpu/drm/amd/include/kgd_pp_interface.h') diff --git a/drivers/gpu/drm/amd/include/kgd_pp_interface.h b/drivers/gpu/drm/amd/include/kgd_pp_interface.h index 4adfe9f0fd92..ac76bcd81a5d 100644 --- a/drivers/gpu/drm/amd/include/kgd_pp_interface.h +++ b/drivers/gpu/drm/amd/include/kgd_pp_interface.h @@ -276,6 +276,7 @@ enum pp_xgmi_plpd_mode { enum pp_pm_policy { PP_PM_POLICY_NONE = -1, PP_PM_POLICY_SOC_PSTATE = 0, + PP_PM_POLICY_XGMI_PLPD, PP_PM_POLICY_NUM, }; -- cgit v1.2.3 From 64af3d3d66c741c5cf6a62606ae37834973a2428 Mon Sep 17 00:00:00 2001 From: Asad Kamal Date: Mon, 20 May 2024 12:53:07 +0800 Subject: Revert "drm/amd/pm: Add gpu_metrics_v1_6" Remove gpu_metrics_v1_6 temporarily until tool support is ready This reverts commit 00dedab07b52ca16107e82ce5ca7caaaedf6a417. Signed-off-by: Asad Kamal Reviewed-by: Lijo Lazar Signed-off-by: Alex Deucher --- drivers/gpu/drm/amd/include/kgd_pp_interface.h | 89 -------------------------- 1 file changed, 89 deletions(-) (limited to 'drivers/gpu/drm/amd/include/kgd_pp_interface.h') diff --git a/drivers/gpu/drm/amd/include/kgd_pp_interface.h b/drivers/gpu/drm/amd/include/kgd_pp_interface.h index ac76bcd81a5d..4b20e2274313 100644 --- a/drivers/gpu/drm/amd/include/kgd_pp_interface.h +++ b/drivers/gpu/drm/amd/include/kgd_pp_interface.h @@ -871,95 +871,6 @@ struct gpu_metrics_v1_5 { uint16_t padding; }; -struct gpu_metrics_v1_6 { - 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; - - /* Accumulation cycle counter */ - uint32_t accumulation_counter; - - /* Accumulated throttler residencies */ - uint32_t prochot_residency_acc; - uint32_t ppt_residency_acc; - uint32_t socket_thm_residency_acc; - uint32_t vr_thm_residency_acc; - uint32_t hbm_thm_residency_acc; - - /* 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 (Mbps) */ - uint64_t pcie_bandwidth_acc; - - /*PCIE instantaneous bandwidth (Mbps) */ - 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. -- cgit v1.2.3