Lines Matching refs:pm

53 static void pm_calc_rlib_size(struct packet_manager *pm,  in pm_calc_rlib_size()  argument
59 BUG_ON(!pm || !rlib_size || !over_subscription); in pm_calc_rlib_size()
61 process_count = pm->dqm->processes_count; in pm_calc_rlib_size()
62 queue_count = pm->dqm->queue_count; in pm_calc_rlib_size()
86 static int pm_allocate_runlist_ib(struct packet_manager *pm, in pm_allocate_runlist_ib() argument
94 BUG_ON(!pm); in pm_allocate_runlist_ib()
95 BUG_ON(pm->allocated == true); in pm_allocate_runlist_ib()
98 pm_calc_rlib_size(pm, rl_buffer_size, is_over_subscription); in pm_allocate_runlist_ib()
100 retval = kfd_gtt_sa_allocate(pm->dqm->dev, *rl_buffer_size, in pm_allocate_runlist_ib()
101 &pm->ib_buffer_obj); in pm_allocate_runlist_ib()
108 *(void **)rl_buffer = pm->ib_buffer_obj->cpu_ptr; in pm_allocate_runlist_ib()
109 *rl_gpu_buffer = pm->ib_buffer_obj->gpu_addr; in pm_allocate_runlist_ib()
112 pm->allocated = true; in pm_allocate_runlist_ib()
116 static int pm_create_runlist(struct packet_manager *pm, uint32_t *buffer, in pm_create_runlist() argument
121 BUG_ON(!pm || !buffer || !ib); in pm_create_runlist()
139 static int pm_create_map_process(struct packet_manager *pm, uint32_t *buffer, in pm_create_map_process() argument
146 BUG_ON(!pm || !buffer || !qpd); in pm_create_map_process()
179 static int pm_create_map_queue(struct packet_manager *pm, uint32_t *buffer, in pm_create_map_queue() argument
184 BUG_ON(!pm || !buffer || !q); in pm_create_map_queue()
236 static int pm_create_runlist_ib(struct packet_manager *pm, in pm_create_runlist_ib() argument
250 BUG_ON(!pm || !queues || !rl_size_bytes || !rl_gpu_addr); in pm_create_runlist_ib()
254 retval = pm_allocate_runlist_ib(pm, &rl_buffer, rl_gpu_addr, in pm_create_runlist_ib()
263 pm->dqm->processes_count, pm->dqm->queue_count); in pm_create_runlist_ib()
269 if (proccesses_mapped >= pm->dqm->processes_count) { in pm_create_runlist_ib()
271 pm_release_ib(pm); in pm_create_runlist_ib()
274 retval = pm_create_map_process(pm, &rl_buffer[rl_wptr], qpd); in pm_create_runlist_ib()
284 retval = pm_create_map_queue(pm, &rl_buffer[rl_wptr], in pm_create_runlist_ib()
295 retval = pm_create_map_queue(pm, in pm_create_runlist_ib()
307 pm_create_runlist(pm, &rl_buffer[rl_wptr], *rl_gpu_addr, in pm_create_runlist_ib()
317 int pm_init(struct packet_manager *pm, struct device_queue_manager *dqm) in pm_init() argument
321 pm->dqm = dqm; in pm_init()
322 mutex_init(&pm->lock); in pm_init()
323 pm->priv_queue = kernel_queue_init(dqm->dev, KFD_QUEUE_TYPE_HIQ); in pm_init()
324 if (pm->priv_queue == NULL) { in pm_init()
325 mutex_destroy(&pm->lock); in pm_init()
328 pm->allocated = false; in pm_init()
333 void pm_uninit(struct packet_manager *pm) in pm_uninit() argument
335 BUG_ON(!pm); in pm_uninit()
337 mutex_destroy(&pm->lock); in pm_uninit()
338 kernel_queue_uninit(pm->priv_queue); in pm_uninit()
341 int pm_send_set_resources(struct packet_manager *pm, in pm_send_set_resources() argument
346 BUG_ON(!pm || !res); in pm_send_set_resources()
350 mutex_lock(&pm->lock); in pm_send_set_resources()
351 pm->priv_queue->ops.acquire_packet_buffer(pm->priv_queue, in pm_send_set_resources()
355 mutex_unlock(&pm->lock); in pm_send_set_resources()
378 pm->priv_queue->ops.submit_packet(pm->priv_queue); in pm_send_set_resources()
380 mutex_unlock(&pm->lock); in pm_send_set_resources()
385 int pm_send_runlist(struct packet_manager *pm, struct list_head *dqm_queues) in pm_send_runlist() argument
392 BUG_ON(!pm || !dqm_queues); in pm_send_runlist()
394 retval = pm_create_runlist_ib(pm, dqm_queues, &rl_gpu_ib_addr, in pm_send_runlist()
402 mutex_lock(&pm->lock); in pm_send_runlist()
404 retval = pm->priv_queue->ops.acquire_packet_buffer(pm->priv_queue, in pm_send_runlist()
409 retval = pm_create_runlist(pm, rl_buffer, rl_gpu_ib_addr, in pm_send_runlist()
414 pm->priv_queue->ops.submit_packet(pm->priv_queue); in pm_send_runlist()
416 mutex_unlock(&pm->lock); in pm_send_runlist()
421 pm->priv_queue->ops.rollback_packet(pm->priv_queue); in pm_send_runlist()
423 mutex_unlock(&pm->lock); in pm_send_runlist()
425 if (pm->allocated == true) in pm_send_runlist()
426 pm_release_ib(pm); in pm_send_runlist()
430 int pm_send_query_status(struct packet_manager *pm, uint64_t fence_address, in pm_send_query_status() argument
436 BUG_ON(!pm || !fence_address); in pm_send_query_status()
438 mutex_lock(&pm->lock); in pm_send_query_status()
439 retval = pm->priv_queue->ops.acquire_packet_buffer( in pm_send_query_status()
440 pm->priv_queue, in pm_send_query_status()
460 pm->priv_queue->ops.submit_packet(pm->priv_queue); in pm_send_query_status()
461 mutex_unlock(&pm->lock); in pm_send_query_status()
466 mutex_unlock(&pm->lock); in pm_send_query_status()
470 int pm_send_unmap_queue(struct packet_manager *pm, enum kfd_queue_type type, in pm_send_unmap_queue() argument
479 BUG_ON(!pm); in pm_send_unmap_queue()
481 mutex_lock(&pm->lock); in pm_send_unmap_queue()
482 retval = pm->priv_queue->ops.acquire_packet_buffer( in pm_send_unmap_queue()
483 pm->priv_queue, in pm_send_unmap_queue()
537 pm->priv_queue->ops.submit_packet(pm->priv_queue); in pm_send_unmap_queue()
539 mutex_unlock(&pm->lock); in pm_send_unmap_queue()
543 mutex_unlock(&pm->lock); in pm_send_unmap_queue()
547 void pm_release_ib(struct packet_manager *pm) in pm_release_ib() argument
549 BUG_ON(!pm); in pm_release_ib()
551 mutex_lock(&pm->lock); in pm_release_ib()
552 if (pm->allocated) { in pm_release_ib()
553 kfd_gtt_sa_free(pm->dqm->dev, pm->ib_buffer_obj); in pm_release_ib()
554 pm->allocated = false; in pm_release_ib()
556 mutex_unlock(&pm->lock); in pm_release_ib()