[PATCH 2/4] drm/amd/powerplay: enable SMC message filter
Wenhui Sheng
Wenhui.Sheng at amd.com
Tue May 26 10:05:41 UTC 2020
1. enable SMC message filter in SRIOV situation
2. return -EACCESS if msg is blocked from smu_msg_get_index
3. if msg is block, always return 0 from smu_v11_0_send_msg_with_param
Signed-off-by: Wenhui Sheng <Wenhui.Sheng at amd.com>
Change-Id: Iec3d259fd621ee2a043c9b6ec9076e7be4c66442
Reviewed-by: Hawking Zhang <Hawking.Zhang at amd.com>
---
drivers/gpu/drm/amd/powerplay/arcturus_ppt.c | 12 +++---------
drivers/gpu/drm/amd/powerplay/navi10_ppt.c | 3 +++
drivers/gpu/drm/amd/powerplay/smu_v11_0.c | 2 +-
3 files changed, 7 insertions(+), 10 deletions(-)
diff --git a/drivers/gpu/drm/amd/powerplay/arcturus_ppt.c b/drivers/gpu/drm/amd/powerplay/arcturus_ppt.c
index fad6f3a60dc9..dcbb273674d1 100644
--- a/drivers/gpu/drm/amd/powerplay/arcturus_ppt.c
+++ b/drivers/gpu/drm/amd/powerplay/arcturus_ppt.c
@@ -208,6 +208,9 @@ static int arcturus_get_smu_msg_index(struct smu_context *smc, uint32_t index)
if (!(mapping.valid_mapping))
return -EINVAL;
+ if (amdgpu_sriov_vf(smc->adev) && !mapping.valid_in_vf)
+ return -EACCES;
+
return mapping.map_to;
}
@@ -382,11 +385,6 @@ arcturus_set_single_dpm_table(struct smu_context *smu,
return ret;
}
- if (!num_of_levels) {
- pr_err("[%s] number of clk levels is invalid!\n", __func__);
- return -EINVAL;
- }
-
single_dpm_table->count = num_of_levels;
for (i = 0; i < num_of_levels; i++) {
ret = smu_send_smc_msg_with_param(smu,
@@ -397,10 +395,6 @@ arcturus_set_single_dpm_table(struct smu_context *smu,
pr_err("[%s] failed to get dpm freq by index!\n", __func__);
return ret;
}
- if (!clk) {
- pr_err("[%s] clk value is invalid!\n", __func__);
- return -EINVAL;
- }
single_dpm_table->dpm_levels[i].value = clk;
single_dpm_table->dpm_levels[i].enabled = true;
}
diff --git a/drivers/gpu/drm/amd/powerplay/navi10_ppt.c b/drivers/gpu/drm/amd/powerplay/navi10_ppt.c
index 2dd48b2c580b..5f7373e86d90 100644
--- a/drivers/gpu/drm/amd/powerplay/navi10_ppt.c
+++ b/drivers/gpu/drm/amd/powerplay/navi10_ppt.c
@@ -228,6 +228,9 @@ static int navi10_get_smu_msg_index(struct smu_context *smc, uint32_t index)
return -EINVAL;
}
+ if (amdgpu_sriov_vf(smc->adev) && !mapping.valid_in_vf)
+ return -EACCES;
+
return mapping.map_to;
}
diff --git a/drivers/gpu/drm/amd/powerplay/smu_v11_0.c b/drivers/gpu/drm/amd/powerplay/smu_v11_0.c
index ee9e04dd8155..906bc7f2e686 100644
--- a/drivers/gpu/drm/amd/powerplay/smu_v11_0.c
+++ b/drivers/gpu/drm/amd/powerplay/smu_v11_0.c
@@ -100,7 +100,7 @@ smu_v11_0_send_msg_with_param(struct smu_context *smu,
index = smu_msg_get_index(smu, msg);
if (index < 0)
- return index;
+ return index == -EACCES ? 0 : index;
mutex_lock(&smu->message_lock);
ret = smu_v11_0_wait_for_response(smu);
--
2.17.1
More information about the amd-gfx
mailing list