A few MQD manager functions are duplicated for all versions of
MQD manager. Remove this duplication by moving the common
functions into kfd_mqd_manager.c file.

Signed-off-by: Mukul Joshi <mukul.jo...@amd.com>
---
v1->v2:
- Add "kfd_" prefix to functions moved to kfd_mqd_manager.c.
- Also, suffix "_cp" to function names shared by CP, HIQ and DIQ.

 drivers/gpu/drm/amd/amdkfd/kfd_mqd_manager.c  | 63 +++++++++++++
 drivers/gpu/drm/amd/amdkfd/kfd_mqd_manager.h  | 27 ++++++
 .../gpu/drm/amd/amdkfd/kfd_mqd_manager_cik.c  | 76 +++------------
 .../gpu/drm/amd/amdkfd/kfd_mqd_manager_v10.c  | 85 +++--------------
 .../gpu/drm/amd/amdkfd/kfd_mqd_manager_v9.c   | 92 +++----------------
 .../gpu/drm/amd/amdkfd/kfd_mqd_manager_vi.c   | 75 +++------------
 6 files changed, 136 insertions(+), 282 deletions(-)

diff --git a/drivers/gpu/drm/amd/amdkfd/kfd_mqd_manager.c 
b/drivers/gpu/drm/amd/amdkfd/kfd_mqd_manager.c
index e2825ad4d699..dd99f23e24f1 100644
--- a/drivers/gpu/drm/amd/amdkfd/kfd_mqd_manager.c
+++ b/drivers/gpu/drm/amd/amdkfd/kfd_mqd_manager.c
@@ -173,3 +173,66 @@ void mqd_symmetrically_map_cu_mask(struct mqd_manager *mm,
                }
        }
 }
+
+int kfd_hiq_load_mqd_kiq(struct mqd_manager *mm, void *mqd,
+                    uint32_t pipe_id, uint32_t queue_id,
+                    struct queue_properties *p, struct mm_struct *mms)
+{
+       return mm->dev->kfd2kgd->hiq_mqd_load(mm->dev->adev, mqd, pipe_id,
+                                             queue_id, p->doorbell_off);
+}
+
+int kfd_destroy_mqd_cp(struct mqd_manager *mm, void *mqd,
+               enum kfd_preempt_type type, unsigned int timeout,
+               uint32_t pipe_id,uint32_t queue_id)
+{
+       return mm->dev->kfd2kgd->hqd_destroy(mm->dev->adev, mqd, type, timeout,
+                                               pipe_id, queue_id);
+}
+
+void kfd_free_mqd_cp(struct mqd_manager *mm, void *mqd,
+             struct kfd_mem_obj *mqd_mem_obj)
+{
+       if (mqd_mem_obj->gtt_mem) {
+               amdgpu_amdkfd_free_gtt_mem(mm->dev->adev, mqd_mem_obj->gtt_mem);
+               kfree(mqd_mem_obj);
+       } else {
+               kfd_gtt_sa_free(mm->dev, mqd_mem_obj);
+       }
+}
+
+bool kfd_is_occupied_cp(struct mqd_manager *mm, void *mqd,
+                uint64_t queue_address, uint32_t pipe_id,
+                uint32_t queue_id)
+{
+       return mm->dev->kfd2kgd->hqd_is_occupied(mm->dev->adev, queue_address,
+                                               pipe_id, queue_id);
+}
+
+int kfd_load_mqd_sdma(struct mqd_manager *mm, void *mqd,
+                 uint32_t pipe_id, uint32_t queue_id,
+                 struct queue_properties *p, struct mm_struct *mms)
+{
+       return mm->dev->kfd2kgd->hqd_sdma_load(mm->dev->adev, mqd,
+                                               (uint32_t __user *)p->write_ptr,
+                                               mms);
+}
+
+/*
+ * preempt type here is ignored because there is only one way
+ * to preempt sdma queue
+ */
+int kfd_destroy_mqd_sdma(struct mqd_manager *mm, void *mqd,
+                    enum kfd_preempt_type type,
+                    unsigned int timeout, uint32_t pipe_id,
+                    uint32_t queue_id)
+{
+       return mm->dev->kfd2kgd->hqd_sdma_destroy(mm->dev->adev, mqd, timeout);
+}
+
+bool kfd_is_occupied_sdma(struct mqd_manager *mm, void *mqd,
+                     uint64_t queue_address, uint32_t pipe_id,
+                     uint32_t queue_id)
+{
+       return mm->dev->kfd2kgd->hqd_sdma_is_occupied(mm->dev->adev, mqd);
+}
diff --git a/drivers/gpu/drm/amd/amdkfd/kfd_mqd_manager.h 
b/drivers/gpu/drm/amd/amdkfd/kfd_mqd_manager.h
index 23486a23df84..21851110f9eb 100644
--- a/drivers/gpu/drm/amd/amdkfd/kfd_mqd_manager.h
+++ b/drivers/gpu/drm/amd/amdkfd/kfd_mqd_manager.h
@@ -136,4 +136,31 @@ void mqd_symmetrically_map_cu_mask(struct mqd_manager *mm,
                const uint32_t *cu_mask, uint32_t cu_mask_count,
                uint32_t *se_mask);
 
+int kfd_hiq_load_mqd_kiq(struct mqd_manager *mm, void *mqd,
+               uint32_t pipe_id, uint32_t queue_id,
+               struct queue_properties *p, struct mm_struct *mms);
+
+int kfd_destroy_mqd_cp(struct mqd_manager *mm, void *mqd,
+               enum kfd_preempt_type type, unsigned int timeout,
+               uint32_t pipe_id,uint32_t queue_id);
+
+void kfd_free_mqd_cp(struct mqd_manager *mm, void *mqd,
+               struct kfd_mem_obj *mqd_mem_obj);
+
+bool kfd_is_occupied_cp(struct mqd_manager *mm, void *mqd,
+                uint64_t queue_address, uint32_t pipe_id,
+                uint32_t queue_id);
+
+int kfd_load_mqd_sdma(struct mqd_manager *mm, void *mqd,
+               uint32_t pipe_id, uint32_t queue_id,
+               struct queue_properties *p, struct mm_struct *mms);
+
+int kfd_destroy_mqd_sdma(struct mqd_manager *mm, void *mqd,
+               enum kfd_preempt_type type,unsigned int timeout,
+               uint32_t pipe_id, uint32_t queue_id);
+
+bool kfd_is_occupied_sdma(struct mqd_manager *mm, void *mqd,
+               uint64_t queue_address, uint32_t pipe_id,
+               uint32_t queue_id);
+
 #endif /* KFD_MQD_MANAGER_H_ */
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 96e3303fa27c..06aae5df6a37 100644
--- a/drivers/gpu/drm/amd/amdkfd/kfd_mqd_manager_cik.c
+++ b/drivers/gpu/drm/amd/amdkfd/kfd_mqd_manager_cik.c
@@ -156,13 +156,6 @@ static void init_mqd_sdma(struct mqd_manager *mm, void 
**mqd,
        mm->update_mqd(mm, m, q, NULL);
 }
 
-static void free_mqd(struct mqd_manager *mm, void *mqd,
-                       struct kfd_mem_obj *mqd_mem_obj)
-{
-       kfd_gtt_sa_free(mm->dev, mqd_mem_obj);
-}
-
-
 static int load_mqd(struct mqd_manager *mm, void *mqd, uint32_t pipe_id,
                    uint32_t queue_id, struct queue_properties *p,
                    struct mm_struct *mms)
@@ -176,15 +169,6 @@ static int load_mqd(struct mqd_manager *mm, void *mqd, 
uint32_t pipe_id,
                                          wptr_shift, wptr_mask, mms);
 }
 
-static int load_mqd_sdma(struct mqd_manager *mm, void *mqd,
-                        uint32_t pipe_id, uint32_t queue_id,
-                        struct queue_properties *p, struct mm_struct *mms)
-{
-       return mm->dev->kfd2kgd->hqd_sdma_load(mm->dev->adev, mqd,
-                                              (uint32_t __user *)p->write_ptr,
-                                              mms);
-}
-
 static void __update_mqd(struct mqd_manager *mm, void *mqd,
                        struct queue_properties *q, struct mqd_update_info 
*minfo,
                        unsigned int atc_bit)
@@ -271,15 +255,6 @@ static void update_mqd_sdma(struct mqd_manager *mm, void 
*mqd,
        q->is_active = QUEUE_IS_ACTIVE(*q);
 }
 
-static int destroy_mqd(struct mqd_manager *mm, void *mqd,
-                       enum kfd_preempt_type type,
-                       unsigned int timeout, uint32_t pipe_id,
-                       uint32_t queue_id)
-{
-       return mm->dev->kfd2kgd->hqd_destroy(mm->dev->adev, mqd, type, timeout,
-                                       pipe_id, queue_id);
-}
-
 static void checkpoint_mqd(struct mqd_manager *mm, void *mqd, void *mqd_dst, 
void *ctl_stack_dst)
 {
        struct cik_mqd *m;
@@ -351,35 +326,6 @@ static void restore_mqd_sdma(struct mqd_manager *mm, void 
**mqd,
        qp->is_active = 0;
 }
 
-/*
- * preempt type here is ignored because there is only one way
- * to preempt sdma queue
- */
-static int destroy_mqd_sdma(struct mqd_manager *mm, void *mqd,
-                               enum kfd_preempt_type type,
-                               unsigned int timeout, uint32_t pipe_id,
-                               uint32_t queue_id)
-{
-       return mm->dev->kfd2kgd->hqd_sdma_destroy(mm->dev->adev, mqd, timeout);
-}
-
-static bool is_occupied(struct mqd_manager *mm, void *mqd,
-                       uint64_t queue_address, uint32_t pipe_id,
-                       uint32_t queue_id)
-{
-
-       return mm->dev->kfd2kgd->hqd_is_occupied(mm->dev->adev, queue_address,
-                                       pipe_id, queue_id);
-
-}
-
-static bool is_occupied_sdma(struct mqd_manager *mm, void *mqd,
-                       uint64_t queue_address, uint32_t pipe_id,
-                       uint32_t queue_id)
-{
-       return mm->dev->kfd2kgd->hqd_sdma_is_occupied(mm->dev->adev, mqd);
-}
-
 /*
  * HIQ MQD Implementation, concrete implementation for HIQ MQD implementation.
  * The HIQ queue in Kaveri is using the same MQD structure as all the user mode
@@ -460,11 +406,11 @@ struct mqd_manager *mqd_manager_init_cik(enum 
KFD_MQD_TYPE type,
        case KFD_MQD_TYPE_CP:
                mqd->allocate_mqd = allocate_mqd;
                mqd->init_mqd = init_mqd;
-               mqd->free_mqd = free_mqd;
+               mqd->free_mqd = kfd_free_mqd_cp;
                mqd->load_mqd = load_mqd;
                mqd->update_mqd = update_mqd;
-               mqd->destroy_mqd = destroy_mqd;
-               mqd->is_occupied = is_occupied;
+               mqd->destroy_mqd = kfd_destroy_mqd_cp;
+               mqd->is_occupied = kfd_is_occupied_cp;
                mqd->checkpoint_mqd = checkpoint_mqd;
                mqd->restore_mqd = restore_mqd;
                mqd->mqd_size = sizeof(struct cik_mqd);
@@ -478,8 +424,8 @@ struct mqd_manager *mqd_manager_init_cik(enum KFD_MQD_TYPE 
type,
                mqd->free_mqd = free_mqd_hiq_sdma;
                mqd->load_mqd = load_mqd;
                mqd->update_mqd = update_mqd_hiq;
-               mqd->destroy_mqd = destroy_mqd;
-               mqd->is_occupied = is_occupied;
+               mqd->destroy_mqd = kfd_destroy_mqd_cp;
+               mqd->is_occupied = kfd_is_occupied_cp;
                mqd->mqd_size = sizeof(struct cik_mqd);
 #if defined(CONFIG_DEBUG_FS)
                mqd->debugfs_show_mqd = debugfs_show_mqd;
@@ -489,11 +435,11 @@ struct mqd_manager *mqd_manager_init_cik(enum 
KFD_MQD_TYPE type,
        case KFD_MQD_TYPE_DIQ:
                mqd->allocate_mqd = allocate_mqd;
                mqd->init_mqd = init_mqd_hiq;
-               mqd->free_mqd = free_mqd;
+               mqd->free_mqd = kfd_free_mqd_cp;
                mqd->load_mqd = load_mqd;
                mqd->update_mqd = update_mqd_hiq;
-               mqd->destroy_mqd = destroy_mqd;
-               mqd->is_occupied = is_occupied;
+               mqd->destroy_mqd = kfd_destroy_mqd_cp;
+               mqd->is_occupied = kfd_is_occupied_cp;
                mqd->mqd_size = sizeof(struct cik_mqd);
 #if defined(CONFIG_DEBUG_FS)
                mqd->debugfs_show_mqd = debugfs_show_mqd;
@@ -503,10 +449,10 @@ struct mqd_manager *mqd_manager_init_cik(enum 
KFD_MQD_TYPE type,
                mqd->allocate_mqd = allocate_sdma_mqd;
                mqd->init_mqd = init_mqd_sdma;
                mqd->free_mqd = free_mqd_hiq_sdma;
-               mqd->load_mqd = load_mqd_sdma;
+               mqd->load_mqd = kfd_load_mqd_sdma;
                mqd->update_mqd = update_mqd_sdma;
-               mqd->destroy_mqd = destroy_mqd_sdma;
-               mqd->is_occupied = is_occupied_sdma;
+               mqd->destroy_mqd = kfd_destroy_mqd_sdma;
+               mqd->is_occupied = kfd_is_occupied_sdma;
                mqd->checkpoint_mqd = checkpoint_mqd_sdma;
                mqd->restore_mqd = restore_mqd_sdma;
                mqd->mqd_size = sizeof(struct cik_sdma_rlc_registers);
diff --git a/drivers/gpu/drm/amd/amdkfd/kfd_mqd_manager_v10.c 
b/drivers/gpu/drm/amd/amdkfd/kfd_mqd_manager_v10.c
index 0cc8679c24fa..88228009ded4 100644
--- a/drivers/gpu/drm/amd/amdkfd/kfd_mqd_manager_v10.c
+++ b/drivers/gpu/drm/amd/amdkfd/kfd_mqd_manager_v10.c
@@ -154,14 +154,6 @@ static int load_mqd(struct mqd_manager *mm, void *mqd,
        return r;
 }
 
-static int hiq_load_mqd_kiq(struct mqd_manager *mm, void *mqd,
-                           uint32_t pipe_id, uint32_t queue_id,
-                           struct queue_properties *p, struct mm_struct *mms)
-{
-       return mm->dev->kfd2kgd->hiq_mqd_load(mm->dev->adev, mqd, pipe_id,
-                                             queue_id, p->doorbell_off);
-}
-
 static void update_mqd(struct mqd_manager *mm, void *mqd,
                        struct queue_properties *q,
                        struct mqd_update_info *minfo)
@@ -233,31 +225,6 @@ static uint32_t read_doorbell_id(void *mqd)
        return m->queue_doorbell_id0;
 }
 
-static int destroy_mqd(struct mqd_manager *mm, void *mqd,
-                      enum kfd_preempt_type type,
-                      unsigned int timeout, uint32_t pipe_id,
-                      uint32_t queue_id)
-{
-       return mm->dev->kfd2kgd->hqd_destroy
-               (mm->dev->adev, mqd, type, timeout,
-                pipe_id, queue_id);
-}
-
-static void free_mqd(struct mqd_manager *mm, void *mqd,
-                       struct kfd_mem_obj *mqd_mem_obj)
-{
-       kfd_gtt_sa_free(mm->dev, mqd_mem_obj);
-}
-
-static bool is_occupied(struct mqd_manager *mm, void *mqd,
-                       uint64_t queue_address, uint32_t pipe_id,
-                       uint32_t queue_id)
-{
-       return mm->dev->kfd2kgd->hqd_is_occupied(
-               mm->dev->adev, queue_address,
-               pipe_id, queue_id);
-}
-
 static int get_wave_state(struct mqd_manager *mm, void *mqd,
                          void __user *ctl_stack,
                          u32 *ctl_stack_used_size,
@@ -352,15 +319,6 @@ static void init_mqd_sdma(struct mqd_manager *mm, void 
**mqd,
        mm->update_mqd(mm, m, q, NULL);
 }
 
-static int load_mqd_sdma(struct mqd_manager *mm, void *mqd,
-               uint32_t pipe_id, uint32_t queue_id,
-               struct queue_properties *p, struct mm_struct *mms)
-{
-       return mm->dev->kfd2kgd->hqd_sdma_load(mm->dev->adev, mqd,
-                                              (uint32_t __user *)p->write_ptr,
-                                              mms);
-}
-
 #define SDMA_RLC_DUMMY_DEFAULT 0xf
 
 static void update_mqd_sdma(struct mqd_manager *mm, void *mqd,
@@ -390,25 +348,6 @@ static void update_mqd_sdma(struct mqd_manager *mm, void 
*mqd,
        q->is_active = QUEUE_IS_ACTIVE(*q);
 }
 
-/*
- *  * preempt type here is ignored because there is only one way
- *  * to preempt sdma queue
- */
-static int destroy_mqd_sdma(struct mqd_manager *mm, void *mqd,
-               enum kfd_preempt_type type,
-               unsigned int timeout, uint32_t pipe_id,
-               uint32_t queue_id)
-{
-       return mm->dev->kfd2kgd->hqd_sdma_destroy(mm->dev->adev, mqd, timeout);
-}
-
-static bool is_occupied_sdma(struct mqd_manager *mm, void *mqd,
-               uint64_t queue_address, uint32_t pipe_id,
-               uint32_t queue_id)
-{
-       return mm->dev->kfd2kgd->hqd_sdma_is_occupied(mm->dev->adev, mqd);
-}
-
 static void checkpoint_mqd_sdma(struct mqd_manager *mm,
                                void *mqd,
                                void *mqd_dst,
@@ -483,11 +422,11 @@ struct mqd_manager *mqd_manager_init_v10(enum 
KFD_MQD_TYPE type,
                pr_debug("%s@%i\n", __func__, __LINE__);
                mqd->allocate_mqd = allocate_mqd;
                mqd->init_mqd = init_mqd;
-               mqd->free_mqd = free_mqd;
+               mqd->free_mqd = kfd_free_mqd_cp;
                mqd->load_mqd = load_mqd;
                mqd->update_mqd = update_mqd;
-               mqd->destroy_mqd = destroy_mqd;
-               mqd->is_occupied = is_occupied;
+               mqd->destroy_mqd = kfd_destroy_mqd_cp;
+               mqd->is_occupied = kfd_is_occupied_cp;
                mqd->mqd_size = sizeof(struct v10_compute_mqd);
                mqd->get_wave_state = get_wave_state;
                mqd->checkpoint_mqd = checkpoint_mqd;
@@ -502,10 +441,10 @@ struct mqd_manager *mqd_manager_init_v10(enum 
KFD_MQD_TYPE type,
                mqd->allocate_mqd = allocate_hiq_mqd;
                mqd->init_mqd = init_mqd_hiq;
                mqd->free_mqd = free_mqd_hiq_sdma;
-               mqd->load_mqd = hiq_load_mqd_kiq;
+               mqd->load_mqd = kfd_hiq_load_mqd_kiq;
                mqd->update_mqd = update_mqd;
-               mqd->destroy_mqd = destroy_mqd;
-               mqd->is_occupied = is_occupied;
+               mqd->destroy_mqd = kfd_destroy_mqd_cp;
+               mqd->is_occupied = kfd_is_occupied_cp;
                mqd->mqd_size = sizeof(struct v10_compute_mqd);
 #if defined(CONFIG_DEBUG_FS)
                mqd->debugfs_show_mqd = debugfs_show_mqd;
@@ -516,11 +455,11 @@ struct mqd_manager *mqd_manager_init_v10(enum 
KFD_MQD_TYPE type,
        case KFD_MQD_TYPE_DIQ:
                mqd->allocate_mqd = allocate_mqd;
                mqd->init_mqd = init_mqd_hiq;
-               mqd->free_mqd = free_mqd;
+               mqd->free_mqd = kfd_free_mqd_cp;
                mqd->load_mqd = load_mqd;
                mqd->update_mqd = update_mqd;
-               mqd->destroy_mqd = destroy_mqd;
-               mqd->is_occupied = is_occupied;
+               mqd->destroy_mqd = kfd_destroy_mqd_cp;
+               mqd->is_occupied = kfd_is_occupied_cp;
                mqd->mqd_size = sizeof(struct v10_compute_mqd);
 #if defined(CONFIG_DEBUG_FS)
                mqd->debugfs_show_mqd = debugfs_show_mqd;
@@ -531,10 +470,10 @@ struct mqd_manager *mqd_manager_init_v10(enum 
KFD_MQD_TYPE type,
                mqd->allocate_mqd = allocate_sdma_mqd;
                mqd->init_mqd = init_mqd_sdma;
                mqd->free_mqd = free_mqd_hiq_sdma;
-               mqd->load_mqd = load_mqd_sdma;
+               mqd->load_mqd = kfd_load_mqd_sdma;
                mqd->update_mqd = update_mqd_sdma;
-               mqd->destroy_mqd = destroy_mqd_sdma;
-               mqd->is_occupied = is_occupied_sdma;
+               mqd->destroy_mqd = kfd_destroy_mqd_sdma;
+               mqd->is_occupied = kfd_is_occupied_sdma;
                mqd->checkpoint_mqd = checkpoint_mqd_sdma;
                mqd->restore_mqd = restore_mqd_sdma;
                mqd->mqd_size = sizeof(struct v10_sdma_mqd);
diff --git a/drivers/gpu/drm/amd/amdkfd/kfd_mqd_manager_v9.c 
b/drivers/gpu/drm/amd/amdkfd/kfd_mqd_manager_v9.c
index 87da4329dbf2..dff58ee53557 100644
--- a/drivers/gpu/drm/amd/amdkfd/kfd_mqd_manager_v9.c
+++ b/drivers/gpu/drm/amd/amdkfd/kfd_mqd_manager_v9.c
@@ -204,14 +204,6 @@ static int load_mqd(struct mqd_manager *mm, void *mqd,
                                          wptr_shift, 0, mms);
 }
 
-static int hiq_load_mqd_kiq(struct mqd_manager *mm, void *mqd,
-                           uint32_t pipe_id, uint32_t queue_id,
-                           struct queue_properties *p, struct mm_struct *mms)
-{
-       return mm->dev->kfd2kgd->hiq_mqd_load(mm->dev->adev, mqd, pipe_id,
-                                             queue_id, p->doorbell_off);
-}
-
 static void update_mqd(struct mqd_manager *mm, void *mqd,
                        struct queue_properties *q,
                        struct mqd_update_info *minfo)
@@ -285,38 +277,6 @@ static uint32_t read_doorbell_id(void *mqd)
        return m->queue_doorbell_id0;
 }
 
-static int destroy_mqd(struct mqd_manager *mm, void *mqd,
-                       enum kfd_preempt_type type,
-                       unsigned int timeout, uint32_t pipe_id,
-                       uint32_t queue_id)
-{
-       return mm->dev->kfd2kgd->hqd_destroy
-               (mm->dev->adev, mqd, type, timeout,
-               pipe_id, queue_id);
-}
-
-static void free_mqd(struct mqd_manager *mm, void *mqd,
-                       struct kfd_mem_obj *mqd_mem_obj)
-{
-       struct kfd_dev *kfd = mm->dev;
-
-       if (mqd_mem_obj->gtt_mem) {
-               amdgpu_amdkfd_free_gtt_mem(kfd->adev, mqd_mem_obj->gtt_mem);
-               kfree(mqd_mem_obj);
-       } else {
-               kfd_gtt_sa_free(mm->dev, mqd_mem_obj);
-       }
-}
-
-static bool is_occupied(struct mqd_manager *mm, void *mqd,
-                       uint64_t queue_address, uint32_t pipe_id,
-                       uint32_t queue_id)
-{
-       return mm->dev->kfd2kgd->hqd_is_occupied(
-               mm->dev->adev, queue_address,
-               pipe_id, queue_id);
-}
-
 static int get_wave_state(struct mqd_manager *mm, void *mqd,
                          void __user *ctl_stack,
                          u32 *ctl_stack_used_size,
@@ -422,15 +382,6 @@ static void init_mqd_sdma(struct mqd_manager *mm, void 
**mqd,
        mm->update_mqd(mm, m, q, NULL);
 }
 
-static int load_mqd_sdma(struct mqd_manager *mm, void *mqd,
-               uint32_t pipe_id, uint32_t queue_id,
-               struct queue_properties *p, struct mm_struct *mms)
-{
-       return mm->dev->kfd2kgd->hqd_sdma_load(mm->dev->adev, mqd,
-                                              (uint32_t __user *)p->write_ptr,
-                                              mms);
-}
-
 #define SDMA_RLC_DUMMY_DEFAULT 0xf
 
 static void update_mqd_sdma(struct mqd_manager *mm, void *mqd,
@@ -460,25 +411,6 @@ static void update_mqd_sdma(struct mqd_manager *mm, void 
*mqd,
        q->is_active = QUEUE_IS_ACTIVE(*q);
 }
 
-/*
- *  * preempt type here is ignored because there is only one way
- *  * to preempt sdma queue
- */
-static int destroy_mqd_sdma(struct mqd_manager *mm, void *mqd,
-               enum kfd_preempt_type type,
-               unsigned int timeout, uint32_t pipe_id,
-               uint32_t queue_id)
-{
-       return mm->dev->kfd2kgd->hqd_sdma_destroy(mm->dev->adev, mqd, timeout);
-}
-
-static bool is_occupied_sdma(struct mqd_manager *mm, void *mqd,
-               uint64_t queue_address, uint32_t pipe_id,
-               uint32_t queue_id)
-{
-       return mm->dev->kfd2kgd->hqd_sdma_is_occupied(mm->dev->adev, mqd);
-}
-
 static void checkpoint_mqd_sdma(struct mqd_manager *mm,
                                void *mqd,
                                void *mqd_dst,
@@ -551,11 +483,11 @@ struct mqd_manager *mqd_manager_init_v9(enum KFD_MQD_TYPE 
type,
        case KFD_MQD_TYPE_CP:
                mqd->allocate_mqd = allocate_mqd;
                mqd->init_mqd = init_mqd;
-               mqd->free_mqd = free_mqd;
+               mqd->free_mqd = kfd_free_mqd_cp;
                mqd->load_mqd = load_mqd;
                mqd->update_mqd = update_mqd;
-               mqd->destroy_mqd = destroy_mqd;
-               mqd->is_occupied = is_occupied;
+               mqd->destroy_mqd = kfd_destroy_mqd_cp;
+               mqd->is_occupied = kfd_is_occupied_cp;
                mqd->get_wave_state = get_wave_state;
                mqd->get_checkpoint_info = get_checkpoint_info;
                mqd->checkpoint_mqd = checkpoint_mqd;
@@ -569,10 +501,10 @@ struct mqd_manager *mqd_manager_init_v9(enum KFD_MQD_TYPE 
type,
                mqd->allocate_mqd = allocate_hiq_mqd;
                mqd->init_mqd = init_mqd_hiq;
                mqd->free_mqd = free_mqd_hiq_sdma;
-               mqd->load_mqd = hiq_load_mqd_kiq;
+               mqd->load_mqd = kfd_hiq_load_mqd_kiq;
                mqd->update_mqd = update_mqd;
-               mqd->destroy_mqd = destroy_mqd;
-               mqd->is_occupied = is_occupied;
+               mqd->destroy_mqd = kfd_destroy_mqd_cp;
+               mqd->is_occupied = kfd_is_occupied_cp;
                mqd->mqd_size = sizeof(struct v9_mqd);
 #if defined(CONFIG_DEBUG_FS)
                mqd->debugfs_show_mqd = debugfs_show_mqd;
@@ -582,11 +514,11 @@ struct mqd_manager *mqd_manager_init_v9(enum KFD_MQD_TYPE 
type,
        case KFD_MQD_TYPE_DIQ:
                mqd->allocate_mqd = allocate_mqd;
                mqd->init_mqd = init_mqd_hiq;
-               mqd->free_mqd = free_mqd;
+               mqd->free_mqd = kfd_free_mqd_cp;
                mqd->load_mqd = load_mqd;
                mqd->update_mqd = update_mqd;
-               mqd->destroy_mqd = destroy_mqd;
-               mqd->is_occupied = is_occupied;
+               mqd->destroy_mqd = kfd_destroy_mqd_cp;
+               mqd->is_occupied = kfd_is_occupied_cp;
                mqd->mqd_size = sizeof(struct v9_mqd);
 #if defined(CONFIG_DEBUG_FS)
                mqd->debugfs_show_mqd = debugfs_show_mqd;
@@ -596,10 +528,10 @@ struct mqd_manager *mqd_manager_init_v9(enum KFD_MQD_TYPE 
type,
                mqd->allocate_mqd = allocate_sdma_mqd;
                mqd->init_mqd = init_mqd_sdma;
                mqd->free_mqd = free_mqd_hiq_sdma;
-               mqd->load_mqd = load_mqd_sdma;
+               mqd->load_mqd = kfd_load_mqd_sdma;
                mqd->update_mqd = update_mqd_sdma;
-               mqd->destroy_mqd = destroy_mqd_sdma;
-               mqd->is_occupied = is_occupied_sdma;
+               mqd->destroy_mqd = kfd_destroy_mqd_sdma;
+               mqd->is_occupied = kfd_is_occupied_sdma;
                mqd->checkpoint_mqd = checkpoint_mqd_sdma;
                mqd->restore_mqd = restore_mqd_sdma;
                mqd->mqd_size = sizeof(struct v9_sdma_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 137b208135a0..86fc5decacf0 100644
--- a/drivers/gpu/drm/amd/amdkfd/kfd_mqd_manager_vi.c
+++ b/drivers/gpu/drm/amd/amdkfd/kfd_mqd_manager_vi.c
@@ -259,31 +259,6 @@ static void update_mqd_tonga(struct mqd_manager *mm, void 
*mqd,
        __update_mqd(mm, mqd, q, minfo, MTYPE_UC, 0);
 }
 
-static int destroy_mqd(struct mqd_manager *mm, void *mqd,
-                       enum kfd_preempt_type type,
-                       unsigned int timeout, uint32_t pipe_id,
-                       uint32_t queue_id)
-{
-       return mm->dev->kfd2kgd->hqd_destroy
-               (mm->dev->adev, mqd, type, timeout,
-               pipe_id, queue_id);
-}
-
-static void free_mqd(struct mqd_manager *mm, void *mqd,
-                       struct kfd_mem_obj *mqd_mem_obj)
-{
-       kfd_gtt_sa_free(mm->dev, mqd_mem_obj);
-}
-
-static bool is_occupied(struct mqd_manager *mm, void *mqd,
-                       uint64_t queue_address, uint32_t pipe_id,
-                       uint32_t queue_id)
-{
-       return mm->dev->kfd2kgd->hqd_is_occupied(
-               mm->dev->adev, queue_address,
-               pipe_id, queue_id);
-}
-
 static int get_wave_state(struct mqd_manager *mm, void *mqd,
                          void __user *ctl_stack,
                          u32 *ctl_stack_used_size,
@@ -385,15 +360,6 @@ static void init_mqd_sdma(struct mqd_manager *mm, void 
**mqd,
        mm->update_mqd(mm, m, q, NULL);
 }
 
-static int load_mqd_sdma(struct mqd_manager *mm, void *mqd,
-               uint32_t pipe_id, uint32_t queue_id,
-               struct queue_properties *p, struct mm_struct *mms)
-{
-       return mm->dev->kfd2kgd->hqd_sdma_load(mm->dev->adev, mqd,
-                                              (uint32_t __user *)p->write_ptr,
-                                              mms);
-}
-
 static void update_mqd_sdma(struct mqd_manager *mm, void *mqd,
                        struct queue_properties *q,
                        struct mqd_update_info *minfo)
@@ -422,25 +388,6 @@ static void update_mqd_sdma(struct mqd_manager *mm, void 
*mqd,
        q->is_active = QUEUE_IS_ACTIVE(*q);
 }
 
-/*
- *  * preempt type here is ignored because there is only one way
- *  * to preempt sdma queue
- */
-static int destroy_mqd_sdma(struct mqd_manager *mm, void *mqd,
-               enum kfd_preempt_type type,
-               unsigned int timeout, uint32_t pipe_id,
-               uint32_t queue_id)
-{
-       return mm->dev->kfd2kgd->hqd_sdma_destroy(mm->dev->adev, mqd, timeout);
-}
-
-static bool is_occupied_sdma(struct mqd_manager *mm, void *mqd,
-               uint64_t queue_address, uint32_t pipe_id,
-               uint32_t queue_id)
-{
-       return mm->dev->kfd2kgd->hqd_sdma_is_occupied(mm->dev->adev, mqd);
-}
-
 static void checkpoint_mqd_sdma(struct mqd_manager *mm,
                                void *mqd,
                                void *mqd_dst,
@@ -514,11 +461,11 @@ struct mqd_manager *mqd_manager_init_vi(enum KFD_MQD_TYPE 
type,
        case KFD_MQD_TYPE_CP:
                mqd->allocate_mqd = allocate_mqd;
                mqd->init_mqd = init_mqd;
-               mqd->free_mqd = free_mqd;
+               mqd->free_mqd = kfd_free_mqd_cp;
                mqd->load_mqd = load_mqd;
                mqd->update_mqd = update_mqd;
-               mqd->destroy_mqd = destroy_mqd;
-               mqd->is_occupied = is_occupied;
+               mqd->destroy_mqd = kfd_destroy_mqd_cp;
+               mqd->is_occupied = kfd_is_occupied_cp;
                mqd->get_wave_state = get_wave_state;
                mqd->get_checkpoint_info = get_checkpoint_info;
                mqd->checkpoint_mqd = checkpoint_mqd;
@@ -534,8 +481,8 @@ struct mqd_manager *mqd_manager_init_vi(enum KFD_MQD_TYPE 
type,
                mqd->free_mqd = free_mqd_hiq_sdma;
                mqd->load_mqd = load_mqd;
                mqd->update_mqd = update_mqd_hiq;
-               mqd->destroy_mqd = destroy_mqd;
-               mqd->is_occupied = is_occupied;
+               mqd->destroy_mqd = kfd_destroy_mqd_cp;
+               mqd->is_occupied = kfd_is_occupied_cp;
                mqd->mqd_size = sizeof(struct vi_mqd);
 #if defined(CONFIG_DEBUG_FS)
                mqd->debugfs_show_mqd = debugfs_show_mqd;
@@ -545,11 +492,11 @@ struct mqd_manager *mqd_manager_init_vi(enum KFD_MQD_TYPE 
type,
        case KFD_MQD_TYPE_DIQ:
                mqd->allocate_mqd = allocate_mqd;
                mqd->init_mqd = init_mqd_hiq;
-               mqd->free_mqd = free_mqd;
+               mqd->free_mqd = kfd_free_mqd_cp;
                mqd->load_mqd = load_mqd;
                mqd->update_mqd = update_mqd_hiq;
-               mqd->destroy_mqd = destroy_mqd;
-               mqd->is_occupied = is_occupied;
+               mqd->destroy_mqd = kfd_destroy_mqd_cp;
+               mqd->is_occupied = kfd_is_occupied_cp;
                mqd->mqd_size = sizeof(struct vi_mqd);
 #if defined(CONFIG_DEBUG_FS)
                mqd->debugfs_show_mqd = debugfs_show_mqd;
@@ -559,10 +506,10 @@ struct mqd_manager *mqd_manager_init_vi(enum KFD_MQD_TYPE 
type,
                mqd->allocate_mqd = allocate_sdma_mqd;
                mqd->init_mqd = init_mqd_sdma;
                mqd->free_mqd = free_mqd_hiq_sdma;
-               mqd->load_mqd = load_mqd_sdma;
+               mqd->load_mqd = kfd_load_mqd_sdma;
                mqd->update_mqd = update_mqd_sdma;
-               mqd->destroy_mqd = destroy_mqd_sdma;
-               mqd->is_occupied = is_occupied_sdma;
+               mqd->destroy_mqd = kfd_destroy_mqd_sdma;
+               mqd->is_occupied = kfd_is_occupied_sdma;
                mqd->checkpoint_mqd = checkpoint_mqd_sdma;
                mqd->restore_mqd = restore_mqd_sdma;
                mqd->mqd_size = sizeof(struct vi_sdma_mqd);
-- 
2.33.1

Reply via email to