aboutsummaryrefslogtreecommitdiffstats
path: root/common/recipes-kernel/linux/linux-yocto-4.14.71/4282-drm-amdkfd-remove-unused-parameter-from-quiesce_mm-r.patch
diff options
context:
space:
mode:
Diffstat (limited to 'common/recipes-kernel/linux/linux-yocto-4.14.71/4282-drm-amdkfd-remove-unused-parameter-from-quiesce_mm-r.patch')
-rw-r--r--common/recipes-kernel/linux/linux-yocto-4.14.71/4282-drm-amdkfd-remove-unused-parameter-from-quiesce_mm-r.patch157
1 files changed, 157 insertions, 0 deletions
diff --git a/common/recipes-kernel/linux/linux-yocto-4.14.71/4282-drm-amdkfd-remove-unused-parameter-from-quiesce_mm-r.patch b/common/recipes-kernel/linux/linux-yocto-4.14.71/4282-drm-amdkfd-remove-unused-parameter-from-quiesce_mm-r.patch
new file mode 100644
index 00000000..2acea1bc
--- /dev/null
+++ b/common/recipes-kernel/linux/linux-yocto-4.14.71/4282-drm-amdkfd-remove-unused-parameter-from-quiesce_mm-r.patch
@@ -0,0 +1,157 @@
+From ca5e5df1c09f70fd8998caaf1c9155a5c1a42361 Mon Sep 17 00:00:00 2001
+From: Felix Kuehling <Felix.Kuehling@amd.com>
+Date: Mon, 23 Apr 2018 23:22:36 -0400
+Subject: [PATCH 4282/5725] drm/amdkfd: remove unused parameter from
+ quiesce_mm/resume_mm
+
+Change-Id: Ib17d9f51e8fd154460cee8a3ee71fc88edaeef80
+Signed-off-by: Felix Kuehling <Felix.Kuehling@amd.com>
+---
+ drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gpuvm.c | 4 ++--
+ drivers/gpu/drm/amd/amdkfd/kfd_device.c | 30 +++++-------------------
+ drivers/gpu/drm/amd/amdkfd/kfd_priv.h | 9 ++++---
+ drivers/gpu/drm/amd/include/kgd_kfd_interface.h | 4 ++--
+ 4 files changed, 14 insertions(+), 33 deletions(-)
+
+diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gpuvm.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gpuvm.c
+index 11165a7..dfa909f 100644
+--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gpuvm.c
++++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gpuvm.c
+@@ -1936,7 +1936,7 @@ int amdgpu_amdkfd_evict_userptr(struct kgd_mem *mem,
+ evicted_bos = atomic_inc_return(&process_info->evicted_bos);
+ if (evicted_bos == 1) {
+ /* First eviction, stop the queues */
+- r = kgd2kfd->quiesce_mm(NULL, mm);
++ r = kgd2kfd->quiesce_mm(mm);
+ if (r)
+ pr_err("Failed to quiesce KFD\n");
+ schedule_delayed_work(&process_info->work, 1);
+@@ -2226,7 +2226,7 @@ static void amdgpu_amdkfd_restore_userptr_worker(struct work_struct *work)
+ evicted_bos)
+ goto unlock_out;
+ evicted_bos = 0;
+- if (kgd2kfd->resume_mm(NULL, mm)) {
++ if (kgd2kfd->resume_mm(mm)) {
+ pr_err("%s: Failed to resume KFD\n", __func__);
+ /* No recovery from this failure. Probably the CP is
+ * hanging. No point trying again.
+diff --git a/drivers/gpu/drm/amd/amdkfd/kfd_device.c b/drivers/gpu/drm/amd/amdkfd/kfd_device.c
+index dc5017ff..5b22ae0 100644
+--- a/drivers/gpu/drm/amd/amdkfd/kfd_device.c
++++ b/drivers/gpu/drm/amd/amdkfd/kfd_device.c
+@@ -678,10 +678,9 @@ void kgd2kfd_interrupt(struct kfd_dev *kfd, const void *ih_ring_entry)
+ spin_unlock(&kfd->interrupt_lock);
+ }
+
+-int kgd2kfd_quiesce_mm(struct kfd_dev *kfd, struct mm_struct *mm)
++int kgd2kfd_quiesce_mm(struct mm_struct *mm)
+ {
+ struct kfd_process *p;
+- struct kfd_process_device *pdd;
+ int r;
+
+ /* Because we are called from arbitrary context (workqueue) as opposed
+@@ -690,26 +689,17 @@ int kgd2kfd_quiesce_mm(struct kfd_dev *kfd, struct mm_struct *mm)
+ */
+ p = kfd_lookup_process_by_mm(mm);
+ if (!p)
+- return -ENODEV;
++ return -ESRCH;
+
+- if (kfd) {
+- r = -ENODEV;
+- pdd = kfd_get_process_device_data(kfd, p);
+- if (pdd)
+- r = kfd->dqm->ops.evict_process_queues(kfd->dqm,
+- &pdd->qpd);
+- } else {
+- r = kfd_process_evict_queues(p);
+- }
++ r = kfd_process_evict_queues(p);
+
+ kfd_unref_process(p);
+ return r;
+ }
+
+-int kgd2kfd_resume_mm(struct kfd_dev *kfd, struct mm_struct *mm)
++int kgd2kfd_resume_mm(struct mm_struct *mm)
+ {
+ struct kfd_process *p;
+- struct kfd_process_device *pdd;
+ int r;
+
+ /* Because we are called from arbitrary context (workqueue) as opposed
+@@ -718,17 +708,9 @@ int kgd2kfd_resume_mm(struct kfd_dev *kfd, struct mm_struct *mm)
+ */
+ p = kfd_lookup_process_by_mm(mm);
+ if (!p)
+- return -ENODEV;
++ return -ESRCH;
+
+- if (kfd) {
+- r = -ENODEV;
+- pdd = kfd_get_process_device_data(kfd, p);
+- if (pdd)
+- r = kfd->dqm->ops.restore_process_queues(kfd->dqm,
+- &pdd->qpd);
+- } else {
+- r = kfd_process_restore_queues(p);
+- }
++ r = kfd_process_restore_queues(p);
+
+ kfd_unref_process(p);
+ return r;
+diff --git a/drivers/gpu/drm/amd/amdkfd/kfd_priv.h b/drivers/gpu/drm/amd/amdkfd/kfd_priv.h
+index 25e8e5a..e810a15 100644
+--- a/drivers/gpu/drm/amd/amdkfd/kfd_priv.h
++++ b/drivers/gpu/drm/amd/amdkfd/kfd_priv.h
+@@ -630,11 +630,10 @@ struct qcm_process_device {
+ /* Approx. time before evicting the process again */
+ #define PROCESS_ACTIVE_TIME_MS 10
+
++int kgd2kfd_quiesce_mm(struct mm_struct *mm);
++int kgd2kfd_resume_mm(struct mm_struct *mm);
+ int kgd2kfd_schedule_evict_and_restore_process(struct mm_struct *mm,
+ struct dma_fence *fence);
+-int kfd_process_evict_queues(struct kfd_process *p);
+-int kfd_process_restore_queues(struct kfd_process *p);
+-
+
+ /* 8 byte handle containing GPU ID in the most significant 4 bytes and
+ * idr_handle in the least significant 4 bytes
+@@ -804,6 +803,8 @@ struct kfd_process *kfd_get_process(const struct task_struct *task);
+ struct kfd_process *kfd_lookup_process_by_pasid(unsigned int pasid);
+ struct kfd_process *kfd_lookup_process_by_mm(const struct mm_struct *mm);
+ void kfd_unref_process(struct kfd_process *p);
++int kfd_process_evict_queues(struct kfd_process *p);
++int kfd_process_restore_queues(struct kfd_process *p);
+ void kfd_suspend_all_processes(void);
+ int kfd_resume_all_processes(void);
+
+@@ -971,8 +972,6 @@ int pqm_get_wave_state(struct process_queue_manager *pqm,
+ void __user *ctl_stack,
+ u32 *ctl_stack_used_size,
+ u32 *save_area_used_size);
+-int kgd2kfd_quiesce_mm(struct kfd_dev *kfd, struct mm_struct *mm);
+-int kgd2kfd_resume_mm(struct kfd_dev *kfd, struct mm_struct *mm);
+
+ int amdkfd_fence_wait_timeout(unsigned int *fence_addr,
+ unsigned int fence_value,
+diff --git a/drivers/gpu/drm/amd/include/kgd_kfd_interface.h b/drivers/gpu/drm/amd/include/kgd_kfd_interface.h
+index 5060052..dd0b3c7 100644
+--- a/drivers/gpu/drm/amd/include/kgd_kfd_interface.h
++++ b/drivers/gpu/drm/amd/include/kgd_kfd_interface.h
+@@ -443,8 +443,8 @@ struct kgd2kfd_calls {
+ void (*interrupt)(struct kfd_dev *kfd, const void *ih_ring_entry);
+ void (*suspend)(struct kfd_dev *kfd);
+ int (*resume)(struct kfd_dev *kfd);
+- int (*quiesce_mm)(struct kfd_dev *kfd, struct mm_struct *mm);
+- int (*resume_mm)(struct kfd_dev *kfd, struct mm_struct *mm);
++ int (*quiesce_mm)(struct mm_struct *mm);
++ int (*resume_mm)(struct mm_struct *mm);
+ int (*schedule_evict_and_restore_process)(struct mm_struct *mm,
+ struct dma_fence *fence);
+ int (*pre_reset)(struct kfd_dev *kfd);
+--
+2.7.4
+