diff options
Diffstat (limited to 'common/recipes-kernel/linux/linux-yocto-4.14.71/4338-drm-amdgpu-For-sriov-reset-move-IB-test-into-exclusi.patch')
-rw-r--r-- | common/recipes-kernel/linux/linux-yocto-4.14.71/4338-drm-amdgpu-For-sriov-reset-move-IB-test-into-exclusi.patch | 50 |
1 files changed, 50 insertions, 0 deletions
diff --git a/common/recipes-kernel/linux/linux-yocto-4.14.71/4338-drm-amdgpu-For-sriov-reset-move-IB-test-into-exclusi.patch b/common/recipes-kernel/linux/linux-yocto-4.14.71/4338-drm-amdgpu-For-sriov-reset-move-IB-test-into-exclusi.patch new file mode 100644 index 00000000..c7b2de56 --- /dev/null +++ b/common/recipes-kernel/linux/linux-yocto-4.14.71/4338-drm-amdgpu-For-sriov-reset-move-IB-test-into-exclusi.patch @@ -0,0 +1,50 @@ +From 54c3274c63a32a0379f483b14ade2030885ae969 Mon Sep 17 00:00:00 2001 +From: Emily Deng <Emily.Deng@amd.com> +Date: Thu, 26 Apr 2018 18:02:55 +0800 +Subject: [PATCH 4338/5725] drm/amdgpu: For sriov reset, move IB test into + exclusive mode + +When put the IB test out of exclusive mode, and do sriov reset, +the IB test will randomly fail. As out of exclusive mode it uses +kiq to do read and write registers, but as it has world switch, +the kiq read and write time will be random, sometimes it will +beyond the MAX_KIQ_REG_WAIT and then the read or write register +will fail, which will result the IB test fail. + +Signed-off-by: Emily Deng <Emily.Deng@amd.com> +Reviewed-by: Monk Liu <monk.liu@amd.com> +Signed-off-by: Kalyan Alle <kalyan.alle@amd.com> +--- + drivers/gpu/drm/amd/amdgpu/amdgpu_device.c | 6 +++--- + 1 file changed, 3 insertions(+), 3 deletions(-) + +diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c +index 30e607e..405d3a8 100644 +--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c ++++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c +@@ -3213,19 +3213,19 @@ static int amdgpu_device_reset_sriov(struct amdgpu_device *adev, + + /* now we are okay to resume SMC/CP/SDMA */ + r = amdgpu_device_ip_reinit_late_sriov(adev); +- amdgpu_virt_release_full_gpu(adev, true); + if (r) + goto error; + + amdgpu_irq_gpu_reset_resume_helper(adev); + r = amdgpu_ib_ring_tests(adev); ++ ++error: ++ amdgpu_virt_release_full_gpu(adev, true); + if (!r && adev->virt.gim_feature & AMDGIM_FEATURE_GIM_FLR_VRAMLOST) { + atomic_inc(&adev->vram_lost_counter); + r = amdgpu_device_handle_vram_lost(adev); + } + +-error: +- + return r; + } + +-- +2.7.4 + |