mirror of
https://github.com/torvalds/linux.git
synced 2026-05-05 06:52:34 -04:00
drm/amdgpu: revert "Adjust removal control flow for smu v13_0_2"
Calling amdgpu_device_ip_resume_phase1() during shutdown leaves the
HW in an active state and is an unbalanced use of the IP callbacks.
Using the IP callbacks like this can lead to memory leaks, double
free and imbalanced reference counters.
Leaving the HW in an active state can lead to DMA accesses to memory now
freed by the driver.
Both is a complete no-go for driver unload so completely revert the
workaround for now.
This reverts commit f5c7e77970.
Signed-off-by: Christian König <christian.koenig@amd.com>
Acked-by: Alex Deucher <alexander.deucher@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
This commit is contained in:
committed by
Alex Deucher
parent
8a1f7fddab
commit
087a3e13ec
@@ -2337,38 +2337,6 @@ amdgpu_pci_remove(struct pci_dev *pdev)
|
||||
pm_runtime_forbid(dev->dev);
|
||||
}
|
||||
|
||||
if (amdgpu_ip_version(adev, MP1_HWIP, 0) == IP_VERSION(13, 0, 2) &&
|
||||
!amdgpu_sriov_vf(adev)) {
|
||||
bool need_to_reset_gpu = false;
|
||||
|
||||
if (adev->gmc.xgmi.num_physical_nodes > 1) {
|
||||
struct amdgpu_hive_info *hive;
|
||||
|
||||
hive = amdgpu_get_xgmi_hive(adev);
|
||||
if (hive->device_remove_count == 0)
|
||||
need_to_reset_gpu = true;
|
||||
hive->device_remove_count++;
|
||||
amdgpu_put_xgmi_hive(hive);
|
||||
} else {
|
||||
need_to_reset_gpu = true;
|
||||
}
|
||||
|
||||
/* Workaround for ASICs need to reset SMU.
|
||||
* Called only when the first device is removed.
|
||||
*/
|
||||
if (need_to_reset_gpu) {
|
||||
struct amdgpu_reset_context reset_context;
|
||||
|
||||
adev->shutdown = true;
|
||||
memset(&reset_context, 0, sizeof(reset_context));
|
||||
reset_context.method = AMD_RESET_METHOD_NONE;
|
||||
reset_context.reset_req_dev = adev;
|
||||
set_bit(AMDGPU_NEED_FULL_RESET, &reset_context.flags);
|
||||
set_bit(AMDGPU_RESET_FOR_DEVICE_REMOVE, &reset_context.flags);
|
||||
amdgpu_device_gpu_recover(adev, NULL, &reset_context);
|
||||
}
|
||||
}
|
||||
|
||||
amdgpu_driver_unload_kms(dev);
|
||||
|
||||
/*
|
||||
|
||||
Reference in New Issue
Block a user