Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit b1264e3e authored by Linux Build Service Account's avatar Linux Build Service Account Committed by Gerrit - the friendly Code Review server
Browse files

Merge "sched/rt: Use container_of() to get root domain in rto_push_irq_work_func()"

parents 0f0d01b3 ba359d89
Loading
Loading
Loading
Loading
+8 −7
Original line number Original line Diff line number Diff line
@@ -2178,9 +2178,8 @@ static void push_rt_tasks(struct rq *rq)
 * the rt_loop_next will cause the iterator to perform another scan.
 * the rt_loop_next will cause the iterator to perform another scan.
 *
 *
 */
 */
static int rto_next_cpu(struct rq *rq)
static int rto_next_cpu(struct root_domain *rd)
{
{
	struct root_domain *rd = rq->rd;
	int next;
	int next;
	int cpu;
	int cpu;


@@ -2256,7 +2255,7 @@ static void tell_cpu_to_push(struct rq *rq)
	 * Otherwise it is finishing up and an ipi needs to be sent.
	 * Otherwise it is finishing up and an ipi needs to be sent.
	 */
	 */
	if (rq->rd->rto_cpu < 0)
	if (rq->rd->rto_cpu < 0)
		cpu = rto_next_cpu(rq);
		cpu = rto_next_cpu(rq->rd);


	raw_spin_unlock(&rq->rd->rto_lock);
	raw_spin_unlock(&rq->rd->rto_lock);


@@ -2269,6 +2268,8 @@ static void tell_cpu_to_push(struct rq *rq)
/* Called from hardirq context */
/* Called from hardirq context */
void rto_push_irq_work_func(struct irq_work *work)
void rto_push_irq_work_func(struct irq_work *work)
{
{
	struct root_domain *rd =
		container_of(work, struct root_domain, rto_push_work);
	struct rq *rq;
	struct rq *rq;
	int cpu;
	int cpu;


@@ -2284,18 +2285,18 @@ void rto_push_irq_work_func(struct irq_work *work)
		raw_spin_unlock(&rq->lock);
		raw_spin_unlock(&rq->lock);
	}
	}


	raw_spin_lock(&rq->rd->rto_lock);
	raw_spin_lock(&rd->rto_lock);


	/* Pass the IPI to the next rt overloaded queue */
	/* Pass the IPI to the next rt overloaded queue */
	cpu = rto_next_cpu(rq);
	cpu = rto_next_cpu(rd);


	raw_spin_unlock(&rq->rd->rto_lock);
	raw_spin_unlock(&rd->rto_lock);


	if (cpu < 0)
	if (cpu < 0)
		return;
		return;


	/* Try the next RT overloaded CPU */
	/* Try the next RT overloaded CPU */
	irq_work_queue_on(&rq->rd->rto_push_work, cpu);
	irq_work_queue_on(&rd->rto_push_work, cpu);
}
}
#endif /* HAVE_RT_PUSH_IPI */
#endif /* HAVE_RT_PUSH_IPI */