aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorYong Zhao <yong.zhao@amd.com>2017-09-27 00:09:48 -0400
committerOded Gabbay <oded.gabbay@gmail.com>2017-09-27 00:09:48 -0400
commit7da2bcf87617fb00386ce61024e1c84d045b4e4f (patch)
tree9fe0804000410c2bcb9757e5c66017596117fd56
parent58dcd5bfcf99c9222a825ca67a0ecbd75516ec3f (diff)
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>
-rw-r--r--drivers/gpu/drm/amd/amdkfd/kfd_device_queue_manager.c32
-rw-r--r--drivers/gpu/drm/amd/amdkfd/kfd_packet_manager.c18
-rw-r--r--drivers/gpu/drm/amd/amdkfd/kfd_priv.h20
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 471b34e58225..1995e0aa7fa3 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,
45 struct qcm_process_device *qpd); 45 struct qcm_process_device *qpd);
46 46
47static int execute_queues_cpsch(struct device_queue_manager *dqm, bool lock); 47static int execute_queues_cpsch(struct device_queue_manager *dqm, bool lock);
48static int destroy_queues_cpsch(struct device_queue_manager *dqm, 48static int unmap_queues_cpsch(struct device_queue_manager *dqm,
49 bool preempt_static_queues, bool lock); 49 bool static_queues_included, bool lock);
50 50
51static int create_sdma_queue_nocpsch(struct device_queue_manager *dqm, 51static int create_sdma_queue_nocpsch(struct device_queue_manager *dqm,
52 struct queue *q, 52 struct queue *q,
@@ -707,7 +707,7 @@ fail_packet_manager_init:
707 707
708static int stop_cpsch(struct device_queue_manager *dqm) 708static int stop_cpsch(struct device_queue_manager *dqm)
709{ 709{
710 destroy_queues_cpsch(dqm, true, true); 710 unmap_queues_cpsch(dqm, true, true);
711 711
712 kfd_gtt_sa_free(dqm->dev, dqm->fence_mem); 712 kfd_gtt_sa_free(dqm->dev, dqm->fence_mem);
713 pm_uninit(&dqm->packets); 713 pm_uninit(&dqm->packets);
@@ -750,7 +750,7 @@ static void destroy_kernel_queue_cpsch(struct device_queue_manager *dqm,
750{ 750{
751 mutex_lock(&dqm->lock); 751 mutex_lock(&dqm->lock);
752 /* here we actually preempt the DIQ */ 752 /* here we actually preempt the DIQ */
753 destroy_queues_cpsch(dqm, true, false); 753 unmap_queues_cpsch(dqm, true, false);
754 list_del(&kq->list); 754 list_del(&kq->list);
755 dqm->queue_count--; 755 dqm->queue_count--;
756 qpd->is_debug = false; 756 qpd->is_debug = false;
@@ -849,19 +849,19 @@ int amdkfd_fence_wait_timeout(unsigned int *fence_addr,
849 return 0; 849 return 0;
850} 850}
851 851
852static int destroy_sdma_queues(struct device_queue_manager *dqm, 852static int unmap_sdma_queues(struct device_queue_manager *dqm,
853 unsigned int sdma_engine) 853 unsigned int sdma_engine)
854{ 854{
855 return pm_send_unmap_queue(&dqm->packets, KFD_QUEUE_TYPE_SDMA, 855 return pm_send_unmap_queue(&dqm->packets, KFD_QUEUE_TYPE_SDMA,
856 KFD_PREEMPT_TYPE_FILTER_DYNAMIC_QUEUES, 0, false, 856 KFD_UNMAP_QUEUES_FILTER_DYNAMIC_QUEUES, 0, false,
857 sdma_engine); 857 sdma_engine);
858} 858}
859 859
860static int destroy_queues_cpsch(struct device_queue_manager *dqm, 860static int unmap_queues_cpsch(struct device_queue_manager *dqm,
861 bool preempt_static_queues, bool lock) 861 bool static_queues_included, bool lock)
862{ 862{
863 int retval; 863 int retval;
864 enum kfd_preempt_type_filter preempt_type; 864 enum kfd_unmap_queues_filter filter;
865 struct kfd_process_device *pdd; 865 struct kfd_process_device *pdd;
866 866
867 retval = 0; 867 retval = 0;
@@ -875,16 +875,16 @@ static int destroy_queues_cpsch(struct device_queue_manager *dqm,
875 dqm->sdma_queue_count); 875 dqm->sdma_queue_count);
876 876
877 if (dqm->sdma_queue_count > 0) { 877 if (dqm->sdma_queue_count > 0) {
878 destroy_sdma_queues(dqm, 0); 878 unmap_sdma_queues(dqm, 0);
879 destroy_sdma_queues(dqm, 1); 879 unmap_sdma_queues(dqm, 1);
880 } 880 }
881 881
882 preempt_type = preempt_static_queues ? 882 filter = static_queues_included ?
883 KFD_PREEMPT_TYPE_FILTER_ALL_QUEUES : 883 KFD_UNMAP_QUEUES_FILTER_ALL_QUEUES :
884 KFD_PREEMPT_TYPE_FILTER_DYNAMIC_QUEUES; 884 KFD_UNMAP_QUEUES_FILTER_DYNAMIC_QUEUES;
885 885
886 retval = pm_send_unmap_queue(&dqm->packets, KFD_QUEUE_TYPE_COMPUTE, 886 retval = pm_send_unmap_queue(&dqm->packets, KFD_QUEUE_TYPE_COMPUTE,
887 preempt_type, 0, false, 0); 887 filter, 0, false, 0);
888 if (retval) 888 if (retval)
889 goto out; 889 goto out;
890 890
@@ -916,7 +916,7 @@ static int execute_queues_cpsch(struct device_queue_manager *dqm, bool lock)
916 if (lock) 916 if (lock)
917 mutex_lock(&dqm->lock); 917 mutex_lock(&dqm->lock);
918 918
919 retval = destroy_queues_cpsch(dqm, false, false); 919 retval = unmap_queues_cpsch(dqm, false, false);
920 if (retval) { 920 if (retval) {
921 pr_err("The cp might be in an unrecoverable state due to an unsuccessful queues preemption"); 921 pr_err("The cp might be in an unrecoverable state due to an unsuccessful queues preemption");
922 goto out; 922 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 9eda884d8d48..e5a15babb4f3 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 @@ fail_acquire_packet_buffer:
476} 476}
477 477
478int pm_send_unmap_queue(struct packet_manager *pm, enum kfd_queue_type type, 478int pm_send_unmap_queue(struct packet_manager *pm, enum kfd_queue_type type,
479 enum kfd_preempt_type_filter mode, 479 enum kfd_unmap_queues_filter filter,
480 uint32_t filter_param, bool reset, 480 uint32_t filter_param, bool reset,
481 unsigned int sdma_engine) 481 unsigned int sdma_engine)
482{ 482{
@@ -494,8 +494,8 @@ int pm_send_unmap_queue(struct packet_manager *pm, enum kfd_queue_type type,
494 494
495 packet = (struct pm4_mes_unmap_queues *)buffer; 495 packet = (struct pm4_mes_unmap_queues *)buffer;
496 memset(buffer, 0, sizeof(struct pm4_mes_unmap_queues)); 496 memset(buffer, 0, sizeof(struct pm4_mes_unmap_queues));
497 pr_debug("static_queue: unmapping queues: mode is %d , reset is %d , type is %d\n", 497 pr_debug("static_queue: unmapping queues: filter is %d , reset is %d , type is %d\n",
498 mode, reset, type); 498 filter, reset, type);
499 packet->header.u32All = build_pm4_header(IT_UNMAP_QUEUES, 499 packet->header.u32All = build_pm4_header(IT_UNMAP_QUEUES,
500 sizeof(struct pm4_mes_unmap_queues)); 500 sizeof(struct pm4_mes_unmap_queues));
501 switch (type) { 501 switch (type) {
@@ -521,29 +521,29 @@ int pm_send_unmap_queue(struct packet_manager *pm, enum kfd_queue_type type,
521 packet->bitfields2.action = 521 packet->bitfields2.action =
522 action__mes_unmap_queues__preempt_queues; 522 action__mes_unmap_queues__preempt_queues;
523 523
524 switch (mode) { 524 switch (filter) {
525 case KFD_PREEMPT_TYPE_FILTER_SINGLE_QUEUE: 525 case KFD_UNMAP_QUEUES_FILTER_SINGLE_QUEUE:
526 packet->bitfields2.queue_sel = 526 packet->bitfields2.queue_sel =
527 queue_sel__mes_unmap_queues__perform_request_on_specified_queues; 527 queue_sel__mes_unmap_queues__perform_request_on_specified_queues;
528 packet->bitfields2.num_queues = 1; 528 packet->bitfields2.num_queues = 1;
529 packet->bitfields3b.doorbell_offset0 = filter_param; 529 packet->bitfields3b.doorbell_offset0 = filter_param;
530 break; 530 break;
531 case KFD_PREEMPT_TYPE_FILTER_BY_PASID: 531 case KFD_UNMAP_QUEUES_FILTER_BY_PASID:
532 packet->bitfields2.queue_sel = 532 packet->bitfields2.queue_sel =
533 queue_sel__mes_unmap_queues__perform_request_on_pasid_queues; 533 queue_sel__mes_unmap_queues__perform_request_on_pasid_queues;
534 packet->bitfields3a.pasid = filter_param; 534 packet->bitfields3a.pasid = filter_param;
535 break; 535 break;
536 case KFD_PREEMPT_TYPE_FILTER_ALL_QUEUES: 536 case KFD_UNMAP_QUEUES_FILTER_ALL_QUEUES:
537 packet->bitfields2.queue_sel = 537 packet->bitfields2.queue_sel =
538 queue_sel__mes_unmap_queues__unmap_all_queues; 538 queue_sel__mes_unmap_queues__unmap_all_queues;
539 break; 539 break;
540 case KFD_PREEMPT_TYPE_FILTER_DYNAMIC_QUEUES: 540 case KFD_UNMAP_QUEUES_FILTER_DYNAMIC_QUEUES:
541 /* in this case, we do not preempt static queues */ 541 /* in this case, we do not preempt static queues */
542 packet->bitfields2.queue_sel = 542 packet->bitfields2.queue_sel =
543 queue_sel__mes_unmap_queues__unmap_all_non_static_queues; 543 queue_sel__mes_unmap_queues__unmap_all_non_static_queues;
544 break; 544 break;
545 default: 545 default:
546 WARN(1, "filter %d", mode); 546 WARN(1, "filter %d", filter);
547 retval = -EINVAL; 547 retval = -EINVAL;
548 goto err_invalid; 548 goto err_invalid;
549 } 549 }
diff --git a/drivers/gpu/drm/amd/amdkfd/kfd_priv.h b/drivers/gpu/drm/amd/amdkfd/kfd_priv.h
index 5ebe565fecb3..8af0d6fe257a 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);
222struct device *kfd_chardev(void); 222struct device *kfd_chardev(void);
223 223
224/** 224/**
225 * enum kfd_preempt_type_filter 225 * enum kfd_unmap_queues_filter
226 * 226 *
227 * @KFD_PREEMPT_TYPE_FILTER_SINGLE_QUEUE: Preempts single queue. 227 * @KFD_UNMAP_QUEUES_FILTER_SINGLE_QUEUE: Preempts single queue.
228 * 228 *
229 * @KFD_PRERMPT_TYPE_FILTER_ALL_QUEUES: Preempts all queues in the 229 * @KFD_UNMAP_QUEUES_FILTER_ALL_QUEUES: Preempts all queues in the
230 * running queues list. 230 * running queues list.
231 * 231 *
232 * @KFD_PRERMPT_TYPE_FILTER_BY_PASID: Preempts queues that belongs to 232 * @KFD_UNMAP_QUEUES_FILTER_BY_PASID: Preempts queues that belongs to
233 * specific process. 233 * specific process.
234 * 234 *
235 */ 235 */
236enum kfd_preempt_type_filter { 236enum kfd_unmap_queues_filter {
237 KFD_PREEMPT_TYPE_FILTER_SINGLE_QUEUE, 237 KFD_UNMAP_QUEUES_FILTER_SINGLE_QUEUE,
238 KFD_PREEMPT_TYPE_FILTER_ALL_QUEUES, 238 KFD_UNMAP_QUEUES_FILTER_ALL_QUEUES,
239 KFD_PREEMPT_TYPE_FILTER_DYNAMIC_QUEUES, 239 KFD_UNMAP_QUEUES_FILTER_DYNAMIC_QUEUES,
240 KFD_PREEMPT_TYPE_FILTER_BY_PASID 240 KFD_UNMAP_QUEUES_FILTER_BY_PASID
241}; 241};
242 242
243/** 243/**
@@ -700,7 +700,7 @@ int pm_send_query_status(struct packet_manager *pm, uint64_t fence_address,
700 uint32_t fence_value); 700 uint32_t fence_value);
701 701
702int pm_send_unmap_queue(struct packet_manager *pm, enum kfd_queue_type type, 702int pm_send_unmap_queue(struct packet_manager *pm, enum kfd_queue_type type,
703 enum kfd_preempt_type_filter mode, 703 enum kfd_unmap_queues_filter mode,
704 uint32_t filter_param, bool reset, 704 uint32_t filter_param, bool reset,
705 unsigned int sdma_engine); 705 unsigned int sdma_engine);
706 706