Lines Matching defs:donor

916 	rq->donor->sched_class->task_tick(rq, rq->donor, 1);
2285 struct task_struct *donor = rq->donor;
2300 if (task_on_rq_queued(donor) && test_tsk_need_resched(rq->curr))
2969 * We are also done if the task is the current donor, boosting a lock-
3750 WARN_ON_ONCE(rq->donor == rq->curr);
3752 put_prev_set_next_task(rq, rq->donor, rq->curr);
3790 /* If we're return migrating the rq->donor, switch it out for idle */
5766 /* accounting goes to the donor task */
5767 struct task_struct *donor;
5778 donor = rq->donor;
5780 psi_account_irqtime(rq, donor, NULL);
5789 donor->sched_class->task_tick(rq, donor, 0);
5803 if (donor->flags & PF_WQ_WORKER)
5804 wq_worker_tick(donor);
5874 WARN_ON_ONCE(rq->curr != rq->donor);
6103 const struct sched_class *start_class = rq->donor->sched_class;
6141 if (likely(!sched_class_above(rq->donor->sched_class, &fair_sched_class) &&
6152 put_prev_set_next_task(rq, rq->donor, p);
6164 put_prev_set_next_task(rq, rq->donor, p);
6448 put_prev_set_next_task(rq, rq->donor, next);
6747 put_prev_set_next_task(rq, rq->donor, rq->idle);
6754 static void proxy_deactivate(struct rq *rq, struct task_struct *donor)
6756 unsigned long state = READ_ONCE(donor->__state);
6759 WARN_ON_ONCE(donor->blocked_on);
6761 * Because we got donor from pick_next_task(), it is *crucial*
6763 * As once we deactivate donor, donor->on_rq is set to zero,
6765 * another rq. So we cannot use *any* references to donor
6766 * after that point. So things like cfs_rq->curr or rq->donor
6770 block_task(rq, donor, state);
6822 * Since we are migrating a blocked donor, it could be rq->donor,
6825 * jumping in and grabbing the rq lock and referencing rq->donor
6829 * So call proxy_resched_idle() to drop the rq->donor references
6845 * Find runnable lock owner to proxy for mutex blocked donor
6871 find_proxy_task(struct rq *rq, struct task_struct *donor, struct rq_flags *rf)
6881 for (p = donor; p->is_blocked; p = owner) {
6979 * donor(owner) = current->blocked_donor;
7015 find_proxy_task(struct rq *rq, struct task_struct *donor, struct rq_flags *rf)
7018 return donor;
7152 struct task_struct *prev_donor = rq->donor;
7167 if (rq->donor == prev_donor && prev != next) {
7168 struct task_struct *donor = rq->donor;
7173 * donor: B B
7181 donor->sched_class->put_prev_task(rq, donor, donor);
7182 donor->sched_class->set_next_task(rq, donor, true);
7619 * @pi_task: donor task