Lines Matching refs:dst_rq
2378 struct rq *dst_rq) in scx_move_local_task_to_local_dsq() argument
2380 struct scx_dispatch_q *dst_dsq = scx_resolve_local_dsq(sch, dst_rq, p, &enq_flags); in scx_move_local_task_to_local_dsq()
2385 lockdep_assert_rq_held(dst_rq); in scx_move_local_task_to_local_dsq()
2397 rq_owned_post_enq(sch, dst_rq, dst_dsq, p, enq_flags); in scx_move_local_task_to_local_dsq()
2412 struct rq *src_rq, struct rq *dst_rq) in move_remote_task_to_local_dsq() argument
2420 p->scx.sticky_cpu = cpu_of(dst_rq); in move_remote_task_to_local_dsq()
2422 set_task_cpu(p, cpu_of(dst_rq)); in move_remote_task_to_local_dsq()
2424 switch_rq_lock(src_rq, dst_rq); in move_remote_task_to_local_dsq()
2432 WARN_ON_ONCE(!cpumask_test_cpu(cpu_of(dst_rq), p->cpus_ptr)); in move_remote_task_to_local_dsq()
2433 WARN_ON_ONCE(dst_rq->scx.remote_activate_enq_flags || in move_remote_task_to_local_dsq()
2434 dst_rq->scx.remote_activate_sch); in move_remote_task_to_local_dsq()
2435 dst_rq->scx.remote_activate_enq_flags = enq_flags; in move_remote_task_to_local_dsq()
2436 dst_rq->scx.remote_activate_sch = sch; in move_remote_task_to_local_dsq()
2437 activate_task(dst_rq, p, 0); in move_remote_task_to_local_dsq()
2438 dst_rq->scx.remote_activate_enq_flags = 0; in move_remote_task_to_local_dsq()
2439 dst_rq->scx.remote_activate_sch = NULL; in move_remote_task_to_local_dsq()
2605 struct rq *src_rq = task_rq(p), *dst_rq; in move_task_between_dsqs() local
2612 dst_rq = container_of(dst_dsq, struct rq, scx.local_dsq); in move_task_between_dsqs()
2613 if (src_rq != dst_rq && in move_task_between_dsqs()
2614 unlikely(!task_can_run_on_remote_rq(sch, p, dst_rq, true))) { in move_task_between_dsqs()
2616 dst_rq = src_rq; in move_task_between_dsqs()
2621 dst_rq = src_rq; in move_task_between_dsqs()
2630 if (src_rq == dst_rq) { in move_task_between_dsqs()
2632 scx_move_local_task_to_local_dsq(sch, p, enq_flags, src_dsq, dst_rq); in move_task_between_dsqs()
2636 move_remote_task_to_local_dsq(sch, p, enq_flags, src_rq, dst_rq); in move_task_between_dsqs()
2646 scx_dispatch_enqueue(sch, dst_rq, dst_dsq, p, 0, 0, enq_flags); in move_task_between_dsqs()
2649 return dst_rq; in move_task_between_dsqs()
2728 struct rq *dst_rq = container_of(dst_dsq, struct rq, scx.local_dsq); in dispatch_to_local_dsq() local
2737 if (rq == src_rq && rq == dst_rq) { in dispatch_to_local_dsq()
2774 if (src_rq == dst_rq) { in dispatch_to_local_dsq()
2776 scx_dispatch_enqueue(sch, dst_rq, &dst_rq->scx.local_dsq, p, in dispatch_to_local_dsq()
2778 } else if (unlikely(!task_can_run_on_remote_rq(sch, p, dst_rq, true))) { in dispatch_to_local_dsq()
2787 move_remote_task_to_local_dsq(sch, p, enq_flags, src_rq, dst_rq); in dispatch_to_local_dsq()
2789 locked_rq = dst_rq; in dispatch_to_local_dsq()
2793 if (!fallback && sched_class_above(p->sched_class, dst_rq->curr->sched_class)) in dispatch_to_local_dsq()
2794 resched_curr(dst_rq); in dispatch_to_local_dsq()