Messages in this thread | | | Date | Fri, 13 Apr 2012 14:55:12 +0300 (EEST) | From | mroos@linux ... | Subject | Re: suspicious RCU usage warnings in 3.3.0 |
| |
> sparc64: Eliminate obsolete __handle_softirq() function > > The invocation of softirq is now handled by irq_exit(), so there is no > need for sparc64 to invoke it on the trap-return path. In fact, doing so > is a bug because if the trap occurred in the idle loop, this invocation > can result in lockdep-RCU failures. The problem is that RCU ignores idle > CPUs, and the sparc64 trap-return path to the softirq handlers fails to > tell RCU that the CPU must be considered non-idle while those handlers > are executing. This means that RCU is ignoring any RCU read-side critical > sections in those handlers, which in turn means that RCU-protected data > can be yanked out from under those read-side critical sections. > > The shiny new lockdep-RCU ability to detect RCU read-side critical sections > that RCU is ignoring located this problem. > > The fix is straightforward: Make sparc64 stop manually invoking the > softirq handlers. > > Signed-off-by: Paul E. McKenney <paulmck@linux.vnet.ibm.com>
It works for me on Sun Fire V100 - no more RCU warnings under ping flood.
Tested-by: Meelis Roos <mroos@linux.ee>
-- Meelis Roos (mroos@linux.ee)
| |