|
@@ -544,16 +544,6 @@ static int rcu_print_task_stall(struct rcu_node *rnp)
|
|
|
return ndetected;
|
|
|
}
|
|
|
|
|
|
-/*
|
|
|
- * Suppress preemptible RCU's CPU stall warnings by pushing the
|
|
|
- * time of the next stall-warning message comfortably far into the
|
|
|
- * future.
|
|
|
- */
|
|
|
-static void rcu_preempt_stall_reset(void)
|
|
|
-{
|
|
|
- rcu_preempt_state.jiffies_stall = jiffies + ULONG_MAX / 2;
|
|
|
-}
|
|
|
-
|
|
|
/*
|
|
|
* Check that the list of blocked tasks for the newly completed grace
|
|
|
* period is in fact empty. It is a serious bug to complete a grace
|
|
@@ -654,14 +644,6 @@ static int rcu_preempt_offline_tasks(struct rcu_state *rsp,
|
|
|
|
|
|
#endif /* #ifdef CONFIG_HOTPLUG_CPU */
|
|
|
|
|
|
-/*
|
|
|
- * Do CPU-offline processing for preemptible RCU.
|
|
|
- */
|
|
|
-static void rcu_preempt_cleanup_dead_cpu(int cpu)
|
|
|
-{
|
|
|
- rcu_cleanup_dead_cpu(cpu, &rcu_preempt_state);
|
|
|
-}
|
|
|
-
|
|
|
/*
|
|
|
* Check for a quiescent state from the current CPU. When a task blocks,
|
|
|
* the task is recorded in the corresponding CPU's rcu_node structure,
|
|
@@ -682,14 +664,6 @@ static void rcu_preempt_check_callbacks(int cpu)
|
|
|
t->rcu_read_unlock_special |= RCU_READ_UNLOCK_NEED_QS;
|
|
|
}
|
|
|
|
|
|
-/*
|
|
|
- * Process callbacks for preemptible RCU.
|
|
|
- */
|
|
|
-static void rcu_preempt_process_callbacks(void)
|
|
|
-{
|
|
|
- __rcu_process_callbacks(&rcu_preempt_state);
|
|
|
-}
|
|
|
-
|
|
|
#ifdef CONFIG_RCU_BOOST
|
|
|
|
|
|
static void rcu_preempt_do_callbacks(void)
|
|
@@ -921,24 +895,6 @@ mb_ret:
|
|
|
}
|
|
|
EXPORT_SYMBOL_GPL(synchronize_rcu_expedited);
|
|
|
|
|
|
-/*
|
|
|
- * Check to see if there is any immediate preemptible-RCU-related work
|
|
|
- * to be done.
|
|
|
- */
|
|
|
-static int rcu_preempt_pending(int cpu)
|
|
|
-{
|
|
|
- return __rcu_pending(&rcu_preempt_state,
|
|
|
- &per_cpu(rcu_preempt_data, cpu));
|
|
|
-}
|
|
|
-
|
|
|
-/*
|
|
|
- * Does preemptible RCU have callbacks on this CPU?
|
|
|
- */
|
|
|
-static int rcu_preempt_cpu_has_callbacks(int cpu)
|
|
|
-{
|
|
|
- return !!per_cpu(rcu_preempt_data, cpu).nxtlist;
|
|
|
-}
|
|
|
-
|
|
|
/**
|
|
|
* rcu_barrier - Wait until all in-flight call_rcu() callbacks complete.
|
|
|
*/
|
|
@@ -948,23 +904,6 @@ void rcu_barrier(void)
|
|
|
}
|
|
|
EXPORT_SYMBOL_GPL(rcu_barrier);
|
|
|
|
|
|
-/*
|
|
|
- * Initialize preemptible RCU's per-CPU data.
|
|
|
- */
|
|
|
-static void __cpuinit rcu_preempt_init_percpu_data(int cpu)
|
|
|
-{
|
|
|
- rcu_init_percpu_data(cpu, &rcu_preempt_state, 1);
|
|
|
-}
|
|
|
-
|
|
|
-/*
|
|
|
- * Move preemptible RCU's callbacks from dying CPU to other online CPU
|
|
|
- * and record a quiescent state.
|
|
|
- */
|
|
|
-static void rcu_preempt_cleanup_dying_cpu(void)
|
|
|
-{
|
|
|
- rcu_cleanup_dying_cpu(&rcu_preempt_state);
|
|
|
-}
|
|
|
-
|
|
|
/*
|
|
|
* Initialize preemptible RCU's state structures.
|
|
|
*/
|
|
@@ -1049,14 +988,6 @@ static int rcu_print_task_stall(struct rcu_node *rnp)
|
|
|
return 0;
|
|
|
}
|
|
|
|
|
|
-/*
|
|
|
- * Because preemptible RCU does not exist, there is no need to suppress
|
|
|
- * its CPU stall warnings.
|
|
|
- */
|
|
|
-static void rcu_preempt_stall_reset(void)
|
|
|
-{
|
|
|
-}
|
|
|
-
|
|
|
/*
|
|
|
* Because there is no preemptible RCU, there can be no readers blocked,
|
|
|
* so there is no need to check for blocked tasks. So check only for
|
|
@@ -1084,14 +1015,6 @@ static int rcu_preempt_offline_tasks(struct rcu_state *rsp,
|
|
|
|
|
|
#endif /* #ifdef CONFIG_HOTPLUG_CPU */
|
|
|
|
|
|
-/*
|
|
|
- * Because preemptible RCU does not exist, it never needs CPU-offline
|
|
|
- * processing.
|
|
|
- */
|
|
|
-static void rcu_preempt_cleanup_dead_cpu(int cpu)
|
|
|
-{
|
|
|
-}
|
|
|
-
|
|
|
/*
|
|
|
* Because preemptible RCU does not exist, it never has any callbacks
|
|
|
* to check.
|
|
@@ -1100,14 +1023,6 @@ static void rcu_preempt_check_callbacks(int cpu)
|
|
|
{
|
|
|
}
|
|
|
|
|
|
-/*
|
|
|
- * Because preemptible RCU does not exist, it never has any callbacks
|
|
|
- * to process.
|
|
|
- */
|
|
|
-static void rcu_preempt_process_callbacks(void)
|
|
|
-{
|
|
|
-}
|
|
|
-
|
|
|
/*
|
|
|
* Queue an RCU callback for lazy invocation after a grace period.
|
|
|
* This will likely be later named something like "call_rcu_lazy()",
|
|
@@ -1148,22 +1063,6 @@ static void rcu_report_exp_rnp(struct rcu_state *rsp, struct rcu_node *rnp,
|
|
|
|
|
|
#endif /* #ifdef CONFIG_HOTPLUG_CPU */
|
|
|
|
|
|
-/*
|
|
|
- * Because preemptible RCU does not exist, it never has any work to do.
|
|
|
- */
|
|
|
-static int rcu_preempt_pending(int cpu)
|
|
|
-{
|
|
|
- return 0;
|
|
|
-}
|
|
|
-
|
|
|
-/*
|
|
|
- * Because preemptible RCU does not exist, it never has callbacks
|
|
|
- */
|
|
|
-static int rcu_preempt_cpu_has_callbacks(int cpu)
|
|
|
-{
|
|
|
- return 0;
|
|
|
-}
|
|
|
-
|
|
|
/*
|
|
|
* Because preemptible RCU does not exist, rcu_barrier() is just
|
|
|
* another name for rcu_barrier_sched().
|
|
@@ -1174,21 +1073,6 @@ void rcu_barrier(void)
|
|
|
}
|
|
|
EXPORT_SYMBOL_GPL(rcu_barrier);
|
|
|
|
|
|
-/*
|
|
|
- * Because preemptible RCU does not exist, there is no per-CPU
|
|
|
- * data to initialize.
|
|
|
- */
|
|
|
-static void __cpuinit rcu_preempt_init_percpu_data(int cpu)
|
|
|
-{
|
|
|
-}
|
|
|
-
|
|
|
-/*
|
|
|
- * Because there is no preemptible RCU, there is no cleanup to do.
|
|
|
- */
|
|
|
-static void rcu_preempt_cleanup_dying_cpu(void)
|
|
|
-{
|
|
|
-}
|
|
|
-
|
|
|
/*
|
|
|
* Because preemptible RCU does not exist, it need not be initialized.
|
|
|
*/
|