Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

amdkfd: remove DIQ support

This commit remove DIQ support because it has been
marked as DEPRECATED since 2022

Signed-off-by: Zhu Lingshan <lingshan.zhu@amd.com>
Reviewed-by: Felix Kuehling <felix.kuehling@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>

authored by

Zhu Lingshan and committed by
Alex Deucher
e1b73b64 4eb38fc0

+5 -78
+2 -4
drivers/gpu/drm/amd/amdkfd/kfd_device_queue_manager.c
··· 400 400 struct queue *q) 401 401 { 402 402 dqm->active_queue_count++; 403 - if (q->properties.type == KFD_QUEUE_TYPE_COMPUTE || 404 - q->properties.type == KFD_QUEUE_TYPE_DIQ) 403 + if (q->properties.type == KFD_QUEUE_TYPE_COMPUTE) 405 404 dqm->active_cp_queue_count++; 406 405 407 406 if (q->properties.is_gws) { ··· 414 415 struct queue *q) 415 416 { 416 417 dqm->active_queue_count--; 417 - if (q->properties.type == KFD_QUEUE_TYPE_COMPUTE || 418 - q->properties.type == KFD_QUEUE_TYPE_DIQ) 418 + if (q->properties.type == KFD_QUEUE_TYPE_COMPUTE) 419 419 dqm->active_cp_queue_count--; 420 420 421 421 if (q->properties.is_gws) {
+1 -28
drivers/gpu/drm/amd/amdkfd/kfd_kernel_queue.c
··· 57 57 58 58 kq->dev = dev; 59 59 kq->nop_packet = nop.u32all; 60 - switch (type) { 61 - case KFD_QUEUE_TYPE_DIQ: 62 - kq->mqd_mgr = dev->dqm->mqd_mgrs[KFD_MQD_TYPE_DIQ]; 63 - break; 64 - case KFD_QUEUE_TYPE_HIQ: 65 - kq->mqd_mgr = dev->dqm->mqd_mgrs[KFD_MQD_TYPE_HIQ]; 66 - break; 67 - default: 68 - WARN(1, "Invalid queue type %d\n", type); 69 - dev_err(dev->adev->dev, "Invalid queue type %d\n", type); 70 - return false; 71 - } 72 - 60 + kq->mqd_mgr = dev->dqm->mqd_mgrs[KFD_MQD_TYPE_HIQ]; 73 61 if (!kq->mqd_mgr) 74 62 return false; 75 63 ··· 147 159 kq->mqd_mgr->load_mqd(kq->mqd_mgr, kq->queue->mqd, 148 160 kq->queue->pipe, kq->queue->queue, 149 161 &kq->queue->properties, NULL); 150 - } else { 151 - /* allocate fence for DIQ */ 152 - 153 - retval = kfd_gtt_sa_allocate(dev, sizeof(uint32_t), 154 - &kq->fence_mem_obj); 155 - 156 - if (retval != 0) 157 - goto err_alloc_fence; 158 - 159 - kq->fence_kernel_address = kq->fence_mem_obj->cpu_ptr; 160 - kq->fence_gpu_addr = kq->fence_mem_obj->gpu_addr; 161 162 } 162 163 163 164 print_queue(kq->queue); 164 165 165 166 return true; 166 - err_alloc_fence: 167 - kq->mqd_mgr->free_mqd(kq->mqd_mgr, kq->queue->mqd, kq->queue->mqd_mem_obj); 168 167 err_allocate_mqd: 169 168 uninit_queue(kq->queue); 170 169 err_init_queue: ··· 181 206 kq->queue->queue); 182 207 up_read(&kq->dev->adev->reset_domain->sem); 183 208 } 184 - else if (kq->queue->properties.type == KFD_QUEUE_TYPE_DIQ) 185 - kfd_gtt_sa_free(kq->dev, kq->fence_mem_obj); 186 209 187 210 kq->mqd_mgr->free_mqd(kq->mqd_mgr, kq->queue->mqd, 188 211 kq->queue->mqd_mem_obj);
-4
drivers/gpu/drm/amd/amdkfd/kfd_packet_manager_v9.c
··· 252 252 packet->bitfields2.queue_type = 253 253 queue_type__mes_map_queues__normal_latency_static_queue_vi; 254 254 break; 255 - case KFD_QUEUE_TYPE_DIQ: 256 - packet->bitfields2.queue_type = 257 - queue_type__mes_map_queues__debug_interface_queue_vi; 258 - break; 259 255 case KFD_QUEUE_TYPE_SDMA: 260 256 case KFD_QUEUE_TYPE_SDMA_XGMI: 261 257 if (q->properties.sdma_engine_id < 2 &&
-4
drivers/gpu/drm/amd/amdkfd/kfd_packet_manager_vi.c
··· 166 166 packet->bitfields2.queue_type = 167 167 queue_type__mes_map_queues__normal_latency_static_queue_vi; 168 168 break; 169 - case KFD_QUEUE_TYPE_DIQ: 170 - packet->bitfields2.queue_type = 171 - queue_type__mes_map_queues__debug_interface_queue_vi; 172 - break; 173 169 case KFD_QUEUE_TYPE_SDMA: 174 170 case KFD_QUEUE_TYPE_SDMA_XGMI: 175 171 packet->bitfields2.engine_sel = q->properties.sdma_engine_id +
-1
drivers/gpu/drm/amd/amdkfd/kfd_priv.h
··· 433 433 KFD_QUEUE_TYPE_COMPUTE, 434 434 KFD_QUEUE_TYPE_SDMA, 435 435 KFD_QUEUE_TYPE_HIQ, 436 - KFD_QUEUE_TYPE_DIQ, 437 436 KFD_QUEUE_TYPE_SDMA_XGMI, 438 437 KFD_QUEUE_TYPE_SDMA_BY_ENG_ID 439 438 };
+2 -37
drivers/gpu/drm/amd/amdkfd/kfd_process_queue_manager.c
··· 345 345 * If we are just about to create DIQ, the is_debug flag is not set yet 346 346 * Hence we also check the type as well 347 347 */ 348 - if ((pdd->qpd.is_debug) || (type == KFD_QUEUE_TYPE_DIQ)) 348 + if (pdd->qpd.is_debug) 349 349 max_queues = dev->kfd->device_info.max_no_of_hqd/2; 350 350 351 351 if (pdd->qpd.queue_count >= max_queues) ··· 425 425 retval = dev->dqm->ops.create_queue(dev->dqm, q, &pdd->qpd, q_data, 426 426 restore_mqd, restore_ctl_stack); 427 427 print_queue(q); 428 - break; 429 - case KFD_QUEUE_TYPE_DIQ: 430 - kq = kernel_queue_init(dev, KFD_QUEUE_TYPE_DIQ); 431 - if (!kq) { 432 - retval = -ENOMEM; 433 - goto err_create_queue; 434 - } 435 - kq->queue->properties.queue_id = *qid; 436 - pqn->kq = kq; 437 - pqn->q = NULL; 438 - retval = kfd_process_drain_interrupts(pdd); 439 - if (retval) 440 - break; 441 - 442 - retval = dev->dqm->ops.create_kernel_queue(dev->dqm, 443 - kq, &pdd->qpd); 444 428 break; 445 429 default: 446 430 WARN(1, "Invalid queue type %d", type); ··· 1115 1131 break; 1116 1132 default: 1117 1133 seq_printf(m, 1118 - " Bad user queue type %d on device %x\n", 1134 + " Qeueu node with bad user queue type %d on device %x\n", 1119 1135 q->properties.type, q->device->id); 1120 1136 continue; 1121 1137 } 1122 1138 mqd_mgr = q->device->dqm->mqd_mgrs[mqd_type]; 1123 1139 size = mqd_mgr->mqd_stride(mqd_mgr, 1124 1140 &q->properties); 1125 - } else if (pqn->kq) { 1126 - q = pqn->kq->queue; 1127 - mqd_mgr = pqn->kq->mqd_mgr; 1128 - switch (q->properties.type) { 1129 - case KFD_QUEUE_TYPE_DIQ: 1130 - seq_printf(m, " DIQ on device %x\n", 1131 - pqn->kq->dev->id); 1132 - break; 1133 - default: 1134 - seq_printf(m, 1135 - " Bad kernel queue type %d on device %x\n", 1136 - q->properties.type, 1137 - pqn->kq->dev->id); 1138 - continue; 1139 - } 1140 - } else { 1141 - seq_printf(m, 1142 - " Weird: Queue node with neither kernel nor user queue\n"); 1143 - continue; 1144 1141 } 1145 1142 1146 1143 for (xcc = 0; xcc < num_xccs; xcc++) {