diff options
Diffstat (limited to 'meta-v1000/recipes-kernel/linux/linux-yocto-4.14.71/1253-drm-amdkfd-Use-delayed_work-for-KFD-BO-eviction-work.patch')
-rw-r--r-- | meta-v1000/recipes-kernel/linux/linux-yocto-4.14.71/1253-drm-amdkfd-Use-delayed_work-for-KFD-BO-eviction-work.patch | 102 |
1 files changed, 0 insertions, 102 deletions
diff --git a/meta-v1000/recipes-kernel/linux/linux-yocto-4.14.71/1253-drm-amdkfd-Use-delayed_work-for-KFD-BO-eviction-work.patch b/meta-v1000/recipes-kernel/linux/linux-yocto-4.14.71/1253-drm-amdkfd-Use-delayed_work-for-KFD-BO-eviction-work.patch deleted file mode 100644 index c84b4c29..00000000 --- a/meta-v1000/recipes-kernel/linux/linux-yocto-4.14.71/1253-drm-amdkfd-Use-delayed_work-for-KFD-BO-eviction-work.patch +++ /dev/null @@ -1,102 +0,0 @@ -From 7dbbb95d360f2b2def16aa99347e549f5ec6e0c5 Mon Sep 17 00:00:00 2001 -From: Harish Kasiviswanathan <Harish.Kasiviswanathan@amd.com> -Date: Wed, 29 Mar 2017 11:50:12 -0400 -Subject: [PATCH 1253/4131] drm/amdkfd: Use delayed_work for KFD BO eviction - work - -This is necessary for implementing "prevent KFD process starvation due -to repeated evictions". - -Change-Id: I552452bb63fd40cf8f3ae217e6db075520bef833 -Signed-off-by: Harish Kasiviswanathan <Harish.Kasiviswanathan@amd.com> ---- - drivers/gpu/drm/amd/amdkfd/kfd_device.c | 14 ++++++++------ - drivers/gpu/drm/amd/amdkfd/kfd_priv.h | 2 +- - drivers/gpu/drm/amd/amdkfd/kfd_process.c | 4 ++-- - 3 files changed, 11 insertions(+), 9 deletions(-) - -diff --git a/drivers/gpu/drm/amd/amdkfd/kfd_device.c b/drivers/gpu/drm/amd/amdkfd/kfd_device.c -index 53720bd..9333433 100644 ---- a/drivers/gpu/drm/amd/amdkfd/kfd_device.c -+++ b/drivers/gpu/drm/amd/amdkfd/kfd_device.c -@@ -905,16 +905,16 @@ int kgd2kfd_schedule_evict_and_restore_process(struct mm_struct *mm, - if (!p) - return -ENODEV; - -- if (work_pending(&p->eviction_work.work)) { -+ if (delayed_work_pending(&p->eviction_work.dwork)) { - /* It is possible has TTM has lined up couple of BOs of the same - * process to be evicted. Check if the fence is same which -- * indicates that previous work item scheduled is not complted -+ * indicates that previous work item scheduled is not completed - */ - if (p->eviction_work.eviction_fence == fence) - goto out; - else { - WARN(1, "Starting new evict with previous evict is not completed\n"); -- if (cancel_work_sync(&p->eviction_work.work)) -+ if (cancel_delayed_work_sync(&p->eviction_work.dwork)) - fence_put(p->eviction_work.eviction_fence); - } - } -@@ -923,7 +923,7 @@ int kgd2kfd_schedule_evict_and_restore_process(struct mm_struct *mm, - * to kfd_evict_bo_worker - */ - p->eviction_work.eviction_fence = fence_get(fence); -- schedule_work(&p->eviction_work.work); -+ schedule_delayed_work(&p->eviction_work.dwork, 0); - out: - kfd_unref_process(p); - return 0; -@@ -934,9 +934,11 @@ void kfd_evict_bo_worker(struct work_struct *work) - int ret; - struct kfd_process *p; - struct kfd_eviction_work *eviction_work; -+ struct delayed_work *dwork; - -- eviction_work = container_of(work, struct kfd_eviction_work, -- work); -+ dwork = to_delayed_work(work); -+ eviction_work = container_of(dwork, struct kfd_eviction_work, -+ dwork); - - /* Process termination destroys this worker thread. So during the - * lifetime of this thread, kfd_process p will be valid -diff --git a/drivers/gpu/drm/amd/amdkfd/kfd_priv.h b/drivers/gpu/drm/amd/amdkfd/kfd_priv.h -index 992e5f1..48e6641 100644 ---- a/drivers/gpu/drm/amd/amdkfd/kfd_priv.h -+++ b/drivers/gpu/drm/amd/amdkfd/kfd_priv.h -@@ -575,7 +575,7 @@ struct qcm_process_device { - - /* KFD Memory Eviction */ - struct kfd_eviction_work { -- struct work_struct work; -+ struct delayed_work dwork; - struct fence *eviction_fence; - }; - -diff --git a/drivers/gpu/drm/amd/amdkfd/kfd_process.c b/drivers/gpu/drm/amd/amdkfd/kfd_process.c -index 85589c6..affa4184 100644 ---- a/drivers/gpu/drm/amd/amdkfd/kfd_process.c -+++ b/drivers/gpu/drm/amd/amdkfd/kfd_process.c -@@ -426,7 +426,7 @@ static void kfd_process_notifier_release(struct mmu_notifier *mn, - p = container_of(mn, struct kfd_process, mmu_notifier); - BUG_ON(p->mm != mm); - -- cancel_work_sync(&p->eviction_work.work); -+ cancel_delayed_work_sync(&p->eviction_work.dwork); - cancel_delayed_work_sync(&p->restore_work); - - mutex_lock(&kfd_processes_mutex); -@@ -597,7 +597,7 @@ static struct kfd_process *create_process(const struct task_struct *thread, - if (err) - goto err_init_cwsr; - -- INIT_WORK(&process->eviction_work.work, kfd_evict_bo_worker); -+ INIT_DELAYED_WORK(&process->eviction_work.dwork, kfd_evict_bo_worker); - INIT_DELAYED_WORK(&process->restore_work, kfd_restore_bo_worker); - - /* If PeerDirect interface was not detected try to detect it again --- -2.7.4 - |