|
@@ -2633,14 +2633,18 @@ static int __init fcoe_init(void)
|
|
|
skb_queue_head_init(&p->fcoe_rx_list);
|
|
|
}
|
|
|
|
|
|
+ cpu_notifier_register_begin();
|
|
|
+
|
|
|
for_each_online_cpu(cpu)
|
|
|
fcoe_percpu_thread_create(cpu);
|
|
|
|
|
|
/* Initialize per CPU interrupt thread */
|
|
|
- rc = register_hotcpu_notifier(&fcoe_cpu_notifier);
|
|
|
+ rc = __register_hotcpu_notifier(&fcoe_cpu_notifier);
|
|
|
if (rc)
|
|
|
goto out_free;
|
|
|
|
|
|
+ cpu_notifier_register_done();
|
|
|
+
|
|
|
/* Setup link change notification */
|
|
|
fcoe_dev_setup();
|
|
|
|
|
@@ -2655,6 +2659,9 @@ out_free:
|
|
|
for_each_online_cpu(cpu) {
|
|
|
fcoe_percpu_thread_destroy(cpu);
|
|
|
}
|
|
|
+
|
|
|
+ cpu_notifier_register_done();
|
|
|
+
|
|
|
mutex_unlock(&fcoe_config_mutex);
|
|
|
destroy_workqueue(fcoe_wq);
|
|
|
return rc;
|
|
@@ -2687,11 +2694,15 @@ static void __exit fcoe_exit(void)
|
|
|
}
|
|
|
rtnl_unlock();
|
|
|
|
|
|
- unregister_hotcpu_notifier(&fcoe_cpu_notifier);
|
|
|
+ cpu_notifier_register_begin();
|
|
|
|
|
|
for_each_online_cpu(cpu)
|
|
|
fcoe_percpu_thread_destroy(cpu);
|
|
|
|
|
|
+ __unregister_hotcpu_notifier(&fcoe_cpu_notifier);
|
|
|
+
|
|
|
+ cpu_notifier_register_done();
|
|
|
+
|
|
|
mutex_unlock(&fcoe_config_mutex);
|
|
|
|
|
|
/*
|