linux/arch/mips/kernel
Frederic Weisbecker 2bbb6817c0 nohz: Allow rcu extended quiescent state handling seperately from tick stop
It is assumed that rcu won't be used once we switch to tickless
mode and until we restart the tick. However this is not always
true, as in x86-64 where we dereference the idle notifiers after
the tick is stopped.

To prepare for fixing this, add two new APIs:
tick_nohz_idle_enter_norcu() and tick_nohz_idle_exit_norcu().

If no use of RCU is made in the idle loop between
tick_nohz_enter_idle() and tick_nohz_exit_idle() calls, the arch
must instead call the new *_norcu() version such that the arch doesn't
need to call rcu_idle_enter() and rcu_idle_exit().

Otherwise the arch must call tick_nohz_enter_idle() and
tick_nohz_exit_idle() and also call explicitly:

- rcu_idle_enter() after its last use of RCU before the CPU is put
to sleep.
- rcu_idle_exit() before the first use of RCU after the CPU is woken
up.

Signed-off-by: Frederic Weisbecker <fweisbec@gmail.com>
Cc: Mike Frysinger <vapier@gentoo.org>
Cc: Guan Xuetao <gxt@mprc.pku.edu.cn>
Cc: David Miller <davem@davemloft.net>
Cc: Chris Metcalf <cmetcalf@tilera.com>
Cc: Hans-Christian Egtvedt <hans-christian.egtvedt@atmel.com>
Cc: Ralf Baechle <ralf@linux-mips.org>
Cc: Paul E. McKenney <paulmck@linux.vnet.ibm.com>
Cc: Ingo Molnar <mingo@redhat.com>
Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
Cc: Thomas Gleixner <tglx@linutronix.de>
Cc: H. Peter Anvin <hpa@zytor.com>
Cc: Russell King <linux@arm.linux.org.uk>
Cc: Paul Mackerras <paulus@samba.org>
Cc: Heiko Carstens <heiko.carstens@de.ibm.com>
Cc: Paul Mundt <lethal@linux-sh.org>
Signed-off-by: Paul E. McKenney <paulmck@linux.vnet.ibm.com>
2011-12-11 10:31:36 -08:00
..
cpufreq MIPS: errloongson2_clock: Fix build error by including linux/module.h 2011-11-10 17:59:45 +00:00
.gitignore
8250-platform.c mips: remove needless include of module.h from core kernel files. 2011-10-31 19:30:57 -04:00
asm-offsets.c MIPS: Remove unused task_struct.trap_no field. 2010-08-05 13:26:30 +01:00
binfmt_elfn32.c
binfmt_elfo32.c
branch.c MIPS: Sanitize restart logics 2010-10-18 16:59:02 +01:00
cevt-bcm1480.c MIPS: Add missing #inclusions of <linux/irq.h> 2010-10-07 14:08:54 +01:00
cevt-ds1287.c MIPS: Add missing #inclusions of <linux/irq.h> 2010-10-07 14:08:54 +01:00
cevt-gt641xx.c MIPS: Add missing #inclusions of <linux/irq.h> 2010-10-07 14:08:54 +01:00
cevt-r4k.c MIPS: Kernel hangs occasionally during boot. 2011-11-08 17:59:22 +00:00
cevt-sb1250.c MIPS: Add missing #inclusions of <linux/irq.h> 2010-10-07 14:08:54 +01:00
cevt-smtc.c MIPS: Add missing #inclusions of <linux/irq.h> 2010-10-07 14:08:54 +01:00
cevt-txx9.c mips: convert to clocksource_register_hz/khz 2011-02-21 13:33:50 -08:00
cpu-bugs64.c Fix common misspellings 2011-03-31 11:26:23 -03:00
cpu-probe.c Merge branch 'modsplit-Oct31_2011' of git://git.kernel.org/pub/scm/linux/kernel/git/paulg/linux 2011-11-06 19:44:47 -08:00
csrc-bcm1480.c mips: convert to clocksource_register_hz/khz 2011-02-21 13:33:50 -08:00
csrc-ioasic.c mips: convert to clocksource_register_hz/khz 2011-02-21 13:33:50 -08:00
csrc-powertv.c mips: convert to clocksource_register_hz/khz 2011-02-21 13:33:50 -08:00
csrc-r4k.c mips: convert to clocksource_register_hz/khz 2011-02-21 13:33:50 -08:00
csrc-sb1250.c mips: convert to clocksource_register_hz/khz 2011-02-21 13:33:50 -08:00
early_printk.c
entry.S MIPS: Split do_syscall_trace into two functions. 2011-05-19 09:55:44 +01:00
ftrace.c MIPS: Ftrace: Fix the CONFIG_DYNAMIC_FTRACE=n compile 2011-09-21 17:52:04 +02:00
genex.S
gpio_txx9.c
head.S
i8253.c mips: migrate core kernel file from module.h --> export.h 2011-10-31 19:30:56 -04:00
i8259.c MIPS: i8259: Mark cascade interrupt non-threaded 2011-09-21 17:52:28 +02:00
init_task.c mips: migrate core kernel file from module.h --> export.h 2011-10-31 19:30:56 -04:00
irq_cpu.c MIPS: Install handlers for software IRQs 2011-07-25 17:26:54 +01:00
irq_txx9.c MIPS: Convert the irq functions to the new names 2011-03-29 14:48:07 +02:00
irq-gic.c MIPS: Convert the irq functions to the new names 2011-03-29 14:48:07 +02:00
irq-gt641xx.c MIPS: Convert the irq functions to the new names 2011-03-29 14:48:07 +02:00
irq-msc01.c mips: remove needless include of module.h from core kernel files. 2011-10-31 19:30:57 -04:00
irq-rm7000.c MIPS: Convert the irq functions to the new names 2011-03-29 14:48:07 +02:00
irq-rm9000.c MIPS: Convert the irq functions to the new names 2011-03-29 14:48:07 +02:00
irq.c mips: remove needless include of module.h from core kernel files. 2011-10-31 19:30:57 -04:00
jump_label.c MIPS: jump label: Add MIPS support. 2011-01-18 19:30:24 +01:00
kgdb.c MIPS: Fix a typo. 2010-10-04 18:33:54 +01:00
kprobes.c MIPS: kprobe: Add support. 2010-08-05 13:26:29 +01:00
kspd.c MIPS: kspd: Adjust confusing if indentation 2010-10-04 18:33:54 +01:00
linux32.c MIPS: Compat: Use 32-bit wrapper for compat_sys_futex. 2011-09-21 17:53:44 +02:00
machine_kexec.c
Makefile MIPS: perf: Reorganize contents of perf support files. 2011-10-24 23:34:26 +01:00
mcount.S MIPS: tracing: Fix the indentation of mcount.S 2010-08-05 13:26:06 +01:00
mips_ksyms.c mips: migrate core kernel file from module.h --> export.h 2011-10-31 19:30:56 -04:00
mips_machine.c MIPS: Add generic support for multiple machines within a single kernel 2011-01-18 19:30:21 +01:00
mips-mt-fpaff.c MIPS: MT: Fix build error iFPU affinity code 2010-10-25 08:12:27 -07:00
mips-mt.c mips: migrate core kernel file from module.h --> export.h 2011-10-31 19:30:56 -04:00
module.c mips: remove needless include of module.h from core kernel files. 2011-10-31 19:30:57 -04:00
octeon_switch.S update David Miller's old email address 2011-04-06 06:19:38 -07:00
perf_event_mipsxx.c perf: Don't use -ENOSPC for out of PMU resources 2011-11-14 13:01:24 +01:00
perf_event.c MIPS: perf: Reorganize contents of perf support files. 2011-10-24 23:34:26 +01:00
proc.c MIPS: Probe for presence of KScratch registers. 2011-01-18 19:30:22 +01:00
process.c nohz: Allow rcu extended quiescent state handling seperately from tick stop 2011-12-11 10:31:36 -08:00
prom.c mips: migrate core kernel file from module.h --> export.h 2011-10-31 19:30:56 -04:00
ptrace32.c
ptrace.c MIPS: Split do_syscall_trace into two functions. 2011-05-19 09:55:44 +01:00
r4k_fpu.S update David Miller's old email address 2011-04-06 06:19:38 -07:00
r4k_switch.S update David Miller's old email address 2011-04-06 06:19:38 -07:00
r2300_fpu.S update David Miller's old email address 2011-04-06 06:19:38 -07:00
r2300_switch.S update David Miller's old email address 2011-04-06 06:19:38 -07:00
r6000_fpu.S update David Miller's old email address 2011-04-06 06:19:38 -07:00
relocate_kernel.S
reset.c mips: migrate core kernel file from module.h --> export.h 2011-10-31 19:30:56 -04:00
rtlx.c mips: remove needless include of module.h from core kernel files. 2011-10-31 19:30:57 -04:00
scall32-o32.S MIPS: Hook up process_vm_readv and process_vm_writev system calls. 2011-11-09 00:07:56 +00:00
scall64-64.S MIPS: Hook up process_vm_readv and process_vm_writev system calls. 2011-11-09 00:07:56 +00:00
scall64-n32.S MIPS: Hook up process_vm_readv and process_vm_writev system calls. 2011-11-09 00:07:56 +00:00
scall64-o32.S MIPS: Hook up process_vm_readv and process_vm_writev system calls. 2011-11-09 00:07:56 +00:00
setup.c mips: migrate core kernel file from module.h --> export.h 2011-10-31 19:30:56 -04:00
signal32.c MIPS: Fix GCC-4.6 'set but not used' warning in signal*.c 2011-03-14 21:07:25 +01:00
signal_n32.c MIPS: do_sigaltstack() expects userland pointers 2010-10-18 16:59:03 +01:00
signal-common.h MIPS: Move signal trampolines off of the stack. 2010-04-12 17:26:15 +01:00
signal.c MIPS: Handle __put_user() sleeping. 2011-09-21 17:52:38 +02:00
smp-cmp.c atomic: use <linux/atomic.h> 2011-07-26 16:49:47 -07:00
smp-mt.c atomic: use <linux/atomic.h> 2011-07-26 16:49:47 -07:00
smp-up.c
smp.c atomic: use <linux/atomic.h> 2011-07-26 16:49:47 -07:00
smtc-asm.S
smtc-proc.c atomic: use <linux/atomic.h> 2011-07-26 16:49:47 -07:00
smtc.c atomic: use <linux/atomic.h> 2011-07-26 16:49:47 -07:00
spinlock_test.c mips: migrate core kernel file from module.h --> export.h 2011-10-31 19:30:56 -04:00
spram.c
stacktrace.c mips: migrate core kernel file from module.h --> export.h 2011-10-31 19:30:56 -04:00
sync-r4k.c atomic: use <linux/atomic.h> 2011-07-26 16:49:47 -07:00
syscall.c MIPS: Move arch_get_unmapped_area and gang to new file. 2011-05-19 09:55:49 +01:00
time.c mips: migrate core kernel file from module.h --> export.h 2011-10-31 19:30:56 -04:00
topology.c
traps.c MIPS: ASID conflict after CPU hotplug 2011-11-10 17:59:45 +00:00
unaligned.c mips: remove needless include of module.h from core kernel files. 2011-10-31 19:30:57 -04:00
vdso.c MIPS: Make init_vdso a subsys_initcall. 2010-07-26 19:08:16 +01:00
vmlinux.lds.S Merge branch 'for-2.6.40' of git://git.kernel.org/pub/scm/linux/kernel/git/tj/percpu 2011-05-24 11:53:42 -07:00
vpe.c mips: remove needless include of module.h from core kernel files. 2011-10-31 19:30:57 -04:00
watch.c