diff options
Diffstat (limited to 'meta-v1000/recipes-kernel/linux/linux-yocto-4.14.71/1187-drm-amdkfd-Fix-unbound-PASID-issue-when-process-term.patch')
-rw-r--r-- | meta-v1000/recipes-kernel/linux/linux-yocto-4.14.71/1187-drm-amdkfd-Fix-unbound-PASID-issue-when-process-term.patch | 87 |
1 files changed, 0 insertions, 87 deletions
diff --git a/meta-v1000/recipes-kernel/linux/linux-yocto-4.14.71/1187-drm-amdkfd-Fix-unbound-PASID-issue-when-process-term.patch b/meta-v1000/recipes-kernel/linux/linux-yocto-4.14.71/1187-drm-amdkfd-Fix-unbound-PASID-issue-when-process-term.patch deleted file mode 100644 index 63c738c5..00000000 --- a/meta-v1000/recipes-kernel/linux/linux-yocto-4.14.71/1187-drm-amdkfd-Fix-unbound-PASID-issue-when-process-term.patch +++ /dev/null @@ -1,87 +0,0 @@ -From 1fe6ab731443d0b68183a44f09839ad7011588fb Mon Sep 17 00:00:00 2001 -From: Yong Zhao <yong.zhao@amd.com> -Date: Wed, 7 Sep 2016 19:44:21 -0400 -Subject: [PATCH 1187/4131] drm/amdkfd: Fix unbound PASID issue when process - terminates on APU - -When a process with a long wave running is terminated using Ctrl+C on -APU, we may hang the HW because when dequeueing the terminating queues -on HW scheduler, the ATC translation fails due to unbound PASID. We -should bring forward the dequeueing into IOMMU callback when PASID is -still bound. - -BUG: SWDEV-101676 - -Change-Id: I258551a449fb9e6acbff005e7f13f4cebd9966dd -Signed-off-by: Yong Zhao <yong.zhao@amd.com> ---- - drivers/gpu/drm/amd/amdkfd/kfd_priv.h | 7 +++++++ - drivers/gpu/drm/amd/amdkfd/kfd_process.c | 10 ++++++---- - drivers/gpu/drm/amd/amdkfd/kfd_process_queue_manager.c | 4 ++++ - 3 files changed, 17 insertions(+), 4 deletions(-) - -diff --git a/drivers/gpu/drm/amd/amdkfd/kfd_priv.h b/drivers/gpu/drm/amd/amdkfd/kfd_priv.h -index dff388e..1973935 100644 ---- a/drivers/gpu/drm/amd/amdkfd/kfd_priv.h -+++ b/drivers/gpu/drm/amd/amdkfd/kfd_priv.h -@@ -598,6 +598,13 @@ struct kfd_process_device { - * wavefronts on process termination - */ - bool reset_wavefronts; -+ -+ /* Flag used to tell the pdd has dequeued from the dqm. -+ * This is used to prevent dev->dqm->ops.process_termination() from -+ * being called twice when it is already called in IOMMU callback -+ * function. -+ */ -+ bool already_dequeued; - }; - - #define qpd_to_pdd(x) container_of(x, struct kfd_process_device, qpd) -diff --git a/drivers/gpu/drm/amd/amdkfd/kfd_process.c b/drivers/gpu/drm/amd/amdkfd/kfd_process.c -index d65dbc5..c98b5da 100644 ---- a/drivers/gpu/drm/amd/amdkfd/kfd_process.c -+++ b/drivers/gpu/drm/amd/amdkfd/kfd_process.c -@@ -726,6 +726,7 @@ struct kfd_process_device *kfd_create_process_device_data(struct kfd_dev *dev, - pdd->reset_wavefronts = false; - pdd->process = p; - pdd->bound = PDD_UNBOUND; -+ pdd->already_dequeued = false; - list_add(&pdd->per_device_list, &p->per_device_data); - - /* Init idr used for memory handle translation */ -@@ -869,10 +870,11 @@ void kfd_process_iommu_unbind_callback(struct kfd_dev *dev, unsigned int pasid) - down_write(&p->lock); - - pdd = kfd_get_process_device_data(dev, p); -- if (pdd->reset_wavefronts) { -- dbgdev_wave_reset_wavefronts(pdd->dev, p); -- pdd->reset_wavefronts = false; -- } -+ if (pdd) -+ /* For GPU relying on IOMMU, we need to dequeue here -+ * when PASID is still bound. -+ */ -+ kfd_process_dequeue_from_device(pdd); - - up_write(&p->lock); - -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 46d0d93..af90b0a 100644 ---- a/drivers/gpu/drm/amd/amdkfd/kfd_process_queue_manager.c -+++ b/drivers/gpu/drm/amd/amdkfd/kfd_process_queue_manager.c -@@ -76,7 +76,11 @@ void kfd_process_dequeue_from_device(struct kfd_process_device *pdd) - struct kfd_process *p = pdd->process; - int retval; - -+ if (pdd->already_dequeued) -+ return; -+ - retval = dev->dqm->ops.process_termination(dev->dqm, &pdd->qpd); -+ pdd->already_dequeued = true; - /* Checking pdd->reset_wavefronts may not be needed, because - * if reset_wavefronts was set to true before, which means unmapping - * failed, process_termination should fail too until we reset --- -2.7.4 - |