Lines Matching defs:task
159 static void cmdq_task_insert_into_thread(struct cmdq_task *task)
161 struct device *dev = task->cmdq->mbox.dev;
162 struct cmdq_thread *thread = task->thread;
164 &thread->task_busy_list, typeof(*task), list_entry);
167 /* let previous task jump to this task */
172 (task->pa_base >> task->cmdq->shift_pa);
184 static void cmdq_task_exec_done(struct cmdq_task *task, enum cmdq_cb_status sta)
186 struct cmdq_task_cb *cb = &task->pkt->async_cb;
194 list_del(&task->list_entry);
197 static void cmdq_task_handle_error(struct cmdq_task *task)
199 struct cmdq_thread *thread = task->thread;
201 struct cmdq *cmdq = task->cmdq;
203 dev_err(cmdq->mbox.dev, "task 0x%p error\n", task);
216 struct cmdq_task *task, *tmp, *curr_task = NULL;
225 * "release task" right before we acquire the spin lock, and thus
241 list_for_each_entry_safe(task, tmp, &thread->task_busy_list,
243 task_end_pa = task->pa_base + task->pkt->cmd_buf_size;
244 if (curr_pa >= task->pa_base && curr_pa < task_end_pa)
245 curr_task = task;
248 cmdq_task_exec_done(task, CMDQ_CB_NORMAL);
249 kfree(task);
251 cmdq_task_exec_done(task, CMDQ_CB_ERROR);
253 kfree(task);
305 dev_warn(dev, "exist running task(s) in suspend\n");
335 struct cmdq_task *task;
341 task = kzalloc(sizeof(*task), GFP_ATOMIC);
342 if (!task)
345 task->cmdq = cmdq;
346 INIT_LIST_HEAD(&task->list_entry);
347 task->pa_base = pkt->pa_base;
348 task->thread = thread;
349 task->pkt = pkt;
361 writel(task->pa_base >> cmdq->shift_pa,
363 writel((task->pa_base + pkt->cmd_buf_size) >> cmdq->shift_pa,
378 /* set to this task directly */
379 writel(task->pa_base >> cmdq->shift_pa,
382 cmdq_task_insert_into_thread(task);
385 writel((task->pa_base + pkt->cmd_buf_size) >> cmdq->shift_pa,
389 list_move_tail(&task->list_entry, &thread->task_busy_list);
403 struct cmdq_task *task, *tmp;
417 list_for_each_entry_safe(task, tmp, &thread->task_busy_list,
419 cmdq_task_exec_done(task, CMDQ_CB_ERROR);
420 kfree(task);
441 struct cmdq_task *task, *tmp;
453 list_for_each_entry_safe(task, tmp, &thread->task_busy_list,
455 cb = &task->pkt->async_cb;
461 list_del(&task->list_entry);
462 kfree(task);