[PATCH 3/4] drm/amd/powerplay: enable thermal throttling logging support V2

Evan Quan evan.quan at amd.com
Thu May 28 03:04:43 UTC 2020


Currently this feature is supported on Arcturus only. PMFW will
interrupt driver the first time when thermal throttling happened
and every one second afterwards if the throttling continuing. On
receiving the 1st interrupt, driver logs it the first time. However,
if the throttling continues, the logging will be performed every
minute to avoid log flooding.

V2: simplify the implemention by ratelimited printk

Change-Id: Ia4534700ee183c16b3231b461208bd0277f3b6a7
Signed-off-by: Evan Quan <evan.quan at amd.com>
Acked-by: Christian König <christian.koenig at amd.com>
Reviewed-by: Alex Deucher <alexander.deucher at amd.com>
---
 drivers/gpu/drm/amd/powerplay/smu_v11_0.c | 11 +++++++++++
 1 file changed, 11 insertions(+)

diff --git a/drivers/gpu/drm/amd/powerplay/smu_v11_0.c b/drivers/gpu/drm/amd/powerplay/smu_v11_0.c
index 547b0b3d1cd4..7a2e855608de 100644
--- a/drivers/gpu/drm/amd/powerplay/smu_v11_0.c
+++ b/drivers/gpu/drm/amd/powerplay/smu_v11_0.c
@@ -1524,6 +1524,7 @@ static int smu_v11_0_irq_process(struct amdgpu_device *adev,
 				 struct amdgpu_irq_src *source,
 				 struct amdgpu_iv_entry *entry)
 {
+	struct smu_context *smu = &adev->smu;
 	uint32_t client_id = entry->client_id;
 	uint32_t src_id = entry->src_id;
 	/*
@@ -1532,6 +1533,11 @@ static int smu_v11_0_irq_process(struct amdgpu_device *adev,
 	 */
 	uint32_t ctxid = entry->src_data[0];
 	uint32_t data;
+	/*
+	 * if the throttling continues, the logging will be performed every
+	 * minute to avoid log flooding.
+	 */
+	static DEFINE_RATELIMIT_STATE(ratelimit_state, 60 * HZ, 1);
 
 	if (client_id == SOC15_IH_CLIENTID_THM) {
 		switch (src_id) {
@@ -1575,6 +1581,11 @@ static int smu_v11_0_irq_process(struct amdgpu_device *adev,
 				dev_dbg(adev->dev, "Switched to DC mode!\n");
 				smu_v11_0_ack_ac_dc_interrupt(&adev->smu);
 				break;
+			case 0x7:
+				if (__ratelimit(&ratelimit_state))
+					smu_log_thermal_throttling(smu);
+
+				break;
 			}
 		}
 	}
-- 
2.26.2



More information about the amd-gfx mailing list