drm/amdgpu: fix SDMA suspend/resume on SR-IOV
Update all SDMA versions that support SR-IOV to properly tear down the ttm buffer functions on suspend. Tested-by: Bokun Zhang <Bokun.Zhang@amd.com> Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
This commit is contained in:
parent
571c053658
commit
a98cec220a
@ -1940,8 +1940,11 @@ static int sdma_v4_0_hw_fini(void *handle)
|
||||
struct amdgpu_device *adev = (struct amdgpu_device *)handle;
|
||||
int i;
|
||||
|
||||
if (amdgpu_sriov_vf(adev))
|
||||
if (amdgpu_sriov_vf(adev)) {
|
||||
/* disable the scheduler for SDMA */
|
||||
amdgpu_sdma_unset_buffer_funcs_helper(adev);
|
||||
return 0;
|
||||
}
|
||||
|
||||
for (i = 0; i < adev->sdma.num_instances; i++) {
|
||||
amdgpu_irq_put(adev, &adev->sdma.ecc_irq,
|
||||
|
@ -1456,8 +1456,11 @@ static int sdma_v5_0_hw_fini(void *handle)
|
||||
{
|
||||
struct amdgpu_device *adev = (struct amdgpu_device *)handle;
|
||||
|
||||
if (amdgpu_sriov_vf(adev))
|
||||
if (amdgpu_sriov_vf(adev)) {
|
||||
/* disable the scheduler for SDMA */
|
||||
amdgpu_sdma_unset_buffer_funcs_helper(adev);
|
||||
return 0;
|
||||
}
|
||||
|
||||
sdma_v5_0_ctx_switch_enable(adev, false);
|
||||
sdma_v5_0_enable(adev, false);
|
||||
|
@ -1349,19 +1349,15 @@ static int sdma_v5_2_hw_fini(void *handle)
|
||||
{
|
||||
struct amdgpu_device *adev = (struct amdgpu_device *)handle;
|
||||
|
||||
/*
|
||||
* Under SRIOV, the VF cannot single-mindedly stop SDMA engine
|
||||
* However, we still need to clean up the DRM entity
|
||||
* Therefore, we will re-enable SDMA afterwards.
|
||||
*/
|
||||
if (amdgpu_sriov_vf(adev)) {
|
||||
/* disable the scheduler for SDMA */
|
||||
amdgpu_sdma_unset_buffer_funcs_helper(adev);
|
||||
return 0;
|
||||
}
|
||||
|
||||
sdma_v5_2_ctx_switch_enable(adev, false);
|
||||
sdma_v5_2_enable(adev, false);
|
||||
|
||||
if (amdgpu_sriov_vf(adev)) {
|
||||
sdma_v5_2_enable(adev, true);
|
||||
sdma_v5_2_ctx_switch_enable(adev, true);
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
@ -1311,8 +1311,11 @@ static int sdma_v6_0_hw_fini(void *handle)
|
||||
{
|
||||
struct amdgpu_device *adev = (struct amdgpu_device *)handle;
|
||||
|
||||
if (amdgpu_sriov_vf(adev))
|
||||
if (amdgpu_sriov_vf(adev)) {
|
||||
/* disable the scheduler for SDMA */
|
||||
amdgpu_sdma_unset_buffer_funcs_helper(adev);
|
||||
return 0;
|
||||
}
|
||||
|
||||
sdma_v6_0_ctx_switch_enable(adev, false);
|
||||
sdma_v6_0_enable(adev, false);
|
||||
|
Loading…
x
Reference in New Issue
Block a user