Lines Matching refs:sem
39 static int amdgpu_cs_unreference_sem(amdgpu_semaphore_handle sem);
40 static int amdgpu_cs_reset_sem(amdgpu_semaphore_handle sem);
143 amdgpu_semaphore_handle sem, tmp;
144 LIST_FOR_EACH_ENTRY_SAFE(sem, tmp, &context->sem_list[i][j][k], list) {
145 list_del(&sem->list);
146 amdgpu_cs_reset_sem(sem);
147 amdgpu_cs_unreference_sem(sem);
263 amdgpu_semaphore_handle sem, tmp;
353 LIST_FOR_EACH_ENTRY(sem, sem_list, list)
362 LIST_FOR_EACH_ENTRY_SAFE(sem, tmp, sem_list, list) {
363 struct amdgpu_cs_fence *info = &sem->signal_fence;
371 list_del(&sem->list);
372 amdgpu_cs_reset_sem(sem);
373 amdgpu_cs_unreference_sem(sem);
578 drm_public int amdgpu_cs_create_semaphore(amdgpu_semaphore_handle *sem)
582 if (!sem)
590 *sem = gpu_semaphore;
599 amdgpu_semaphore_handle sem)
603 if (!ctx || !sem)
611 /* sem has been signaled */
612 if (sem->signal_fence.context) {
616 sem->signal_fence.context = ctx;
617 sem->signal_fence.ip_type = ip_type;
618 sem->signal_fence.ip_instance = ip_instance;
619 sem->signal_fence.ring = ring;
620 sem->signal_fence.fence = ctx->last_seq[ip_type][ip_instance][ring];
621 update_references(NULL, &sem->refcount);
632 amdgpu_semaphore_handle sem)
634 if (!ctx || !sem)
641 if (!sem->signal_fence.context)
645 list_add(&sem->list, &ctx->sem_list[ip_type][ip_instance][ring]);
650 static int amdgpu_cs_reset_sem(amdgpu_semaphore_handle sem)
652 if (!sem || !sem->signal_fence.context)
655 sem->signal_fence.context = NULL;
656 sem->signal_fence.ip_type = 0;
657 sem->signal_fence.ip_instance = 0;
658 sem->signal_fence.ring = 0;
659 sem->signal_fence.fence = 0;
664 static int amdgpu_cs_unreference_sem(amdgpu_semaphore_handle sem)
666 if (!sem)
669 if (update_references(&sem->refcount, NULL))
670 free(sem);
674 drm_public int amdgpu_cs_destroy_semaphore(amdgpu_semaphore_handle sem)
676 return amdgpu_cs_unreference_sem(sem);