|
@@ -1644,8 +1644,8 @@ static void __cpuinit rcu_online_cpu(int cpu)
|
|
|
/*
|
|
|
* Handle CPU online/offline notification events.
|
|
|
*/
|
|
|
-int __cpuinit rcu_cpu_notify(struct notifier_block *self,
|
|
|
- unsigned long action, void *hcpu)
|
|
|
+static int __cpuinit rcu_cpu_notify(struct notifier_block *self,
|
|
|
+ unsigned long action, void *hcpu)
|
|
|
{
|
|
|
long cpu = (long)hcpu;
|
|
|
|
|
@@ -1781,8 +1781,10 @@ do { \
|
|
|
} \
|
|
|
} while (0)
|
|
|
|
|
|
-void __init __rcu_init(void)
|
|
|
+void __init rcu_init(void)
|
|
|
{
|
|
|
+ int i;
|
|
|
+
|
|
|
rcu_bootup_announce();
|
|
|
#ifdef CONFIG_RCU_CPU_STALL_DETECTOR
|
|
|
printk(KERN_INFO "RCU-based detection of stalled CPUs is enabled.\n");
|
|
@@ -1791,6 +1793,15 @@ void __init __rcu_init(void)
|
|
|
RCU_INIT_FLAVOR(&rcu_bh_state, rcu_bh_data);
|
|
|
__rcu_init_preempt();
|
|
|
open_softirq(RCU_SOFTIRQ, rcu_process_callbacks);
|
|
|
+
|
|
|
+ /*
|
|
|
+ * We don't need protection against CPU-hotplug here because
|
|
|
+ * this is called early in boot, before either interrupts
|
|
|
+ * or the scheduler are operational.
|
|
|
+ */
|
|
|
+ cpu_notifier(rcu_cpu_notify, 0);
|
|
|
+ for_each_online_cpu(i)
|
|
|
+ rcu_cpu_notify(NULL, CPU_UP_PREPARE, (void *)(long)i);
|
|
|
}
|
|
|
|
|
|
#include "rcutree_plugin.h"
|