aboutsummaryrefslogtreecommitdiffstats
path: root/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/1299-drm-amdkfd-Fix-destroy-queue-failure-path.patch
diff options
context:
space:
mode:
Diffstat (limited to 'meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/1299-drm-amdkfd-Fix-destroy-queue-failure-path.patch')
-rw-r--r--meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/1299-drm-amdkfd-Fix-destroy-queue-failure-path.patch37
1 files changed, 37 insertions, 0 deletions
diff --git a/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/1299-drm-amdkfd-Fix-destroy-queue-failure-path.patch b/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/1299-drm-amdkfd-Fix-destroy-queue-failure-path.patch
new file mode 100644
index 00000000..eb677537
--- /dev/null
+++ b/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/1299-drm-amdkfd-Fix-destroy-queue-failure-path.patch
@@ -0,0 +1,37 @@
+From c15ec9a9f52449675aeb065880a9575f243995de Mon Sep 17 00:00:00 2001
+From: Harish Kasiviswanathan <Harish.Kasiviswanathan@amd.com>
+Date: Mon, 19 Jun 2017 14:41:42 -0400
+Subject: [PATCH 1299/4131] drm/amdkfd: Fix destroy queue failure path
+
+Even if unmmap queue times out during destroy, delete the queue
+completely. This ensures process_queue_manager and qcm_process_device
+queue list are consistent.
+
+BUG: SWDEV-110763
+
+Change-Id: I426c7f809021063d9aa445b1256861433e53b00c
+Signed-off-by: Harish Kasiviswanathan <Harish.Kasiviswanathan@amd.com>
+---
+ drivers/gpu/drm/amd/amdkfd/kfd_process_queue_manager.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/drivers/gpu/drm/amd/amdkfd/kfd_process_queue_manager.c b/drivers/gpu/drm/amd/amdkfd/kfd_process_queue_manager.c
+index 0f82684..5394866 100644
+--- a/drivers/gpu/drm/amd/amdkfd/kfd_process_queue_manager.c
++++ b/drivers/gpu/drm/amd/amdkfd/kfd_process_queue_manager.c
+@@ -335,11 +335,11 @@ int pqm_destroy_queue(struct process_queue_manager *pqm, unsigned int qid)
+ if (pqn->q) {
+ dqm = pqn->q->device->dqm;
+ kfree(pqn->q->properties.cu_mask);
++ pqn->q->properties.cu_mask = NULL;
+ retval = dqm->ops.destroy_queue(dqm, &pdd->qpd, pqn->q);
+ if (retval != 0) {
+ if (retval == -ETIME)
+ pdd->reset_wavefronts = true;
+- return retval;
+ }
+ uninit_queue(pqn->q);
+ }
+--
+2.7.4
+