return -EINVAL;
memset(entity, 0, sizeof(struct amd_sched_entity));
- spin_lock_init(&entity->lock);
entity->belongto_rq = rq;
entity->scheduler = sched;
init_waitqueue_head(&entity->wait_queue);
- init_waitqueue_head(&entity->wait_emit);
entity->fence_context = fence_context_alloc(1);
snprintf(name, sizeof(name), "c_entity[%llu]", entity->fence_context);
memcpy(entity->name, name, 20);
msecs_to_jiffies(AMD_GPU_WAIT_IDLE_TIMEOUT_IN_MS)
) ? 0 : -1;
- if (r) {
- if (entity->is_pending)
- DRM_INFO("Entity %p is in waiting state during fini,\
- all pending ibs will be canceled.\n",
- entity);
- }
+ if (r)
+ DRM_INFO("Entity %p is in waiting state during fini\n",
+ entity);
amd_sched_rq_remove_entity(rq, entity);
kfifo_free(&entity->job_queue);
struct amd_sched_entity {
struct list_head list;
struct amd_sched_rq *belongto_rq;
- spinlock_t lock;
atomic_t fence_seq;
/* the job_queue maintains the jobs submitted by clients */
struct kfifo job_queue;
spinlock_t queue_lock;
struct amd_gpu_scheduler *scheduler;
wait_queue_head_t wait_queue;
- wait_queue_head_t wait_emit;
- bool is_pending;
uint64_t fence_context;
char name[20];
bool need_wakeup;