Skip to content

Commit 39fc2bc

Browse files
yifancomalexdeucher
authored andcommitted
drm/amdgpu: Protect GPU register accesses in powergated state in some paths
Ungate GPU CG/PG in device_fini_hw and device_halt to protect GPU register accesses, e.g. GC registers are accessed in amdgpu_irq_disable_all() and amdgpu_fence_driver_hw_fini(). Signed-off-by: Yifan Zhang <yifan1.zhang@amd.com> Acked-by: Alex Deucher <alexander.deucher@amd.com> Reviewed-by: Lijo Lazar <lijo.lazar@amd.com> Signed-off-by: Alex Deucher <alexander.deucher@amd.com> Cc: stable@vger.kernel.org
1 parent 8a70a26 commit 39fc2bc

1 file changed

Lines changed: 6 additions & 3 deletions

File tree

drivers/gpu/drm/amd/amdgpu/amdgpu_device.c

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3504,9 +3504,6 @@ static int amdgpu_device_ip_fini_early(struct amdgpu_device *adev)
35043504
}
35053505
}
35063506

3507-
amdgpu_device_set_pg_state(adev, AMD_PG_STATE_UNGATE);
3508-
amdgpu_device_set_cg_state(adev, AMD_CG_STATE_UNGATE);
3509-
35103507
amdgpu_amdkfd_suspend(adev, true);
35113508
amdgpu_amdkfd_teardown_processes(adev);
35123509
amdgpu_userq_suspend(adev);
@@ -4902,6 +4899,9 @@ void amdgpu_device_fini_hw(struct amdgpu_device *adev)
49024899
amdgpu_virt_fini_data_exchange(adev);
49034900
}
49044901

4902+
amdgpu_device_set_pg_state(adev, AMD_PG_STATE_UNGATE);
4903+
amdgpu_device_set_cg_state(adev, AMD_CG_STATE_UNGATE);
4904+
49054905
/* disable all interrupts */
49064906
amdgpu_irq_disable_all(adev);
49074907
if (adev->mode_info.mode_config_initialized) {
@@ -7360,6 +7360,9 @@ void amdgpu_device_halt(struct amdgpu_device *adev)
73607360
amdgpu_xcp_dev_unplug(adev);
73617361
drm_dev_unplug(ddev);
73627362

7363+
amdgpu_device_set_pg_state(adev, AMD_PG_STATE_UNGATE);
7364+
amdgpu_device_set_cg_state(adev, AMD_CG_STATE_UNGATE);
7365+
73637366
amdgpu_irq_disable_all(adev);
73647367

73657368
amdgpu_fence_driver_hw_fini(adev);

0 commit comments

Comments
 (0)