aboutsummaryrefslogtreecommitdiffstats
path: root/kernel
diff options
context:
space:
mode:
authorFrederic Weisbecker <fweisbec@gmail.com>2012-07-11 14:26:30 -0400
committerFrederic Weisbecker <fweisbec@gmail.com>2012-09-26 09:44:04 -0400
commit2b1d5024e17be459aa6385763ca3faa8f01c52d9 (patch)
tree45d1ea5872eea69b7f0443086d98ddbcbc221b94 /kernel
parent9a0c6fef423528ba5b62aa31b29aabf689eb8f70 (diff)
rcu: Settle config for userspace extended quiescent state
Create a new config option under the RCU menu that put CPUs under RCU extended quiescent state (as in dynticks idle mode) when they run in userspace. This require some contribution from architectures to hook into kernel and userspace boundaries. 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>
Diffstat (limited to 'kernel')
-rw-r--r--kernel/rcutree.c5
1 files changed, 4 insertions, 1 deletions
diff --git a/kernel/rcutree.c b/kernel/rcutree.c
index 4138f59fa2f4..79fa2db1595b 100644
--- a/kernel/rcutree.c
+++ b/kernel/rcutree.c
@@ -400,6 +400,7 @@ void rcu_idle_enter(void)
400} 400}
401EXPORT_SYMBOL_GPL(rcu_idle_enter); 401EXPORT_SYMBOL_GPL(rcu_idle_enter);
402 402
403#ifdef CONFIG_RCU_USER_QS
403/** 404/**
404 * rcu_user_enter - inform RCU that we are resuming userspace. 405 * rcu_user_enter - inform RCU that we are resuming userspace.
405 * 406 *
@@ -424,7 +425,6 @@ void rcu_user_enter(void)
424 rcu_eqs_enter(1); 425 rcu_eqs_enter(1);
425} 426}
426 427
427
428/** 428/**
429 * rcu_user_enter_after_irq - inform RCU that we are going to resume userspace 429 * rcu_user_enter_after_irq - inform RCU that we are going to resume userspace
430 * after the current irq returns. 430 * after the current irq returns.
@@ -445,6 +445,7 @@ void rcu_user_enter_after_irq(void)
445 rdtp->dynticks_nesting = 1; 445 rdtp->dynticks_nesting = 1;
446 local_irq_restore(flags); 446 local_irq_restore(flags);
447} 447}
448#endif /* CONFIG_RCU_USER_QS */
448 449
449/** 450/**
450 * rcu_irq_exit - inform RCU that current CPU is exiting irq towards idle 451 * rcu_irq_exit - inform RCU that current CPU is exiting irq towards idle
@@ -548,6 +549,7 @@ void rcu_idle_exit(void)
548} 549}
549EXPORT_SYMBOL_GPL(rcu_idle_exit); 550EXPORT_SYMBOL_GPL(rcu_idle_exit);
550 551
552#ifdef CONFIG_RCU_USER_QS
551/** 553/**
552 * rcu_user_exit - inform RCU that we are exiting userspace. 554 * rcu_user_exit - inform RCU that we are exiting userspace.
553 * 555 *
@@ -591,6 +593,7 @@ void rcu_user_exit_after_irq(void)
591 rdtp->dynticks_nesting += DYNTICK_TASK_EXIT_IDLE; 593 rdtp->dynticks_nesting += DYNTICK_TASK_EXIT_IDLE;
592 local_irq_restore(flags); 594 local_irq_restore(flags);
593} 595}
596#endif /* CONFIG_RCU_USER_QS */
594 597
595/** 598/**
596 * rcu_irq_enter - inform RCU that current CPU is entering irq away from idle 599 * rcu_irq_enter - inform RCU that current CPU is entering irq away from idle