linux/arch
Frederic Weisbecker edf55fda35 x86: Exit RCU extended QS on notify resume
do_notify_resume() may be called on irq or exception
exit. But at that time the exception has already called
rcu_user_enter() and the irq has already called rcu_irq_exit().

Since it can use RCU read side critical section, we must call
rcu_user_exit() before doing anything there. Then we must call
back rcu_user_enter() after this function because we know we are
going to userspace from there.

This complete support for userspace RCU extended quiescent state
in x86-64.

Signed-off-by: Frederic Weisbecker <fweisbec@gmail.com>
Cc: Alessio Igor Bogani <abogani@kernel.org>
Cc: Andrew Morton <akpm@linux-foundation.org>
Cc: Avi Kivity <avi@redhat.com>
Cc: Chris Metcalf <cmetcalf@tilera.com>
Cc: Christoph Lameter <cl@linux.com>
Cc: Geoff Levand <geoff@infradead.org>
Cc: Gilad Ben Yossef <gilad@benyossef.com>
Cc: Hakan Akkan <hakanakkan@gmail.com>
Cc: H. Peter Anvin <hpa@zytor.com>
Cc: Ingo Molnar <mingo@kernel.org>
Cc: Josh Triplett <josh@joshtriplett.org>
Cc: Kevin Hilman <khilman@ti.com>
Cc: Max Krasnyansky <maxk@qualcomm.com>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Stephen Hemminger <shemminger@vyatta.com>
Cc: Steven Rostedt <rostedt@goodmis.org>
Cc: Sven-Thorsten Dietrich <thebigcorporation@gmail.com>
Cc: Thomas Gleixner <tglx@linutronix.de>
Signed-off-by: Paul E. McKenney <paulmck@linux.vnet.ibm.com>
Reviewed-by: Josh Triplett <josh@joshtriplett.org>
2012-09-26 15:47:14 +02:00
..
alpha alpha: Add missing RCU idle APIs on idle loop 2012-09-23 07:44:43 -07:00
arm Merge branch 'fixes' of git://git.linaro.org/people/rmk/linux-arm 2012-09-22 12:40:16 -07:00
avr32 ipc: use Kconfig options for __ARCH_WANT_[COMPAT_]IPC_PARSE_VERSION 2012-07-30 17:25:21 -07:00
blackfin Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/lliubbo/blackfin 2012-09-12 07:12:53 +08:00
c6x Enable atomic64 ops in C6X 2012-08-17 08:10:12 -07:00
cris cris: Add missing RCU idle APIs on idle loop 2012-09-23 07:44:44 -07:00
frv frv: Add missing RCU idle APIs on idle loop 2012-09-23 07:44:45 -07:00
h8300 h8300: Add missing RCU idle APIs on idle loop 2012-09-23 07:44:46 -07:00
hexagon Merge branch 'trivial' of git://git.kernel.org/pub/scm/linux/kernel/git/mmarek/kbuild 2012-07-30 11:24:53 -07:00
ia64 ia64: Add missing RCU idle APIs on idle loop 2012-09-23 07:44:52 -07:00
m32r m32r: Add missing RCU idle APIs on idle loop 2012-09-23 07:44:47 -07:00
m68k Merge remote-tracking branch 'tip/core/rcu' into next.2012.09.25b 2012-09-25 10:03:56 -07:00
microblaze Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/geert/linux-m68k 2012-08-03 10:52:41 -07:00
mips Merge branch 'upstream' of git://git.linux-mips.org/pub/scm/ralf/upstream-linus 2012-09-22 12:47:53 -07:00
mn10300 mn10300: Add missing RCU idle APIs on idle loop 2012-09-23 07:44:48 -07:00
openrisc Remove useless wrappers of asm-generic/rmap.h 2012-06-28 11:29:26 +02:00
parisc parisc: Add missing RCU idle APIs on idle loop 2012-09-23 07:44:49 -07:00
powerpc powerpc: Don't use __put_user() in patch_instruction 2012-09-05 16:05:23 +10:00
s390 Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/s390/linux 2012-09-21 12:10:17 -07:00
score score: Add missing RCU idle APIs on idle loop 2012-09-23 07:44:50 -07:00
sh sh: Fix up TIF_NOTIFY_RESUME sans TIF_SIGPENDING handling. 2012-09-18 17:04:37 +09:00
sparc sparc: fix the return value of module_alloc() 2012-09-21 12:14:20 -07:00
tile memcg: rename config variables 2012-07-31 18:42:43 -07:00
um rcu: Switch task's syscall hooks on context switch 2012-09-26 15:47:02 +02:00
unicore32 PCI changes for the 3.6 merge window: 2012-07-24 16:17:07 -07:00
x86 x86: Exit RCU extended QS on notify resume 2012-09-26 15:47:14 +02:00
xtensa xtensa: Add missing RCU idle APIs on idle loop 2012-09-23 07:44:51 -07:00
.gitignore
Kconfig rcu: Settle config for userspace extended quiescent state 2012-09-26 15:44:04 +02:00