lkml.org 
[lkml]   [2011]   [Sep]   [17]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
/
From
Subject[PATCH 0/5 v3] rcu: Fix some rcu uses in extended quiescent state
Date
This is an updated set that tries to fix some illegal uses
of RCU that are made in extended quiescent state, ie: between
calls of rcu_enter_nohz() and rcu_exit_nohz().

Changes:

- Restructuring of the changes in nohz core code. We need to handle
the case when the tick is not stopped from tick_nohz_idle_enter() but
from the irq exit path when the irq happens in idle loop. This should
fix the RCU stall Paul detected after applying my patches.
The first patch sort of overlaps the simple scope of fixes for RCU
but I believe it makes the code slightly more simple and optimized
in the end.

- Rename tick_nohz_enter_idle() into tick_nohz_idle_enter() (same for
exit). That to stay coherent with usual naming (tips from Peterz on
the nohz cpuset patchset that needs similar changes).

- Remove the rcu_ext_qs parameter from tick_nohz_idle_exit(). We only
need it in tick_nohz_idle_enter() because as long as we call
rcu_enter_nohz() explicitly, we really want to pair it with an explicit
call to rcu_exit_nohz() (and vice versa), to avoid confusion.

There are still the powerpc fixes that are not included. But I would
like to first get this set merged in Paul's tree before focusing on
the powerpc reported issues.

Frederic Weisbecker (5):
nohz: Seperate out irq exit and idle loop dyntick logic
nohz: Allow rcu extended state handling seperately from tick stop
x86: Enter rcu extended qs after idle notifier call
x86: Call idle notifier after irq_enter()
rcu: Fix early call to rcu_irq_exit()

arch/arm/kernel/process.c | 4 +-
arch/avr32/kernel/process.c | 4 +-
arch/blackfin/kernel/process.c | 4 +-
arch/microblaze/kernel/process.c | 4 +-
arch/mips/kernel/process.c | 4 +-
arch/powerpc/kernel/idle.c | 4 +-
arch/powerpc/platforms/iseries/setup.c | 8 +-
arch/s390/kernel/process.c | 4 +-
arch/sh/kernel/idle.c | 4 +-
arch/sparc/kernel/process_64.c | 4 +-
arch/tile/kernel/process.c | 4 +-
arch/um/kernel/process.c | 4 +-
arch/unicore32/kernel/process.c | 4 +-
arch/x86/kernel/apic/apic.c | 6 +-
arch/x86/kernel/apic/io_apic.c | 2 +-
arch/x86/kernel/cpu/mcheck/mce.c | 2 +-
arch/x86/kernel/cpu/mcheck/therm_throt.c | 2 +-
arch/x86/kernel/cpu/mcheck/threshold.c | 2 +-
arch/x86/kernel/irq.c | 6 +-
arch/x86/kernel/process_32.c | 4 +-
arch/x86/kernel/process_64.c | 9 ++-
include/linux/tick.h | 12 ++-
kernel/softirq.c | 4 +-
kernel/time/tick-sched.c | 110 ++++++++++++++++++++----------
24 files changed, 131 insertions(+), 84 deletions(-)

--
1.7.5.4



\
 
 \ /
  Last update: 2011-09-17 16:43    [W:0.031 / U:0.116 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site