FAILED: patch "[PATCH] drm/amdgpu: stop scheduler when calling hw_fini (v2)" failed to apply to 5.14-stable tree
Subsystems (3)
[email protected]
maintainerThe patch below does not apply to the 5.14-stable tree.
If someone wants it applied there, or to any other stable or longterm tree, then please email the backport, including the original git commit id to <[email protected]>.
thanks,
greg k-h
------------------ original commit in Linus's tree ------------------
From f7d6779df642720e22bffd449e683bb8690bd3bf Mon Sep 17 00:00:00 2001
From: Guchun Chen <[email protected]>
Date: Fri, 27 Aug 2021 18:31:41 +0800
Subject: [PATCH] drm/amdgpu: stop scheduler when calling hw_fini (v2)
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
This gurantees no more work on the ring can be submitted to hardware in suspend/resume case, otherwise a potential race will occur and the ring will get no chance to stay empty before suspend.
v2: Call drm_sched_resubmit_job before drm_sched_start to restart jobs from the pending list.
drivers/gpu/drm/amd/amdgpu/amdgpu_fence.c +8 -0
@@ -552,6 +552,9 @@ void amdgpu_fence_driver_hw_fini(struct amdgpu_device *adev)if (!ring || !ring->fence_drv.initialized)continue ; +if (!ring->no_scheduler) +drm_sched_stop (&ring->sched,NULL ); +/* You can't wait for HW to signal if it's gone */ if (!drm_dev_is_unplugged (&adev->ddev)) r =amdgpu_fence_wait_empty (ring);
@@ -611,6 +614,11 @@ void amdgpu_fence_driver_hw_init(struct amdgpu_device *adev)if (!ring || !ring->fence_drv.initialized)continue ; +if (!ring->no_scheduler) { +drm_sched_resubmit_jobs (&ring->sched); +drm_sched_start (&ring->sched, true); + } +/* enable the interrupt */ if (ring->fence_drv.irq_src) amdgpu_irq_get(adev, ring->fence_drv.irq_src,