Re: [Patch 4/7] softirq: Use hotplug thread infrastructure

From: Paul E. McKenney
Date: Sat Jul 21 2012 - 13:21:50 EST


On Mon, Jul 16, 2012 at 10:42:37AM -0000, Thomas Gleixner wrote:
> Signed-off-by: Thomas Gleixner <tglx@xxxxxxxxxxxxx>
> ---
> kernel/softirq.c | 107 +++++++++++++------------------------------------------
> 1 file changed, 26 insertions(+), 81 deletions(-)

This is also much more compact! One issue with fix below.

Thanx, Paul

[ . . . ]

> +static void run_ksoftirqd(unsigned int cpu)
> +{
> + local_irq_disable();
> + if (local_softirq_pending()) {
> + __do_softirq();
> + local_irq_enable();
> + cond_resched();
> + rcu_note_context_switch(cpu);

The rcu_note_context_switch() function must run with preemption disabled.
I fixed this as follows:

+static void run_ksoftirqd(unsigned int cpu)
+{
+ local_irq_disable();
+ if (local_softirq_pending()) {
+ __do_softirq();
+ rcu_note_context_switch(cpu);
+ local_irq_enable();
+ cond_resched();
+ return;
}

Again, I also placed the updated series on -rcu at branch rcu/smp/hotplug
(git://git.kernel.org/pub/scm/linux/kernel/git/paulmck/linux-rcu.git),
based on tip/smp/hotplug, for Linaro testing purposes.

With these two changes, this series merged with Tejun's workqueue
hotplug changes merged with my -rcu tree passed moderate rcutorture
and hotplug testing, with the exception of some apparently unrelated
build problems in UP configuration:

warning: call to âcopy_from_user_overflowâ declared with attribute warning: copy_from_user() buffer size is not provably correct [enabled by default

I have a fix for an earlier occurrence of this problem that I will try next.

Thanx, Paul

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/