aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRex Zhu <Rex.Zhu@amd.com>2018-10-18 22:46:53 -0400
committerAlex Deucher <alexander.deucher@amd.com>2018-10-24 21:04:03 -0400
commit7179d24040d66de22e4710e943256be9e1045feb (patch)
tree057355430d6663577ad36f1b8bca8a037c45a099
parent6f059c641b31076248ba89d0f7e0e753946a8099 (diff)
drm/amdgpu: Fix null point error
need to check adev->powerplay.pp_funcs first, becasue from AI, the smu ip can be disabled by user, and the pp_handle is null in this case. Reviewed-by: Alex Deucher <alexander.deucher@amd.com> Signed-off-by: Rex Zhu <Rex.Zhu@amd.com> Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
-rw-r--r--drivers/gpu/drm/amd/amdgpu/amdgpu_acp.c6
-rw-r--r--drivers/gpu/drm/amd/amdgpu/amdgpu_gfx.c2
-rw-r--r--drivers/gpu/drm/amd/amdgpu/mmhub_v1_0.c2
-rw-r--r--drivers/gpu/drm/amd/amdgpu/sdma_v4_0.c6
4 files changed, 10 insertions, 6 deletions
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_acp.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_acp.c
index 297a5490ad8c..0a4fba196b84 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_acp.c
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_acp.c
@@ -135,7 +135,8 @@ static int acp_poweroff(struct generic_pm_domain *genpd)
135 * 2. power off the acp tiles 135 * 2. power off the acp tiles
136 * 3. check and enter ulv state 136 * 3. check and enter ulv state
137 */ 137 */
138 if (adev->powerplay.pp_funcs->set_powergating_by_smu) 138 if (adev->powerplay.pp_funcs &&
139 adev->powerplay.pp_funcs->set_powergating_by_smu)
139 amdgpu_dpm_set_powergating_by_smu(adev, AMD_IP_BLOCK_TYPE_ACP, true); 140 amdgpu_dpm_set_powergating_by_smu(adev, AMD_IP_BLOCK_TYPE_ACP, true);
140 } 141 }
141 return 0; 142 return 0;
@@ -517,7 +518,8 @@ static int acp_set_powergating_state(void *handle,
517 struct amdgpu_device *adev = (struct amdgpu_device *)handle; 518 struct amdgpu_device *adev = (struct amdgpu_device *)handle;
518 bool enable = state == AMD_PG_STATE_GATE ? true : false; 519 bool enable = state == AMD_PG_STATE_GATE ? true : false;
519 520
520 if (adev->powerplay.pp_funcs->set_powergating_by_smu) 521 if (adev->powerplay.pp_funcs &&
522 adev->powerplay.pp_funcs->set_powergating_by_smu)
521 amdgpu_dpm_set_powergating_by_smu(adev, AMD_IP_BLOCK_TYPE_ACP, enable); 523 amdgpu_dpm_set_powergating_by_smu(adev, AMD_IP_BLOCK_TYPE_ACP, enable);
522 524
523 return 0; 525 return 0;
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_gfx.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_gfx.c
index 790fd5408ddf..1a656b8657f7 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_gfx.c
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_gfx.c
@@ -392,7 +392,7 @@ void amdgpu_gfx_off_ctrl(struct amdgpu_device *adev, bool enable)
392 if (!(adev->powerplay.pp_feature & PP_GFXOFF_MASK)) 392 if (!(adev->powerplay.pp_feature & PP_GFXOFF_MASK))
393 return; 393 return;
394 394
395 if (!adev->powerplay.pp_funcs->set_powergating_by_smu) 395 if (!adev->powerplay.pp_funcs || !adev->powerplay.pp_funcs->set_powergating_by_smu)
396 return; 396 return;
397 397
398 398
diff --git a/drivers/gpu/drm/amd/amdgpu/mmhub_v1_0.c b/drivers/gpu/drm/amd/amdgpu/mmhub_v1_0.c
index 14649f8475f3..fd23ba1226a5 100644
--- a/drivers/gpu/drm/amd/amdgpu/mmhub_v1_0.c
+++ b/drivers/gpu/drm/amd/amdgpu/mmhub_v1_0.c
@@ -280,7 +280,7 @@ void mmhub_v1_0_update_power_gating(struct amdgpu_device *adev,
280 return; 280 return;
281 281
282 if (enable && adev->pg_flags & AMD_PG_SUPPORT_MMHUB) { 282 if (enable && adev->pg_flags & AMD_PG_SUPPORT_MMHUB) {
283 if (adev->powerplay.pp_funcs->set_powergating_by_smu) 283 if (adev->powerplay.pp_funcs && adev->powerplay.pp_funcs->set_powergating_by_smu)
284 amdgpu_dpm_set_powergating_by_smu(adev, AMD_IP_BLOCK_TYPE_GMC, true); 284 amdgpu_dpm_set_powergating_by_smu(adev, AMD_IP_BLOCK_TYPE_GMC, true);
285 285
286 } 286 }
diff --git a/drivers/gpu/drm/amd/amdgpu/sdma_v4_0.c b/drivers/gpu/drm/amd/amdgpu/sdma_v4_0.c
index 04fa3d972636..7a8c9172d30a 100644
--- a/drivers/gpu/drm/amd/amdgpu/sdma_v4_0.c
+++ b/drivers/gpu/drm/amd/amdgpu/sdma_v4_0.c
@@ -1366,7 +1366,8 @@ static int sdma_v4_0_hw_init(void *handle)
1366 int r; 1366 int r;
1367 struct amdgpu_device *adev = (struct amdgpu_device *)handle; 1367 struct amdgpu_device *adev = (struct amdgpu_device *)handle;
1368 1368
1369 if (adev->asic_type == CHIP_RAVEN && adev->powerplay.pp_funcs->set_powergating_by_smu) 1369 if (adev->asic_type == CHIP_RAVEN && adev->powerplay.pp_funcs &&
1370 adev->powerplay.pp_funcs->set_powergating_by_smu)
1370 amdgpu_dpm_set_powergating_by_smu(adev, AMD_IP_BLOCK_TYPE_SDMA, false); 1371 amdgpu_dpm_set_powergating_by_smu(adev, AMD_IP_BLOCK_TYPE_SDMA, false);
1371 1372
1372 sdma_v4_0_init_golden_registers(adev); 1373 sdma_v4_0_init_golden_registers(adev);
@@ -1386,7 +1387,8 @@ static int sdma_v4_0_hw_fini(void *handle)
1386 sdma_v4_0_ctx_switch_enable(adev, false); 1387 sdma_v4_0_ctx_switch_enable(adev, false);
1387 sdma_v4_0_enable(adev, false); 1388 sdma_v4_0_enable(adev, false);
1388 1389
1389 if (adev->asic_type == CHIP_RAVEN && adev->powerplay.pp_funcs->set_powergating_by_smu) 1390 if (adev->asic_type == CHIP_RAVEN && adev->powerplay.pp_funcs
1391 && adev->powerplay.pp_funcs->set_powergating_by_smu)
1390 amdgpu_dpm_set_powergating_by_smu(adev, AMD_IP_BLOCK_TYPE_SDMA, true); 1392 amdgpu_dpm_set_powergating_by_smu(adev, AMD_IP_BLOCK_TYPE_SDMA, true);
1391 1393
1392 return 0; 1394 return 0;