diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2014-06-03 15:35:05 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2014-06-03 15:35:05 -0400 |
commit | 59a3d4c3631e553357b7305dc09db1990aa6757c (patch) | |
tree | 7c55a2447dc7175d8701c600e5536e4a18d8388b /kernel/rcu/tree.h | |
parent | ff806d034ef8e9a95ff0b0532104dd65332e446b (diff) | |
parent | e14505a8d50882ff3bdd4b791b14d90a0881fa4d (diff) |
Merge branch 'core-rcu-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip into next
Pull RCU changes from Ingo Molnar:
"The main RCU changes in this cycle were:
- RCU torture-test changes.
- variable-name renaming cleanup.
- update RCU documentation.
- miscellaneous fixes.
- patch to suppress RCU stall warnings while sysrq requests are being
processed"
* 'core-rcu-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip: (68 commits)
rcu: Provide API to suppress stall warnings while sysrc runs
rcu: Variable name changed in tree_plugin.h and used in tree.c
torture: Remove unused definition
torture: Remove __init from torture_init_begin/end
torture: Check for multiple concurrent torture tests
locktorture: Remove reference to nonexistent Kconfig parameter
rcutorture: Run rcu_torture_writer at normal priority
rcutorture: Note diffs from git commits
rcutorture: Add missing destroy_timer_on_stack()
rcutorture: Explicitly test synchronous grace-period primitives
rcutorture: Add tests for get_state_synchronize_rcu()
rcutorture: Test RCU-sched primitives in TREE_PREEMPT_RCU kernels
torture: Use elapsed time to detect hangs
rcutorture: Check for rcu_torture_fqs creation errors
torture: Better summary diagnostics for build failures
torture: Notice if an all-zero cpumask is passed inside a critical section
rcutorture: Make rcu_torture_reader() use cond_resched()
sched,rcu: Make cond_resched() report RCU quiescent states
percpu: Fix raw_cpu_inc_return()
rcutorture: Export RCU grace-period kthread wait state to rcutorture
...
Diffstat (limited to 'kernel/rcu/tree.h')
-rw-r--r-- | kernel/rcu/tree.h | 11 |
1 files changed, 7 insertions, 4 deletions
diff --git a/kernel/rcu/tree.h b/kernel/rcu/tree.h index 75dc3c39a02a..bf2c1e669691 100644 --- a/kernel/rcu/tree.h +++ b/kernel/rcu/tree.h | |||
@@ -252,7 +252,6 @@ struct rcu_data { | |||
252 | bool passed_quiesce; /* User-mode/idle loop etc. */ | 252 | bool passed_quiesce; /* User-mode/idle loop etc. */ |
253 | bool qs_pending; /* Core waits for quiesc state. */ | 253 | bool qs_pending; /* Core waits for quiesc state. */ |
254 | bool beenonline; /* CPU online at least once. */ | 254 | bool beenonline; /* CPU online at least once. */ |
255 | bool preemptible; /* Preemptible RCU? */ | ||
256 | struct rcu_node *mynode; /* This CPU's leaf of hierarchy */ | 255 | struct rcu_node *mynode; /* This CPU's leaf of hierarchy */ |
257 | unsigned long grpmask; /* Mask to apply to leaf qsmask. */ | 256 | unsigned long grpmask; /* Mask to apply to leaf qsmask. */ |
258 | #ifdef CONFIG_RCU_CPU_STALL_INFO | 257 | #ifdef CONFIG_RCU_CPU_STALL_INFO |
@@ -406,7 +405,8 @@ struct rcu_state { | |||
406 | unsigned long completed; /* # of last completed gp. */ | 405 | unsigned long completed; /* # of last completed gp. */ |
407 | struct task_struct *gp_kthread; /* Task for grace periods. */ | 406 | struct task_struct *gp_kthread; /* Task for grace periods. */ |
408 | wait_queue_head_t gp_wq; /* Where GP task waits. */ | 407 | wait_queue_head_t gp_wq; /* Where GP task waits. */ |
409 | int gp_flags; /* Commands for GP task. */ | 408 | short gp_flags; /* Commands for GP task. */ |
409 | short gp_state; /* GP kthread sleep state. */ | ||
410 | 410 | ||
411 | /* End of fields guarded by root rcu_node's lock. */ | 411 | /* End of fields guarded by root rcu_node's lock. */ |
412 | 412 | ||
@@ -462,13 +462,17 @@ struct rcu_state { | |||
462 | const char *name; /* Name of structure. */ | 462 | const char *name; /* Name of structure. */ |
463 | char abbr; /* Abbreviated name. */ | 463 | char abbr; /* Abbreviated name. */ |
464 | struct list_head flavors; /* List of RCU flavors. */ | 464 | struct list_head flavors; /* List of RCU flavors. */ |
465 | struct irq_work wakeup_work; /* Postponed wakeups */ | ||
466 | }; | 465 | }; |
467 | 466 | ||
468 | /* Values for rcu_state structure's gp_flags field. */ | 467 | /* Values for rcu_state structure's gp_flags field. */ |
469 | #define RCU_GP_FLAG_INIT 0x1 /* Need grace-period initialization. */ | 468 | #define RCU_GP_FLAG_INIT 0x1 /* Need grace-period initialization. */ |
470 | #define RCU_GP_FLAG_FQS 0x2 /* Need grace-period quiescent-state forcing. */ | 469 | #define RCU_GP_FLAG_FQS 0x2 /* Need grace-period quiescent-state forcing. */ |
471 | 470 | ||
471 | /* Values for rcu_state structure's gp_flags field. */ | ||
472 | #define RCU_GP_WAIT_INIT 0 /* Initial state. */ | ||
473 | #define RCU_GP_WAIT_GPS 1 /* Wait for grace-period start. */ | ||
474 | #define RCU_GP_WAIT_FQS 2 /* Wait for force-quiescent-state time. */ | ||
475 | |||
472 | extern struct list_head rcu_struct_flavors; | 476 | extern struct list_head rcu_struct_flavors; |
473 | 477 | ||
474 | /* Sequence through rcu_state structures for each RCU flavor. */ | 478 | /* Sequence through rcu_state structures for each RCU flavor. */ |
@@ -547,7 +551,6 @@ static void print_cpu_stall_info(struct rcu_state *rsp, int cpu); | |||
547 | static void print_cpu_stall_info_end(void); | 551 | static void print_cpu_stall_info_end(void); |
548 | static void zero_cpu_stall_ticks(struct rcu_data *rdp); | 552 | static void zero_cpu_stall_ticks(struct rcu_data *rdp); |
549 | static void increment_cpu_stall_ticks(void); | 553 | static void increment_cpu_stall_ticks(void); |
550 | static int rcu_nocb_needs_gp(struct rcu_state *rsp); | ||
551 | static void rcu_nocb_gp_set(struct rcu_node *rnp, int nrq); | 554 | static void rcu_nocb_gp_set(struct rcu_node *rnp, int nrq); |
552 | static void rcu_nocb_gp_cleanup(struct rcu_state *rsp, struct rcu_node *rnp); | 555 | static void rcu_nocb_gp_cleanup(struct rcu_state *rsp, struct rcu_node *rnp); |
553 | static void rcu_init_one_nocb(struct rcu_node *rnp); | 556 | static void rcu_init_one_nocb(struct rcu_node *rnp); |