aboutsummaryrefslogtreecommitdiffstats
path: root/meta-r1000/recipes-kernel/linux/linux-yocto-4.14.71/5682-drm-amdkfd-Add-check-user-queue-busy-interface.patch
diff options
context:
space:
mode:
Diffstat (limited to 'meta-r1000/recipes-kernel/linux/linux-yocto-4.14.71/5682-drm-amdkfd-Add-check-user-queue-busy-interface.patch')
-rw-r--r--meta-r1000/recipes-kernel/linux/linux-yocto-4.14.71/5682-drm-amdkfd-Add-check-user-queue-busy-interface.patch246
1 files changed, 0 insertions, 246 deletions
diff --git a/meta-r1000/recipes-kernel/linux/linux-yocto-4.14.71/5682-drm-amdkfd-Add-check-user-queue-busy-interface.patch b/meta-r1000/recipes-kernel/linux/linux-yocto-4.14.71/5682-drm-amdkfd-Add-check-user-queue-busy-interface.patch
deleted file mode 100644
index 20492f5d..00000000
--- a/meta-r1000/recipes-kernel/linux/linux-yocto-4.14.71/5682-drm-amdkfd-Add-check-user-queue-busy-interface.patch
+++ /dev/null
@@ -1,246 +0,0 @@
-From aea46ffaaafb1fa4bb41a3626217bbf165f4f0e7 Mon Sep 17 00:00:00 2001
-From: Philip Yang <Philip.Yang@amd.com>
-Date: Mon, 28 May 2018 16:22:24 -0400
-Subject: [PATCH 5682/5725] drm/amdkfd: Add check user queue busy interface
-
-Process is idle if both conditions are meet:
- queue's rptr equals to wptr
- control stack is empty, cntl_stack_offset = cntl_stack_size
-
-Change-Id: I316341eeea8ada302d216d1df36d2d8a6951c573
-Signed-off-by: Philip Yang <Philip.Yang@amd.com>
----
- drivers/gpu/drm/amd/amdkfd/kfd_mqd_manager.h | 2 ++
- drivers/gpu/drm/amd/amdkfd/kfd_mqd_manager_cik.c | 28 +++++++++++++++
- drivers/gpu/drm/amd/amdkfd/kfd_mqd_manager_v9.c | 46 ++++++++++++++++++++++++
- drivers/gpu/drm/amd/amdkfd/kfd_mqd_manager_vi.c | 42 ++++++++++++++++++++++
- 4 files changed, 118 insertions(+)
-
-diff --git a/drivers/gpu/drm/amd/amdkfd/kfd_mqd_manager.h b/drivers/gpu/drm/amd/amdkfd/kfd_mqd_manager.h
-index dcaeda8..336ea9c 100644
---- a/drivers/gpu/drm/amd/amdkfd/kfd_mqd_manager.h
-+++ b/drivers/gpu/drm/amd/amdkfd/kfd_mqd_manager.h
-@@ -94,6 +94,8 @@ struct mqd_manager {
- u32 *ctl_stack_used_size,
- u32 *save_area_used_size);
-
-+ bool (*check_queue_active)(struct queue *q);
-+
- #if defined(CONFIG_DEBUG_FS)
- int (*debugfs_show_mqd)(struct seq_file *m, void *data);
- #endif
-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 bd44a23..2441834 100644
---- a/drivers/gpu/drm/amd/amdkfd/kfd_mqd_manager_cik.c
-+++ b/drivers/gpu/drm/amd/amdkfd/kfd_mqd_manager_cik.c
-@@ -42,6 +42,31 @@ static inline struct cik_sdma_rlc_registers *get_sdma_mqd(void *mqd)
- return (struct cik_sdma_rlc_registers *)mqd;
- }
-
-+static bool check_sdma_queue_active(struct queue *q)
-+{
-+ uint32_t rptr, wptr;
-+ struct cik_sdma_rlc_registers *m = get_sdma_mqd(q->mqd);
-+
-+ rptr = m->sdma_rlc_rb_rptr;
-+ wptr = m->sdma_rlc_rb_wptr;
-+ pr_debug("rptr=%d, wptr=%d\n", rptr, wptr);
-+
-+ return (rptr != wptr);
-+}
-+
-+static bool check_queue_active(struct queue *q)
-+{
-+ uint32_t rptr, wptr;
-+ struct cik_mqd *m = get_mqd(q->mqd);
-+
-+ rptr = m->cp_hqd_pq_rptr;
-+ wptr = m->cp_hqd_pq_wptr;
-+
-+ pr_debug("rptr=%d, wptr=%d\n", rptr, wptr);
-+
-+ return (rptr != wptr);
-+}
-+
- static void update_cu_mask(struct mqd_manager *mm, void *mqd,
- struct queue_properties *q)
- {
-@@ -491,6 +516,7 @@ struct mqd_manager *mqd_manager_init_cik(enum KFD_MQD_TYPE type,
- mqd->update_mqd = update_mqd;
- mqd->destroy_mqd = destroy_mqd;
- mqd->is_occupied = is_occupied;
-+ mqd->check_queue_active = check_queue_active;
- #if defined(CONFIG_DEBUG_FS)
- mqd->debugfs_show_mqd = debugfs_show_mqd;
- #endif
-@@ -502,6 +528,7 @@ struct mqd_manager *mqd_manager_init_cik(enum KFD_MQD_TYPE type,
- mqd->update_mqd = update_mqd_hiq;
- mqd->destroy_mqd = destroy_mqd;
- mqd->is_occupied = is_occupied;
-+ mqd->check_queue_active = check_queue_active;
- #if defined(CONFIG_DEBUG_FS)
- mqd->debugfs_show_mqd = debugfs_show_mqd;
- #endif
-@@ -513,6 +540,7 @@ struct mqd_manager *mqd_manager_init_cik(enum KFD_MQD_TYPE type,
- mqd->update_mqd = update_mqd_sdma;
- mqd->destroy_mqd = destroy_mqd_sdma;
- mqd->is_occupied = is_occupied_sdma;
-+ mqd->check_queue_active = check_sdma_queue_active;
- #if defined(CONFIG_DEBUG_FS)
- mqd->debugfs_show_mqd = debugfs_show_mqd_sdma;
- #endif
-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 58ea1fe..dcd24c4 100644
---- a/drivers/gpu/drm/amd/amdkfd/kfd_mqd_manager_v9.c
-+++ b/drivers/gpu/drm/amd/amdkfd/kfd_mqd_manager_v9.c
-@@ -41,6 +41,49 @@ static inline struct v9_sdma_mqd *get_sdma_mqd(void *mqd)
- return (struct v9_sdma_mqd *)mqd;
- }
-
-+static bool check_sdma_queue_active(struct queue *q)
-+{
-+ uint32_t rptr, wptr;
-+ uint32_t rptr_hi, wptr_hi;
-+ struct v9_sdma_mqd *m = get_sdma_mqd(q->mqd);
-+
-+ rptr = m->sdmax_rlcx_rb_rptr;
-+ wptr = m->sdmax_rlcx_rb_wptr;
-+ rptr_hi = m->sdmax_rlcx_rb_rptr_hi;
-+ wptr_hi = m->sdmax_rlcx_rb_wptr_hi;
-+ pr_debug("rptr=%d, wptr=%d\n", rptr, wptr);
-+ pr_debug("rptr_hi=%d, wptr_hi=%d\n", rptr_hi, wptr_hi);
-+
-+ return (rptr != wptr || rptr_hi != wptr_hi);
-+}
-+
-+static bool check_queue_active(struct queue *q)
-+{
-+ uint32_t rptr, wptr;
-+ uint32_t cntl_stack_offset, cntl_stack_size;
-+ struct v9_mqd *m = get_mqd(q->mqd);
-+
-+ rptr = m->cp_hqd_pq_rptr;
-+ wptr = m->cp_hqd_pq_wptr_lo % q->properties.queue_size;
-+ cntl_stack_offset = m->cp_hqd_cntl_stack_offset;
-+ cntl_stack_size = m->cp_hqd_cntl_stack_size;
-+
-+ pr_debug("rptr=%d, wptr=%d\n", rptr, wptr);
-+ pr_debug("m->cp_hqd_cntl_stack_offset=0x%08x\n", cntl_stack_offset);
-+ pr_debug("m->cp_hqd_cntl_stack_size=0x%08x\n", cntl_stack_size);
-+
-+ if ((rptr == 0 && wptr == 0) ||
-+ cntl_stack_offset == 0xffffffff ||
-+ cntl_stack_size > 0x5000)
-+ return false;
-+
-+ /* Process is idle if both conditions are meet:
-+ * queue's rptr equals to wptr
-+ * control stack is empty, cntl_stack_offset = cntl_stack_size
-+ */
-+ return (rptr != wptr || cntl_stack_offset != cntl_stack_size);
-+}
-+
- static void update_cu_mask(struct mqd_manager *mm, void *mqd,
- struct queue_properties *q)
- {
-@@ -489,6 +532,7 @@ struct mqd_manager *mqd_manager_init_v9(enum KFD_MQD_TYPE type,
- mqd->destroy_mqd = destroy_mqd;
- mqd->is_occupied = is_occupied;
- mqd->get_wave_state = get_wave_state;
-+ mqd->check_queue_active = check_queue_active;
- #if defined(CONFIG_DEBUG_FS)
- mqd->debugfs_show_mqd = debugfs_show_mqd;
- #endif
-@@ -500,6 +544,7 @@ struct mqd_manager *mqd_manager_init_v9(enum KFD_MQD_TYPE type,
- mqd->update_mqd = update_mqd_hiq;
- mqd->destroy_mqd = destroy_mqd;
- mqd->is_occupied = is_occupied;
-+ mqd->check_queue_active = check_queue_active;
- #if defined(CONFIG_DEBUG_FS)
- mqd->debugfs_show_mqd = debugfs_show_mqd;
- #endif
-@@ -511,6 +556,7 @@ struct mqd_manager *mqd_manager_init_v9(enum KFD_MQD_TYPE type,
- mqd->update_mqd = update_mqd_sdma;
- mqd->destroy_mqd = destroy_mqd_sdma;
- mqd->is_occupied = is_occupied_sdma;
-+ mqd->check_queue_active = check_sdma_queue_active;
- #if defined(CONFIG_DEBUG_FS)
- mqd->debugfs_show_mqd = debugfs_show_mqd_sdma;
- #endif
-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 e3ae2d4..246fe6c 100644
---- a/drivers/gpu/drm/amd/amdkfd/kfd_mqd_manager_vi.c
-+++ b/drivers/gpu/drm/amd/amdkfd/kfd_mqd_manager_vi.c
-@@ -44,6 +44,45 @@ static inline struct vi_sdma_mqd *get_sdma_mqd(void *mqd)
- return (struct vi_sdma_mqd *)mqd;
- }
-
-+static bool check_sdma_queue_active(struct queue *q)
-+{
-+ uint32_t rptr, wptr;
-+ struct vi_sdma_mqd *m = get_sdma_mqd(q->mqd);
-+
-+ rptr = m->sdmax_rlcx_rb_rptr;
-+ wptr = m->sdmax_rlcx_rb_wptr;
-+ pr_debug("rptr=%d, wptr=%d\n", rptr, wptr);
-+
-+ return (rptr != wptr);
-+}
-+
-+static bool check_queue_active(struct queue *q)
-+{
-+ uint32_t rptr, wptr;
-+ uint32_t cntl_stack_offset, cntl_stack_size;
-+ struct vi_mqd *m = get_mqd(q->mqd);
-+
-+ rptr = m->cp_hqd_pq_rptr;
-+ wptr = m->cp_hqd_pq_wptr;
-+ cntl_stack_offset = m->cp_hqd_cntl_stack_offset;
-+ cntl_stack_size = m->cp_hqd_cntl_stack_size;
-+
-+ pr_debug("rptr=%d, wptr=%d\n", rptr, wptr);
-+ pr_debug("m->cp_hqd_cntl_stack_offset=0x%08x\n", cntl_stack_offset);
-+ pr_debug("m->cp_hqd_cntl_stack_size=0x%08x\n", cntl_stack_size);
-+
-+ if ((rptr == 0 && wptr == 0) ||
-+ cntl_stack_offset == 0xffffffff ||
-+ cntl_stack_size > 0x5000)
-+ return false;
-+
-+ /* Process is idle if both conditions are meet:
-+ * queue's rptr equals to wptr
-+ * control stack is empty, cntl_stack_offset = cntl_stack_size
-+ */
-+ return (rptr != wptr || cntl_stack_offset != cntl_stack_size);
-+}
-+
- static void update_cu_mask(struct mqd_manager *mm, void *mqd,
- struct queue_properties *q)
- {
-@@ -498,6 +537,7 @@ struct mqd_manager *mqd_manager_init_vi(enum KFD_MQD_TYPE type,
- mqd->destroy_mqd = destroy_mqd;
- mqd->is_occupied = is_occupied;
- mqd->get_wave_state = get_wave_state;
-+ mqd->check_queue_active = check_queue_active;
- #if defined(CONFIG_DEBUG_FS)
- mqd->debugfs_show_mqd = debugfs_show_mqd;
- #endif
-@@ -509,6 +549,7 @@ struct mqd_manager *mqd_manager_init_vi(enum KFD_MQD_TYPE type,
- mqd->update_mqd = update_mqd_hiq;
- mqd->destroy_mqd = destroy_mqd;
- mqd->is_occupied = is_occupied;
-+ mqd->check_queue_active = check_queue_active;
- #if defined(CONFIG_DEBUG_FS)
- mqd->debugfs_show_mqd = debugfs_show_mqd;
- #endif
-@@ -520,6 +561,7 @@ struct mqd_manager *mqd_manager_init_vi(enum KFD_MQD_TYPE type,
- mqd->update_mqd = update_mqd_sdma;
- mqd->destroy_mqd = destroy_mqd_sdma;
- mqd->is_occupied = is_occupied_sdma;
-+ mqd->check_queue_active = check_sdma_queue_active;
- #if defined(CONFIG_DEBUG_FS)
- mqd->debugfs_show_mqd = debugfs_show_mqd_sdma;
- #endif
---
-2.7.4
-