The patch titled cpu hotplug: revert init patch submitted for 2.6.17 has been added to the -mm tree. Its filename is cpu-hotplug-revert-init-patch-submitted-for-2617.patch See http://www.zip.com.au/~akpm/linux/patches/stuff/added-to-mm.txt to find out what to do about this ------------------------------------------------------ Subject: cpu hotplug: revert init patch submitted for 2.6.17 From: Chandra Seetharaman <sekharan@xxxxxxxxxx> In 2.6.17, there was a problem with cpu_notifiers and XFS. I provided a band-aid solution to solve that problem. In the process, i undid all the changes you both were making to ensure that these notifiers were available only at init time (unless CONFIG_HOTPLUG_CPU is defined). We deferred the real fix to 2.6.18. Here is a set of patches that fixes the XFS problem cleanly and makes the cpu notifiers available only at init time (unless CONFIG_HOTPLUG_CPU is defined). If CONFIG_HOTPLUG_CPU is defined then cpu notifiers are available at run time. This patch reverts the notifier_call changes made in 2.6.17 Signed-off-by: Chandra Seetharaman <sekharan@xxxxxxxxxx> Cc: Ashok Raj <ashok.raj@xxxxxxxxx> Signed-off-by: Andrew Morton <akpm@xxxxxxxx> --- arch/i386/kernel/cpu/intel_cacheinfo.c | 2 +- arch/ia64/kernel/palinfo.c | 2 +- arch/ia64/kernel/salinfo.c | 2 +- arch/ia64/kernel/topology.c | 2 +- arch/powerpc/kernel/sysfs.c | 2 +- arch/x86_64/kernel/mce.c | 2 +- arch/x86_64/kernel/mce_amd.c | 2 +- drivers/base/topology.c | 2 +- drivers/cpufreq/cpufreq.c | 2 +- kernel/hrtimer.c | 2 +- kernel/profile.c | 2 +- kernel/rcupdate.c | 2 +- kernel/softirq.c | 2 +- kernel/softlockup.c | 2 +- kernel/timer.c | 2 +- kernel/workqueue.c | 2 +- mm/page_alloc.c | 2 +- mm/slab.c | 2 +- mm/vmscan.c | 2 +- 19 files changed, 19 insertions(+), 19 deletions(-) diff -puN arch/i386/kernel/cpu/intel_cacheinfo.c~cpu-hotplug-revert-init-patch-submitted-for-2617 arch/i386/kernel/cpu/intel_cacheinfo.c --- a/arch/i386/kernel/cpu/intel_cacheinfo.c~cpu-hotplug-revert-init-patch-submitted-for-2617 +++ a/arch/i386/kernel/cpu/intel_cacheinfo.c @@ -729,7 +729,7 @@ static void __cpuexit cache_remove_dev(s return; } -static int cacheinfo_cpu_callback(struct notifier_block *nfb, +static int __cpuinit cacheinfo_cpu_callback(struct notifier_block *nfb, unsigned long action, void *hcpu) { unsigned int cpu = (unsigned long)hcpu; diff -puN arch/ia64/kernel/palinfo.c~cpu-hotplug-revert-init-patch-submitted-for-2617 arch/ia64/kernel/palinfo.c --- a/arch/ia64/kernel/palinfo.c~cpu-hotplug-revert-init-patch-submitted-for-2617 +++ a/arch/ia64/kernel/palinfo.c @@ -959,7 +959,7 @@ remove_palinfo_proc_entries(unsigned int } } -static int palinfo_cpu_callback(struct notifier_block *nfb, +static int __devinit palinfo_cpu_callback(struct notifier_block *nfb, unsigned long action, void *hcpu) { diff -puN arch/ia64/kernel/salinfo.c~cpu-hotplug-revert-init-patch-submitted-for-2617 arch/ia64/kernel/salinfo.c --- a/arch/ia64/kernel/salinfo.c~cpu-hotplug-revert-init-patch-submitted-for-2617 +++ a/arch/ia64/kernel/salinfo.c @@ -572,7 +572,7 @@ static struct file_operations salinfo_da }; #ifdef CONFIG_HOTPLUG_CPU -static int +static int __devinit salinfo_cpu_callback(struct notifier_block *nb, unsigned long action, void *hcpu) { unsigned int i, cpu = (unsigned long)hcpu; diff -puN arch/ia64/kernel/topology.c~cpu-hotplug-revert-init-patch-submitted-for-2617 arch/ia64/kernel/topology.c --- a/arch/ia64/kernel/topology.c~cpu-hotplug-revert-init-patch-submitted-for-2617 +++ a/arch/ia64/kernel/topology.c @@ -404,7 +404,7 @@ static int __cpuinit cache_remove_dev(st * When a cpu is hot-plugged, do a check and initiate * cache kobject if necessary */ -static int cache_cpu_callback(struct notifier_block *nfb, +static int __cpuinit cache_cpu_callback(struct notifier_block *nfb, unsigned long action, void *hcpu) { unsigned int cpu = (unsigned long)hcpu; diff -puN arch/powerpc/kernel/sysfs.c~cpu-hotplug-revert-init-patch-submitted-for-2617 arch/powerpc/kernel/sysfs.c --- a/arch/powerpc/kernel/sysfs.c~cpu-hotplug-revert-init-patch-submitted-for-2617 +++ a/arch/powerpc/kernel/sysfs.c @@ -279,7 +279,7 @@ static void unregister_cpu_online(unsign } #endif /* CONFIG_HOTPLUG_CPU */ -static int sysfs_cpu_notify(struct notifier_block *self, +static int __devinit sysfs_cpu_notify(struct notifier_block *self, unsigned long action, void *hcpu) { unsigned int cpu = (unsigned int)(long)hcpu; diff -puN arch/x86_64/kernel/mce_amd.c~cpu-hotplug-revert-init-patch-submitted-for-2617 arch/x86_64/kernel/mce_amd.c --- a/arch/x86_64/kernel/mce_amd.c~cpu-hotplug-revert-init-patch-submitted-for-2617 +++ a/arch/x86_64/kernel/mce_amd.c @@ -636,7 +636,7 @@ static void threshold_remove_device(unsi #endif /* get notified when a cpu comes on/off */ -static int threshold_cpu_callback(struct notifier_block *nfb, +static __cpuinit int threshold_cpu_callback(struct notifier_block *nfb, unsigned long action, void *hcpu) { /* cpu was unsigned int to begin with */ diff -puN arch/x86_64/kernel/mce.c~cpu-hotplug-revert-init-patch-submitted-for-2617 arch/x86_64/kernel/mce.c --- a/arch/x86_64/kernel/mce.c~cpu-hotplug-revert-init-patch-submitted-for-2617 +++ a/arch/x86_64/kernel/mce.c @@ -629,7 +629,7 @@ static __cpuinit void mce_remove_device( #endif /* Get notified when a cpu comes on/off. Be hotplug friendly. */ -static int +static __cpuinit int mce_cpu_callback(struct notifier_block *nfb, unsigned long action, void *hcpu) { unsigned int cpu = (unsigned long)hcpu; diff -puN drivers/base/topology.c~cpu-hotplug-revert-init-patch-submitted-for-2617 drivers/base/topology.c --- a/drivers/base/topology.c~cpu-hotplug-revert-init-patch-submitted-for-2617 +++ a/drivers/base/topology.c @@ -107,7 +107,7 @@ static int __cpuinit topology_remove_dev return 0; } -static int topology_cpu_callback(struct notifier_block *nfb, +static int __cpuinit topology_cpu_callback(struct notifier_block *nfb, unsigned long action, void *hcpu) { unsigned int cpu = (unsigned long)hcpu; diff -puN drivers/cpufreq/cpufreq.c~cpu-hotplug-revert-init-patch-submitted-for-2617 drivers/cpufreq/cpufreq.c --- a/drivers/cpufreq/cpufreq.c~cpu-hotplug-revert-init-patch-submitted-for-2617 +++ a/drivers/cpufreq/cpufreq.c @@ -1497,7 +1497,7 @@ int cpufreq_update_policy(unsigned int c } EXPORT_SYMBOL(cpufreq_update_policy); -static int cpufreq_cpu_callback(struct notifier_block *nfb, +static int __cpuinit cpufreq_cpu_callback(struct notifier_block *nfb, unsigned long action, void *hcpu) { unsigned int cpu = (unsigned long)hcpu; diff -puN kernel/hrtimer.c~cpu-hotplug-revert-init-patch-submitted-for-2617 kernel/hrtimer.c --- a/kernel/hrtimer.c~cpu-hotplug-revert-init-patch-submitted-for-2617 +++ a/kernel/hrtimer.c @@ -833,7 +833,7 @@ static void migrate_hrtimers(int cpu) } #endif /* CONFIG_HOTPLUG_CPU */ -static int hrtimer_cpu_notify(struct notifier_block *self, +static int __devinit hrtimer_cpu_notify(struct notifier_block *self, unsigned long action, void *hcpu) { long cpu = (long)hcpu; diff -puN kernel/profile.c~cpu-hotplug-revert-init-patch-submitted-for-2617 kernel/profile.c --- a/kernel/profile.c~cpu-hotplug-revert-init-patch-submitted-for-2617 +++ a/kernel/profile.c @@ -299,7 +299,7 @@ out: } #ifdef CONFIG_HOTPLUG_CPU -static int profile_cpu_callback(struct notifier_block *info, +static int __devinit profile_cpu_callback(struct notifier_block *info, unsigned long action, void *__cpu) { int node, cpu = (unsigned long)__cpu; diff -puN kernel/rcupdate.c~cpu-hotplug-revert-init-patch-submitted-for-2617 kernel/rcupdate.c --- a/kernel/rcupdate.c~cpu-hotplug-revert-init-patch-submitted-for-2617 +++ a/kernel/rcupdate.c @@ -539,7 +539,7 @@ static void __devinit rcu_online_cpu(int tasklet_init(&per_cpu(rcu_tasklet, cpu), rcu_process_callbacks, 0UL); } -static int rcu_cpu_notify(struct notifier_block *self, +static int __devinit rcu_cpu_notify(struct notifier_block *self, unsigned long action, void *hcpu) { long cpu = (long)hcpu; diff -puN kernel/softirq.c~cpu-hotplug-revert-init-patch-submitted-for-2617 kernel/softirq.c --- a/kernel/softirq.c~cpu-hotplug-revert-init-patch-submitted-for-2617 +++ a/kernel/softirq.c @@ -446,7 +446,7 @@ static void takeover_tasklets(unsigned i } #endif /* CONFIG_HOTPLUG_CPU */ -static int cpu_callback(struct notifier_block *nfb, +static int __devinit cpu_callback(struct notifier_block *nfb, unsigned long action, void *hcpu) { diff -puN kernel/softlockup.c~cpu-hotplug-revert-init-patch-submitted-for-2617 kernel/softlockup.c --- a/kernel/softlockup.c~cpu-hotplug-revert-init-patch-submitted-for-2617 +++ a/kernel/softlockup.c @@ -104,7 +104,7 @@ static int watchdog(void * __bind_cpu) /* * Create/destroy watchdog threads as CPUs come and go: */ -static int +static int __devinit cpu_callback(struct notifier_block *nfb, unsigned long action, void *hcpu) { int hotcpu = (unsigned long)hcpu; diff -puN kernel/timer.c~cpu-hotplug-revert-init-patch-submitted-for-2617 kernel/timer.c --- a/kernel/timer.c~cpu-hotplug-revert-init-patch-submitted-for-2617 +++ a/kernel/timer.c @@ -1326,7 +1326,7 @@ static void __devinit migrate_timers(int } #endif /* CONFIG_HOTPLUG_CPU */ -static int timer_cpu_notify(struct notifier_block *self, +static int __devinit timer_cpu_notify(struct notifier_block *self, unsigned long action, void *hcpu) { long cpu = (long)hcpu; diff -puN kernel/workqueue.c~cpu-hotplug-revert-init-patch-submitted-for-2617 kernel/workqueue.c --- a/kernel/workqueue.c~cpu-hotplug-revert-init-patch-submitted-for-2617 +++ a/kernel/workqueue.c @@ -559,7 +559,7 @@ static void take_over_work(struct workqu } /* We're holding the cpucontrol mutex here */ -static int workqueue_cpu_callback(struct notifier_block *nfb, +static int __devinit workqueue_cpu_callback(struct notifier_block *nfb, unsigned long action, void *hcpu) { diff -puN mm/page_alloc.c~cpu-hotplug-revert-init-patch-submitted-for-2617 mm/page_alloc.c --- a/mm/page_alloc.c~cpu-hotplug-revert-init-patch-submitted-for-2617 +++ a/mm/page_alloc.c @@ -2008,7 +2008,7 @@ static inline void free_zone_pagesets(in } } -static int pageset_cpuup_callback(struct notifier_block *nfb, +static int __cpuinit pageset_cpuup_callback(struct notifier_block *nfb, unsigned long action, void *hcpu) { diff -puN mm/slab.c~cpu-hotplug-revert-init-patch-submitted-for-2617 mm/slab.c --- a/mm/slab.c~cpu-hotplug-revert-init-patch-submitted-for-2617 +++ a/mm/slab.c @@ -1073,7 +1073,7 @@ static inline int cache_free_alien(struc #endif -static int cpuup_callback(struct notifier_block *nfb, +static int __devinit cpuup_callback(struct notifier_block *nfb, unsigned long action, void *hcpu) { long cpu = (long)hcpu; diff -puN mm/vmscan.c~cpu-hotplug-revert-init-patch-submitted-for-2617 mm/vmscan.c --- a/mm/vmscan.c~cpu-hotplug-revert-init-patch-submitted-for-2617 +++ a/mm/vmscan.c @@ -1450,7 +1450,7 @@ out: not required for correctness. So if the last cpu in a node goes away, we get changed to run anywhere: as the first one comes back, restore their cpu bindings. */ -static int cpu_callback(struct notifier_block *nfb, +static int __devinit cpu_callback(struct notifier_block *nfb, unsigned long action, void *hcpu) { pg_data_t *pgdat; _ Patches currently in -mm which might be from sekharan@xxxxxxxxxx are cpu-hotplug-revert-init-patch-submitted-for-2617.patch cpu-hotplug-revert-initdata-patch-submitted-for-2617.patch cpu-hotplug-make-register_cpu_notifier-init-time-only.patch cpu-hotplug-make-cpu_notifier-related-notifier-blocks-__cpuinit-only.patch cpu-hotplug-make-cpu_notifier-related-notifier-calls-__cpuinit-only.patch cpu-hotplug-add-hotplug-versions-of-cpu_notifier.patch cpu-hotplug-use-hotplug-version-of-cpu-notifier-in-appropriate-places.patch per-task-delay-accounting-cpu-delay-collection-via-schedstats.patch task-watchers-task-watchers.patch task-watchers-task-watchers-tidy.patch task-watchers-register-per-task-delay-accounting.patch task-watchers-add-support-for-per-task-watchers.patch task-watchers-add-support-for-per-task-watchers-warning-fix.patch - To unsubscribe from this list: send the line "unsubscribe mm-commits" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html