aboutsummaryrefslogtreecommitdiffstats
path: root/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/1464-drm-amd-Update-kgd_kfd-interface-for-resuming-SDMA-q.patch
diff options
context:
space:
mode:
Diffstat (limited to 'meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/1464-drm-amd-Update-kgd_kfd-interface-for-resuming-SDMA-q.patch')
-rw-r--r--meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/1464-drm-amd-Update-kgd_kfd-interface-for-resuming-SDMA-q.patch265
1 files changed, 0 insertions, 265 deletions
diff --git a/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/1464-drm-amd-Update-kgd_kfd-interface-for-resuming-SDMA-q.patch b/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/1464-drm-amd-Update-kgd_kfd-interface-for-resuming-SDMA-q.patch
deleted file mode 100644
index f1875446..00000000
--- a/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/1464-drm-amd-Update-kgd_kfd-interface-for-resuming-SDMA-q.patch
+++ /dev/null
@@ -1,265 +0,0 @@
-From 628e974e6cab609fb32dcf10eb953ea70a8ff0d9 Mon Sep 17 00:00:00 2001
-From: Felix Kuehling <Felix.Kuehling@amd.com>
-Date: Thu, 30 Jun 2016 00:10:44 -0400
-Subject: [PATCH 1464/4131] drm/amd: Update kgd_kfd interface for resuming SDMA
- queues
-
-Add wptr and mm parameters to hqd_sdma_load and pass these parameters
-from device_queue_manager through the mqd_manager. Remove the unused
-page_table_base parameter from hqd_load while working on the interface.
-
-SDMA doesn't support polling while the engine believes it's idle. The
-driver must update the wptr. The new parameters will be used for looking
-up the updated value from the specified mm when SDMA queues are resumed
-after being disabled.
-
-Change-Id: Iff5e36596246b95ef36f579c620601c7122e3813
-Signed-off-by: Felix Kuehling <Felix.Kuehling@amd.com>
----
- drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gfx_v7.c | 12 ++++++------
- drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gfx_v8.c | 12 ++++++------
- drivers/gpu/drm/amd/amdkfd/kfd_device_queue_manager.c | 10 +++++-----
- drivers/gpu/drm/amd/amdkfd/kfd_kernel_queue.c | 2 +-
- drivers/gpu/drm/amd/amdkfd/kfd_mqd_manager.h | 3 +--
- drivers/gpu/drm/amd/amdkfd/kfd_mqd_manager_cik.c | 10 +++++-----
- drivers/gpu/drm/amd/amdkfd/kfd_mqd_manager_vi.c | 8 ++++----
- drivers/gpu/drm/amd/include/kgd_kfd_interface.h | 9 +++++----
- 8 files changed, 33 insertions(+), 33 deletions(-)
-
-diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gfx_v7.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gfx_v7.c
-index cec4d67..a67c20a 100644
---- a/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gfx_v7.c
-+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gfx_v7.c
-@@ -104,12 +104,12 @@ static int kgd_set_pasid_vmid_mapping(struct kgd_dev *kgd, unsigned int pasid, u
- static int kgd_init_pipeline(struct kgd_dev *kgd, uint32_t pipe_id, uint32_t hpd_size, uint64_t hpd_gpu_addr);
- static int kgd_init_interrupts(struct kgd_dev *kgd, uint32_t pipe_id);
- static int kgd_hqd_load(struct kgd_dev *kgd, void *mqd, uint32_t pipe_id,
-- uint32_t queue_id, uint32_t __user *wptr,
-- uint32_t page_table_base);
-+ uint32_t queue_id, uint32_t __user *wptr);
- static int kgd_hqd_dump(struct kgd_dev *kgd,
- uint32_t pipe_id, uint32_t queue_id,
- uint32_t (**dump)[2], uint32_t *n_regs);
--static int kgd_hqd_sdma_load(struct kgd_dev *kgd, void *mqd);
-+static int kgd_hqd_sdma_load(struct kgd_dev *kgd, void *mqd,
-+ uint32_t __user *wptr, struct mm_struct *mm);
- static int kgd_hqd_sdma_dump(struct kgd_dev *kgd,
- uint32_t engine_id, uint32_t queue_id,
- uint32_t (**dump)[2], uint32_t *n_regs);
-@@ -351,8 +351,7 @@ static inline struct cik_sdma_rlc_registers *get_sdma_mqd(void *mqd)
- }
-
- static int kgd_hqd_load(struct kgd_dev *kgd, void *mqd, uint32_t pipe_id,
-- uint32_t queue_id, uint32_t __user *wptr,
-- uint32_t page_table_base)
-+ uint32_t queue_id, uint32_t __user *wptr)
- {
- struct amdgpu_device *adev = get_amdgpu_device(kgd);
- struct cik_mqd *m;
-@@ -461,7 +460,8 @@ static int kgd_hqd_dump(struct kgd_dev *kgd,
- return 0;
- }
-
--static int kgd_hqd_sdma_load(struct kgd_dev *kgd, void *mqd)
-+static int kgd_hqd_sdma_load(struct kgd_dev *kgd, void *mqd,
-+ uint32_t __user *wptr, struct mm_struct *mm)
- {
- struct amdgpu_device *adev = get_amdgpu_device(kgd);
- struct cik_sdma_rlc_registers *m;
-diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gfx_v8.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gfx_v8.c
-index 473b924..7d71727 100644
---- a/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gfx_v8.c
-+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gfx_v8.c
-@@ -81,12 +81,12 @@ static int kgd_init_pipeline(struct kgd_dev *kgd, uint32_t pipe_id,
- uint32_t hpd_size, uint64_t hpd_gpu_addr);
- static int kgd_init_interrupts(struct kgd_dev *kgd, uint32_t pipe_id);
- static int kgd_hqd_load(struct kgd_dev *kgd, void *mqd, uint32_t pipe_id,
-- uint32_t queue_id, uint32_t __user *wptr,
-- uint32_t page_table_base);
-+ uint32_t queue_id, uint32_t __user *wptr);
- static int kgd_hqd_dump(struct kgd_dev *kgd,
- uint32_t pipe_id, uint32_t queue_id,
- uint32_t (**dump)[2], uint32_t *n_regs);
--static int kgd_hqd_sdma_load(struct kgd_dev *kgd, void *mqd);
-+static int kgd_hqd_sdma_load(struct kgd_dev *kgd, void *mqd,
-+ uint32_t __user *wptr, struct mm_struct *mm);
- static int kgd_hqd_sdma_dump(struct kgd_dev *kgd,
- uint32_t engine_id, uint32_t queue_id,
- uint32_t (**dump)[2], uint32_t *n_regs);
-@@ -346,8 +346,7 @@ static inline struct vi_sdma_mqd *get_sdma_mqd(void *mqd)
- }
-
- static int kgd_hqd_load(struct kgd_dev *kgd, void *mqd, uint32_t pipe_id,
-- uint32_t queue_id, uint32_t __user *wptr,
-- uint32_t page_table_base)
-+ uint32_t queue_id, uint32_t __user *wptr)
- {
- struct amdgpu_device *adev = get_amdgpu_device(kgd);
- struct vi_mqd *m;
-@@ -459,7 +458,8 @@ static int kgd_hqd_dump(struct kgd_dev *kgd,
- return 0;
- }
-
--static int kgd_hqd_sdma_load(struct kgd_dev *kgd, void *mqd)
-+static int kgd_hqd_sdma_load(struct kgd_dev *kgd, void *mqd,
-+ uint32_t __user *wptr, struct mm_struct *mm)
- {
- struct amdgpu_device *adev = get_amdgpu_device(kgd);
- struct vi_sdma_mqd *m;
-diff --git a/drivers/gpu/drm/amd/amdkfd/kfd_device_queue_manager.c b/drivers/gpu/drm/amd/amdkfd/kfd_device_queue_manager.c
-index 41a184c..9fbbeee 100644
---- a/drivers/gpu/drm/amd/amdkfd/kfd_device_queue_manager.c
-+++ b/drivers/gpu/drm/amd/amdkfd/kfd_device_queue_manager.c
-@@ -304,7 +304,7 @@ static int create_compute_queue_nocpsch(struct device_queue_manager *dqm,
-
- retval = mqd->load_mqd(mqd, q->mqd, q->pipe,
- q->queue, (uint32_t __user *) q->properties.write_ptr,
-- qpd->page_table_base);
-+ q->process->mm);
- if (retval != 0) {
- deallocate_hqd(dqm, q);
- mqd->uninit_mqd(mqd, q->mqd, q->mqd_mem_obj);
-@@ -423,7 +423,8 @@ static int update_queue(struct device_queue_manager *dqm, struct queue *q)
- if (q->properties.is_active)
- retval = mqd->load_mqd(mqd, q->mqd, q->pipe,
- q->queue,
-- (uint32_t __user *)q->properties.write_ptr, 0);
-+ (uint32_t __user *)q->properties.write_ptr,
-+ q->process->mm);
- else if (prev_active)
- retval = mqd->destroy_mqd(mqd, q->mqd,
- KFD_PREEMPT_TYPE_WAVEFRONT_DRAIN,
-@@ -551,7 +552,7 @@ int process_restore_queues(struct device_queue_manager *dqm,
- q->pipe,
- q->queue,
- (uint32_t __user *)q->properties.write_ptr,
-- 0);
-+ q->process->mm);
- dqm->queue_count++;
- }
- }
-@@ -777,8 +778,7 @@ static int create_sdma_queue_nocpsch(struct device_queue_manager *dqm,
- return retval;
- }
-
-- retval = mqd->load_mqd(mqd, q->mqd, 0,
-- 0, NULL, 0);
-+ retval = mqd->load_mqd(mqd, q->mqd, 0, 0, NULL, NULL);
- if (retval != 0) {
- deallocate_sdma_queue(dqm, q->sdma_id);
- mqd->uninit_mqd(mqd, q->mqd, q->mqd_mem_obj);
-diff --git a/drivers/gpu/drm/amd/amdkfd/kfd_kernel_queue.c b/drivers/gpu/drm/amd/amdkfd/kfd_kernel_queue.c
-index fc4d8b2..90a26fa 100644
---- a/drivers/gpu/drm/amd/amdkfd/kfd_kernel_queue.c
-+++ b/drivers/gpu/drm/amd/amdkfd/kfd_kernel_queue.c
-@@ -143,7 +143,7 @@ static bool initialize(struct kernel_queue *kq, struct kfd_dev *dev,
- kq->queue->pipe = KFD_CIK_HIQ_PIPE;
- kq->queue->queue = KFD_CIK_HIQ_QUEUE;
- kq->mqd->load_mqd(kq->mqd, kq->queue->mqd, kq->queue->pipe,
-- kq->queue->queue, NULL, 0);
-+ kq->queue->queue, NULL, NULL);
- } else {
- /* allocate fence for DIQ */
-
-diff --git a/drivers/gpu/drm/amd/amdkfd/kfd_mqd_manager.h b/drivers/gpu/drm/amd/amdkfd/kfd_mqd_manager.h
-index 574684f..4be3267 100644
---- a/drivers/gpu/drm/amd/amdkfd/kfd_mqd_manager.h
-+++ b/drivers/gpu/drm/amd/amdkfd/kfd_mqd_manager.h
-@@ -67,8 +67,7 @@ struct mqd_manager {
-
- int (*load_mqd)(struct mqd_manager *mm, void *mqd,
- uint32_t pipe_id, uint32_t queue_id,
-- uint32_t __user *wptr,
-- uint32_t page_table_base);
-+ uint32_t __user *wptr, struct mm_struct *mms);
-
- int (*update_mqd)(struct mqd_manager *mm, void *mqd,
- struct queue_properties *q);
-diff --git a/drivers/gpu/drm/amd/amdkfd/kfd_mqd_manager_cik.c b/drivers/gpu/drm/amd/amdkfd/kfd_mqd_manager_cik.c
-index e565bee..1badce1 100644
---- a/drivers/gpu/drm/amd/amdkfd/kfd_mqd_manager_cik.c
-+++ b/drivers/gpu/drm/amd/amdkfd/kfd_mqd_manager_cik.c
-@@ -208,18 +208,18 @@ static void uninit_mqd_sdma(struct mqd_manager *mm, void *mqd,
- }
-
- static int load_mqd(struct mqd_manager *mm, void *mqd, uint32_t pipe_id,
-- uint32_t queue_id, uint32_t __user *wptr,
-- uint32_t page_table_base)
-+ uint32_t queue_id, uint32_t __user *wptr,
-+ struct mm_struct *mms)
- {
- return mm->dev->kfd2kgd->hqd_load
-- (mm->dev->kgd, mqd, pipe_id, queue_id, wptr, page_table_base);
-+ (mm->dev->kgd, mqd, pipe_id, queue_id, wptr);
- }
-
- static int load_mqd_sdma(struct mqd_manager *mm, void *mqd,
- uint32_t pipe_id, uint32_t queue_id,
-- uint32_t __user *wptr, uint32_t page_table_base)
-+ uint32_t __user *wptr, struct mm_struct *mms)
- {
-- return mm->dev->kfd2kgd->hqd_sdma_load(mm->dev->kgd, mqd);
-+ return mm->dev->kfd2kgd->hqd_sdma_load(mm->dev->kgd, mqd, wptr, mms);
- }
-
- static int __update_mqd(struct mqd_manager *mm, void *mqd,
-diff --git a/drivers/gpu/drm/amd/amdkfd/kfd_mqd_manager_vi.c b/drivers/gpu/drm/amd/amdkfd/kfd_mqd_manager_vi.c
-index 25c1269..d78964c 100644
---- a/drivers/gpu/drm/amd/amdkfd/kfd_mqd_manager_vi.c
-+++ b/drivers/gpu/drm/amd/amdkfd/kfd_mqd_manager_vi.c
-@@ -171,10 +171,10 @@ static int init_mqd(struct mqd_manager *mm, void **mqd,
-
- static int load_mqd(struct mqd_manager *mm, void *mqd,
- uint32_t pipe_id, uint32_t queue_id,
-- uint32_t __user *wptr, uint32_t page_table_base)
-+ uint32_t __user *wptr, struct mm_struct *mms)
- {
- return mm->dev->kfd2kgd->hqd_load
-- (mm->dev->kgd, mqd, pipe_id, queue_id, wptr, page_table_base);
-+ (mm->dev->kgd, mqd, pipe_id, queue_id, wptr);
- }
-
- static int __update_mqd(struct mqd_manager *mm, void *mqd,
-@@ -362,9 +362,9 @@ static void uninit_mqd_sdma(struct mqd_manager *mm, void *mqd,
-
- static int load_mqd_sdma(struct mqd_manager *mm, void *mqd,
- uint32_t pipe_id, uint32_t queue_id,
-- uint32_t __user *wptr, uint32_t page_table_base)
-+ uint32_t __user *wptr, struct mm_struct *mms)
- {
-- return mm->dev->kfd2kgd->hqd_sdma_load(mm->dev->kgd, mqd);
-+ return mm->dev->kfd2kgd->hqd_sdma_load(mm->dev->kgd, mqd, wptr, mms);
- }
-
- static int update_mqd_sdma(struct mqd_manager *mm, void *mqd,
-diff --git a/drivers/gpu/drm/amd/include/kgd_kfd_interface.h b/drivers/gpu/drm/amd/include/kgd_kfd_interface.h
-index b981589..3db537b 100644
---- a/drivers/gpu/drm/amd/include/kgd_kfd_interface.h
-+++ b/drivers/gpu/drm/amd/include/kgd_kfd_interface.h
-@@ -170,7 +170,8 @@ struct kgd2kfd_shared_resources {
- * sceduling mode.
- *
- * @hqd_sdma_load: Loads the SDMA mqd structure to a H/W SDMA hqd slot.
-- * used only for no HWS mode.
-+ * used only for no HWS mode. If mm is passed in, its mmap_sem must be
-+ * read-locked.
- *
- * @hqd_dump: Dumps CPC HQD registers to an array of address-value pairs.
- * Array is allocated with kmalloc, needs to be freed with kfree by caller.
-@@ -247,10 +248,10 @@ struct kfd2kgd_calls {
-
-
- int (*hqd_load)(struct kgd_dev *kgd, void *mqd, uint32_t pipe_id,
-- uint32_t queue_id, uint32_t __user *wptr,
-- uint32_t page_table_base);
-+ uint32_t queue_id, uint32_t __user *wptr);
-
-- int (*hqd_sdma_load)(struct kgd_dev *kgd, void *mqd);
-+ int (*hqd_sdma_load)(struct kgd_dev *kgd, void *mqd,
-+ uint32_t __user *wptr, struct mm_struct *mm);
-
- int (*hqd_dump)(struct kgd_dev *kgd,
- uint32_t pipe_id, uint32_t queue_id,
---
-2.7.4
-