aboutsummaryrefslogtreecommitdiffstats
path: root/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/3352-drm-amdkfd-Avoid-name-confusion-involved-in-queue-un.patch
diff options
context:
space:
mode:
Diffstat (limited to 'meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/3352-drm-amdkfd-Avoid-name-confusion-involved-in-queue-un.patch')
-rw-r--r--meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/3352-drm-amdkfd-Avoid-name-confusion-involved-in-queue-un.patch224
1 files changed, 224 insertions, 0 deletions
diff --git a/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/3352-drm-amdkfd-Avoid-name-confusion-involved-in-queue-un.patch b/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/3352-drm-amdkfd-Avoid-name-confusion-involved-in-queue-un.patch
new file mode 100644
index 00000000..b8c9297c
--- /dev/null
+++ b/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/3352-drm-amdkfd-Avoid-name-confusion-involved-in-queue-un.patch
@@ -0,0 +1,224 @@
+From 8b76ff9b0e6f082cbe0e9736a6f3776084c1b102 Mon Sep 17 00:00:00 2001
+From: Yong Zhao <yong.zhao@amd.com>
+Date: Wed, 27 Sep 2017 00:09:48 -0400
+Subject: [PATCH 3352/4131] drm/amdkfd: Avoid name confusion involved in queue
+ unmapping
+
+When unmapping the queues from HW scheduler, there are two actions:
+reset and preempt. So naming the variables with only preempt is
+inapproriate.
+
+For functions such as destroy_queues_cpsch, what they do actually is to
+unmap the queues on HW scheduler rather than to destroy them. Change the
+name to reflect that fact. On the other hand, there is already a function
+called destroy_queue_cpsch() which exactly destroys a queue, and the name
+is very close to destroy_queues_cpsch(), resulting in confusion.
+
+Signed-off-by: Yong Zhao <yong.zhao@amd.com>
+Signed-off-by: Felix Kuehling <Felix.Kuehling@amd.com>
+Reviewed-by: Oded Gabbay <oded.gabbay@gmail.com>
+Signed-off-by: Oded Gabbay <oded.gabbay@gmail.com>
+---
+ .../gpu/drm/amd/amdkfd/kfd_device_queue_manager.c | 32 +++++++++++-----------
+ drivers/gpu/drm/amd/amdkfd/kfd_packet_manager.c | 18 ++++++------
+ drivers/gpu/drm/amd/amdkfd/kfd_priv.h | 20 +++++++-------
+ 3 files changed, 35 insertions(+), 35 deletions(-)
+
+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 471b34e..1995e0a 100644
+--- a/drivers/gpu/drm/amd/amdkfd/kfd_device_queue_manager.c
++++ b/drivers/gpu/drm/amd/amdkfd/kfd_device_queue_manager.c
+@@ -45,8 +45,8 @@ static int create_compute_queue_nocpsch(struct device_queue_manager *dqm,
+ struct qcm_process_device *qpd);
+
+ static int execute_queues_cpsch(struct device_queue_manager *dqm, bool lock);
+-static int destroy_queues_cpsch(struct device_queue_manager *dqm,
+- bool preempt_static_queues, bool lock);
++static int unmap_queues_cpsch(struct device_queue_manager *dqm,
++ bool static_queues_included, bool lock);
+
+ static int create_sdma_queue_nocpsch(struct device_queue_manager *dqm,
+ struct queue *q,
+@@ -707,7 +707,7 @@ static int start_cpsch(struct device_queue_manager *dqm)
+
+ static int stop_cpsch(struct device_queue_manager *dqm)
+ {
+- destroy_queues_cpsch(dqm, true, true);
++ unmap_queues_cpsch(dqm, true, true);
+
+ kfd_gtt_sa_free(dqm->dev, dqm->fence_mem);
+ pm_uninit(&dqm->packets);
+@@ -750,7 +750,7 @@ static void destroy_kernel_queue_cpsch(struct device_queue_manager *dqm,
+ {
+ mutex_lock(&dqm->lock);
+ /* here we actually preempt the DIQ */
+- destroy_queues_cpsch(dqm, true, false);
++ unmap_queues_cpsch(dqm, true, false);
+ list_del(&kq->list);
+ dqm->queue_count--;
+ qpd->is_debug = false;
+@@ -849,19 +849,19 @@ int amdkfd_fence_wait_timeout(unsigned int *fence_addr,
+ return 0;
+ }
+
+-static int destroy_sdma_queues(struct device_queue_manager *dqm,
++static int unmap_sdma_queues(struct device_queue_manager *dqm,
+ unsigned int sdma_engine)
+ {
+ return pm_send_unmap_queue(&dqm->packets, KFD_QUEUE_TYPE_SDMA,
+- KFD_PREEMPT_TYPE_FILTER_DYNAMIC_QUEUES, 0, false,
++ KFD_UNMAP_QUEUES_FILTER_DYNAMIC_QUEUES, 0, false,
+ sdma_engine);
+ }
+
+-static int destroy_queues_cpsch(struct device_queue_manager *dqm,
+- bool preempt_static_queues, bool lock)
++static int unmap_queues_cpsch(struct device_queue_manager *dqm,
++ bool static_queues_included, bool lock)
+ {
+ int retval;
+- enum kfd_preempt_type_filter preempt_type;
++ enum kfd_unmap_queues_filter filter;
+ struct kfd_process_device *pdd;
+
+ retval = 0;
+@@ -875,16 +875,16 @@ static int destroy_queues_cpsch(struct device_queue_manager *dqm,
+ dqm->sdma_queue_count);
+
+ if (dqm->sdma_queue_count > 0) {
+- destroy_sdma_queues(dqm, 0);
+- destroy_sdma_queues(dqm, 1);
++ unmap_sdma_queues(dqm, 0);
++ unmap_sdma_queues(dqm, 1);
+ }
+
+- preempt_type = preempt_static_queues ?
+- KFD_PREEMPT_TYPE_FILTER_ALL_QUEUES :
+- KFD_PREEMPT_TYPE_FILTER_DYNAMIC_QUEUES;
++ filter = static_queues_included ?
++ KFD_UNMAP_QUEUES_FILTER_ALL_QUEUES :
++ KFD_UNMAP_QUEUES_FILTER_DYNAMIC_QUEUES;
+
+ retval = pm_send_unmap_queue(&dqm->packets, KFD_QUEUE_TYPE_COMPUTE,
+- preempt_type, 0, false, 0);
++ filter, 0, false, 0);
+ if (retval)
+ goto out;
+
+@@ -916,7 +916,7 @@ static int execute_queues_cpsch(struct device_queue_manager *dqm, bool lock)
+ if (lock)
+ mutex_lock(&dqm->lock);
+
+- retval = destroy_queues_cpsch(dqm, false, false);
++ retval = unmap_queues_cpsch(dqm, false, false);
+ if (retval) {
+ pr_err("The cp might be in an unrecoverable state due to an unsuccessful queues preemption");
+ goto out;
+diff --git a/drivers/gpu/drm/amd/amdkfd/kfd_packet_manager.c b/drivers/gpu/drm/amd/amdkfd/kfd_packet_manager.c
+index 9eda884..e5a15ba 100644
+--- a/drivers/gpu/drm/amd/amdkfd/kfd_packet_manager.c
++++ b/drivers/gpu/drm/amd/amdkfd/kfd_packet_manager.c
+@@ -476,7 +476,7 @@ int pm_send_query_status(struct packet_manager *pm, uint64_t fence_address,
+ }
+
+ int pm_send_unmap_queue(struct packet_manager *pm, enum kfd_queue_type type,
+- enum kfd_preempt_type_filter mode,
++ enum kfd_unmap_queues_filter filter,
+ uint32_t filter_param, bool reset,
+ unsigned int sdma_engine)
+ {
+@@ -494,8 +494,8 @@ int pm_send_unmap_queue(struct packet_manager *pm, enum kfd_queue_type type,
+
+ packet = (struct pm4_mes_unmap_queues *)buffer;
+ memset(buffer, 0, sizeof(struct pm4_mes_unmap_queues));
+- pr_debug("static_queue: unmapping queues: mode is %d , reset is %d , type is %d\n",
+- mode, reset, type);
++ pr_debug("static_queue: unmapping queues: filter is %d , reset is %d , type is %d\n",
++ filter, reset, type);
+ packet->header.u32All = build_pm4_header(IT_UNMAP_QUEUES,
+ sizeof(struct pm4_mes_unmap_queues));
+ switch (type) {
+@@ -521,29 +521,29 @@ int pm_send_unmap_queue(struct packet_manager *pm, enum kfd_queue_type type,
+ packet->bitfields2.action =
+ action__mes_unmap_queues__preempt_queues;
+
+- switch (mode) {
+- case KFD_PREEMPT_TYPE_FILTER_SINGLE_QUEUE:
++ switch (filter) {
++ case KFD_UNMAP_QUEUES_FILTER_SINGLE_QUEUE:
+ packet->bitfields2.queue_sel =
+ queue_sel__mes_unmap_queues__perform_request_on_specified_queues;
+ packet->bitfields2.num_queues = 1;
+ packet->bitfields3b.doorbell_offset0 = filter_param;
+ break;
+- case KFD_PREEMPT_TYPE_FILTER_BY_PASID:
++ case KFD_UNMAP_QUEUES_FILTER_BY_PASID:
+ packet->bitfields2.queue_sel =
+ queue_sel__mes_unmap_queues__perform_request_on_pasid_queues;
+ packet->bitfields3a.pasid = filter_param;
+ break;
+- case KFD_PREEMPT_TYPE_FILTER_ALL_QUEUES:
++ case KFD_UNMAP_QUEUES_FILTER_ALL_QUEUES:
+ packet->bitfields2.queue_sel =
+ queue_sel__mes_unmap_queues__unmap_all_queues;
+ break;
+- case KFD_PREEMPT_TYPE_FILTER_DYNAMIC_QUEUES:
++ case KFD_UNMAP_QUEUES_FILTER_DYNAMIC_QUEUES:
+ /* in this case, we do not preempt static queues */
+ packet->bitfields2.queue_sel =
+ queue_sel__mes_unmap_queues__unmap_all_non_static_queues;
+ break;
+ default:
+- WARN(1, "filter %d", mode);
++ WARN(1, "filter %d", filter);
+ retval = -EINVAL;
+ goto err_invalid;
+ }
+diff --git a/drivers/gpu/drm/amd/amdkfd/kfd_priv.h b/drivers/gpu/drm/amd/amdkfd/kfd_priv.h
+index 5ebe565..8af0d6f 100644
+--- a/drivers/gpu/drm/amd/amdkfd/kfd_priv.h
++++ b/drivers/gpu/drm/amd/amdkfd/kfd_priv.h
+@@ -222,22 +222,22 @@ void kfd_chardev_exit(void);
+ struct device *kfd_chardev(void);
+
+ /**
+- * enum kfd_preempt_type_filter
++ * enum kfd_unmap_queues_filter
+ *
+- * @KFD_PREEMPT_TYPE_FILTER_SINGLE_QUEUE: Preempts single queue.
++ * @KFD_UNMAP_QUEUES_FILTER_SINGLE_QUEUE: Preempts single queue.
+ *
+- * @KFD_PRERMPT_TYPE_FILTER_ALL_QUEUES: Preempts all queues in the
++ * @KFD_UNMAP_QUEUES_FILTER_ALL_QUEUES: Preempts all queues in the
+ * running queues list.
+ *
+- * @KFD_PRERMPT_TYPE_FILTER_BY_PASID: Preempts queues that belongs to
++ * @KFD_UNMAP_QUEUES_FILTER_BY_PASID: Preempts queues that belongs to
+ * specific process.
+ *
+ */
+-enum kfd_preempt_type_filter {
+- KFD_PREEMPT_TYPE_FILTER_SINGLE_QUEUE,
+- KFD_PREEMPT_TYPE_FILTER_ALL_QUEUES,
+- KFD_PREEMPT_TYPE_FILTER_DYNAMIC_QUEUES,
+- KFD_PREEMPT_TYPE_FILTER_BY_PASID
++enum kfd_unmap_queues_filter {
++ KFD_UNMAP_QUEUES_FILTER_SINGLE_QUEUE,
++ KFD_UNMAP_QUEUES_FILTER_ALL_QUEUES,
++ KFD_UNMAP_QUEUES_FILTER_DYNAMIC_QUEUES,
++ KFD_UNMAP_QUEUES_FILTER_BY_PASID
+ };
+
+ /**
+@@ -700,7 +700,7 @@ int pm_send_query_status(struct packet_manager *pm, uint64_t fence_address,
+ uint32_t fence_value);
+
+ int pm_send_unmap_queue(struct packet_manager *pm, enum kfd_queue_type type,
+- enum kfd_preempt_type_filter mode,
++ enum kfd_unmap_queues_filter mode,
+ uint32_t filter_param, bool reset,
+ unsigned int sdma_engine);
+
+--
+2.7.4
+