Loading kernel/sched/rt.c +8 −7 Original line number Original line Diff line number Diff line Loading @@ -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; Loading Loading @@ -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); Loading @@ -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; Loading @@ -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 */ Loading Loading
kernel/sched/rt.c +8 −7 Original line number Original line Diff line number Diff line Loading @@ -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; Loading Loading @@ -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); Loading @@ -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; Loading @@ -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 */ Loading