diff options
author | Alex Shi <alex.shi@linaro.org> | 2015-05-12 14:55:30 +0800 |
---|---|---|
committer | Alex Shi <alex.shi@linaro.org> | 2015-05-12 14:55:30 +0800 |
commit | 1f8fdf83fe376cc83e96e942689a6cfac01e9634 (patch) | |
tree | 5bd0c30cb23791f2806c85631fe45079e6917b9b /kernel | |
parent | 8134585f1c33565ea5e752a7ba9323ed3e0921f3 (diff) | |
parent | 043787104c5b1386a96c317f2e82ecff257dd9c5 (diff) |
Merge remote-tracking branch 'origin/v3.10/topic/zram' into linux-linaro-lsk
Conflicts:
mm/Kconfig
mm/Makefile
Diffstat (limited to 'kernel')
-rw-r--r-- | kernel/cpu.c | 21 |
1 files changed, 19 insertions, 2 deletions
diff --git a/kernel/cpu.c b/kernel/cpu.c index bc255e25d5dd..5fbcbdd31fb3 100644 --- a/kernel/cpu.c +++ b/kernel/cpu.c @@ -27,18 +27,23 @@ static DEFINE_MUTEX(cpu_add_remove_lock); /* - * The following two API's must be used when attempting - * to serialize the updates to cpu_online_mask, cpu_present_mask. + * The following two APIs (cpu_maps_update_begin/done) must be used when + * attempting to serialize the updates to cpu_online_mask & cpu_present_mask. + * The APIs cpu_notifier_register_begin/done() must be used to protect CPU + * hotplug callback (un)registration performed using __register_cpu_notifier() + * or __unregister_cpu_notifier(). */ void cpu_maps_update_begin(void) { mutex_lock(&cpu_add_remove_lock); } +EXPORT_SYMBOL(cpu_notifier_register_begin); void cpu_maps_update_done(void) { mutex_unlock(&cpu_add_remove_lock); } +EXPORT_SYMBOL(cpu_notifier_register_done); static RAW_NOTIFIER_HEAD(cpu_chain); @@ -169,6 +174,11 @@ int __ref register_cpu_notifier(struct notifier_block *nb) return ret; } +int __ref __register_cpu_notifier(struct notifier_block *nb) +{ + return raw_notifier_chain_register(&cpu_chain, nb); +} + static int __cpu_notify(unsigned long val, void *v, int nr_to_call, int *nr_calls) { @@ -192,6 +202,7 @@ static void cpu_notify_nofail(unsigned long val, void *v) BUG_ON(cpu_notify(val, v)); } EXPORT_SYMBOL(register_cpu_notifier); +EXPORT_SYMBOL(__register_cpu_notifier); void __ref unregister_cpu_notifier(struct notifier_block *nb) { @@ -201,6 +212,12 @@ void __ref unregister_cpu_notifier(struct notifier_block *nb) } EXPORT_SYMBOL(unregister_cpu_notifier); +void __ref __unregister_cpu_notifier(struct notifier_block *nb) +{ + raw_notifier_chain_unregister(&cpu_chain, nb); +} +EXPORT_SYMBOL(__unregister_cpu_notifier); + /** * clear_tasks_mm_cpumask - Safely clear tasks' mm_cpumask for a CPU * @cpu: a CPU id |