From: Yifan Zha Date: Tue, 23 Aug 2022 05:54:57 +0000 (+0800) Subject: drm/amd: Skip smu_v13 register irq on SRIOV VF X-Git-Tag: v6.1-rc1~159^2~15^2~15 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=72be7316587835e0c76dad472569453e902b562e;p=thirdparty%2Fkernel%2Flinux.git drm/amd: Skip smu_v13 register irq on SRIOV VF [Why] VF do not need to handle SMU IRQ state. L1 Policy will block VF access THM_THERMAL_INT_CTRL and MP1_SMN_IH_SW_INT/CNTL. [How] Skip smu_v13 init register_irq_handler under SRIOV VF. And add irq_src check in enable/disable thermal alert to avoid thermal alert enable/disable fail. Acked-by: Christian König Signed-off-by: Yifan Zha Reviewed-by: Hawking Zhang Signed-off-by: Alex Deucher --- diff --git a/drivers/gpu/drm/amd/pm/swsmu/smu13/smu_v13_0.c b/drivers/gpu/drm/amd/pm/swsmu/smu13/smu_v13_0.c index 65045a955ab25..6e4a052dc53de 100644 --- a/drivers/gpu/drm/amd/pm/swsmu/smu13/smu_v13_0.c +++ b/drivers/gpu/drm/amd/pm/swsmu/smu13/smu_v13_0.c @@ -1108,6 +1108,9 @@ int smu_v13_0_enable_thermal_alert(struct smu_context *smu) { int ret = 0; + if (!smu->irq_source.num_types) + return 0; + ret = amdgpu_irq_get(smu->adev, &smu->irq_source, 0); if (ret) return ret; @@ -1117,6 +1120,9 @@ int smu_v13_0_enable_thermal_alert(struct smu_context *smu) int smu_v13_0_disable_thermal_alert(struct smu_context *smu) { + if (!smu->irq_source.num_types) + return 0; + return amdgpu_irq_put(smu->adev, &smu->irq_source, 0); } @@ -1488,6 +1494,9 @@ int smu_v13_0_register_irq_handler(struct smu_context *smu) struct amdgpu_irq_src *irq_src = &smu->irq_source; int ret = 0; + if (amdgpu_sriov_vf(adev)) + return 0; + irq_src->num_types = 1; irq_src->funcs = &smu_v13_0_irq_funcs;