diff options
Diffstat (limited to 'kernel/rcu/tree.h')
| -rw-r--r-- | kernel/rcu/tree.h | 14 | 
1 files changed, 7 insertions, 7 deletions
| diff --git a/kernel/rcu/tree.h b/kernel/rcu/tree.h index 71821d59d95c..305cf6aeb408 100644 --- a/kernel/rcu/tree.h +++ b/kernel/rcu/tree.h @@ -115,6 +115,7 @@ struct rcu_node {  				/*  boosting for this rcu_node structure. */  	unsigned int boost_kthread_status;  				/* State of boost_kthread_task for tracing. */ +	unsigned long n_boosts;	/* Number of boosts for this rcu_node structure. */  #ifdef CONFIG_RCU_NOCB_CPU  	struct swait_queue_head nocb_gp_wq[2];  				/* Place for rcu_nocb_kthread() to wait GP. */ @@ -153,7 +154,7 @@ struct rcu_data {  	unsigned long	gp_seq;		/* Track rsp->gp_seq counter. */  	unsigned long	gp_seq_needed;	/* Track furthest future GP request. */  	union rcu_noqs	cpu_no_qs;	/* No QSes yet for this CPU. */ -	bool		core_needs_qs;	/* Core waits for quiesc state. */ +	bool		core_needs_qs;	/* Core waits for quiescent state. */  	bool		beenonline;	/* CPU online at least once. */  	bool		gpwrap;		/* Possible ->gp_seq wrap. */  	bool		exp_deferred_qs; /* This CPU awaiting a deferred QS? */ @@ -218,7 +219,6 @@ struct rcu_data {  	/* The following fields are used by GP kthread, hence own cacheline. */  	raw_spinlock_t nocb_gp_lock ____cacheline_internodealigned_in_smp; -	struct timer_list nocb_bypass_timer; /* Force nocb_bypass flush. */  	u8 nocb_gp_sleep;		/* Is the nocb GP thread asleep? */  	u8 nocb_gp_bypass;		/* Found a bypass on last scan? */  	u8 nocb_gp_gp;			/* GP to wait for on last scan? */ @@ -257,10 +257,10 @@ struct rcu_data {  };  /* Values for nocb_defer_wakeup field in struct rcu_data. */ -#define RCU_NOCB_WAKE_OFF	-1  #define RCU_NOCB_WAKE_NOT	0 -#define RCU_NOCB_WAKE		1 -#define RCU_NOCB_WAKE_FORCE	2 +#define RCU_NOCB_WAKE_BYPASS	1 +#define RCU_NOCB_WAKE		2 +#define RCU_NOCB_WAKE_FORCE	3  #define RCU_JIFFIES_TILL_FORCE_QS (1 + (HZ > 250) + (HZ > 500))  					/* For jiffies_till_first_fqs and */ @@ -417,8 +417,8 @@ static void rcu_initiate_boost(struct rcu_node *rnp, unsigned long flags);  static void rcu_preempt_boost_start_gp(struct rcu_node *rnp);  static bool rcu_is_callbacks_kthread(void);  static void rcu_cpu_kthread_setup(unsigned int cpu); +static void rcu_spawn_one_boost_kthread(struct rcu_node *rnp);  static void __init rcu_spawn_boost_kthreads(void); -static void rcu_prepare_kthreads(int cpu);  static void rcu_cleanup_after_idle(void);  static void rcu_prepare_for_idle(void);  static bool rcu_preempt_has_tasks(struct rcu_node *rnp); @@ -434,7 +434,7 @@ static bool rcu_nocb_try_bypass(struct rcu_data *rdp, struct rcu_head *rhp,  				bool *was_alldone, unsigned long flags);  static void __call_rcu_nocb_wake(struct rcu_data *rdp, bool was_empty,  				 unsigned long flags); -static int rcu_nocb_need_deferred_wakeup(struct rcu_data *rdp); +static int rcu_nocb_need_deferred_wakeup(struct rcu_data *rdp, int level);  static bool do_nocb_deferred_wakeup(struct rcu_data *rdp);  static void rcu_boot_init_nocb_percpu_data(struct rcu_data *rdp);  static void rcu_spawn_cpu_nocb_kthread(int cpu); | 
