diff options
author | Chandra Seetharaman <sekharan@us.ibm.com> | 2006-06-27 05:54:07 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@g5.osdl.org> | 2006-06-27 20:32:40 -0400 |
commit | 9c7b216d23e820e0e148d5be01bbb5bd2d8378fe (patch) | |
tree | 53e6c1e4870db49b4999b4053862d3f63375773f | |
parent | 6ac12dfe9c2027cd3c5ed603f11d1bb4f04906fe (diff) |
[PATCH] cpu hotplug: revert init patch submitted for 2.6.17
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@us.ibm.com>
Cc: Ashok Raj <ashok.raj@intel.com>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
-rw-r--r-- | arch/i386/kernel/cpu/intel_cacheinfo.c | 2 | ||||
-rw-r--r-- | arch/ia64/kernel/palinfo.c | 2 | ||||
-rw-r--r-- | arch/ia64/kernel/salinfo.c | 2 | ||||
-rw-r--r-- | arch/ia64/kernel/topology.c | 2 | ||||
-rw-r--r-- | arch/powerpc/kernel/sysfs.c | 2 | ||||
-rw-r--r-- | arch/x86_64/kernel/mce.c | 2 | ||||
-rw-r--r-- | drivers/base/topology.c | 2 | ||||
-rw-r--r-- | drivers/cpufreq/cpufreq.c | 2 | ||||
-rw-r--r-- | kernel/hrtimer.c | 2 | ||||
-rw-r--r-- | kernel/profile.c | 2 | ||||
-rw-r--r-- | kernel/rcupdate.c | 2 | ||||
-rw-r--r-- | kernel/softirq.c | 2 | ||||
-rw-r--r-- | kernel/softlockup.c | 2 | ||||
-rw-r--r-- | kernel/timer.c | 2 | ||||
-rw-r--r-- | kernel/workqueue.c | 2 | ||||
-rw-r--r-- | mm/page_alloc.c | 2 | ||||
-rw-r--r-- | mm/slab.c | 2 | ||||
-rw-r--r-- | mm/vmscan.c | 2 |
18 files changed, 18 insertions, 18 deletions
diff --git a/arch/i386/kernel/cpu/intel_cacheinfo.c b/arch/i386/kernel/cpu/intel_cacheinfo.c index 8a92642ea590..1d4ab1047982 100644 --- a/arch/i386/kernel/cpu/intel_cacheinfo.c +++ b/arch/i386/kernel/cpu/intel_cacheinfo.c | |||
@@ -729,7 +729,7 @@ static void __cpuexit cache_remove_dev(struct sys_device * sys_dev) | |||
729 | return; | 729 | return; |
730 | } | 730 | } |
731 | 731 | ||
732 | static int cacheinfo_cpu_callback(struct notifier_block *nfb, | 732 | static int __cpuinit cacheinfo_cpu_callback(struct notifier_block *nfb, |
733 | unsigned long action, void *hcpu) | 733 | unsigned long action, void *hcpu) |
734 | { | 734 | { |
735 | unsigned int cpu = (unsigned long)hcpu; | 735 | unsigned int cpu = (unsigned long)hcpu; |
diff --git a/arch/ia64/kernel/palinfo.c b/arch/ia64/kernel/palinfo.c index 859fb37ff49b..6386f63c413e 100644 --- a/arch/ia64/kernel/palinfo.c +++ b/arch/ia64/kernel/palinfo.c | |||
@@ -959,7 +959,7 @@ remove_palinfo_proc_entries(unsigned int hcpu) | |||
959 | } | 959 | } |
960 | } | 960 | } |
961 | 961 | ||
962 | static int palinfo_cpu_callback(struct notifier_block *nfb, | 962 | static int __devinit palinfo_cpu_callback(struct notifier_block *nfb, |
963 | unsigned long action, | 963 | unsigned long action, |
964 | void *hcpu) | 964 | void *hcpu) |
965 | { | 965 | { |
diff --git a/arch/ia64/kernel/salinfo.c b/arch/ia64/kernel/salinfo.c index 663a186ad194..9d5a823479a3 100644 --- a/arch/ia64/kernel/salinfo.c +++ b/arch/ia64/kernel/salinfo.c | |||
@@ -572,7 +572,7 @@ static struct file_operations salinfo_data_fops = { | |||
572 | }; | 572 | }; |
573 | 573 | ||
574 | #ifdef CONFIG_HOTPLUG_CPU | 574 | #ifdef CONFIG_HOTPLUG_CPU |
575 | static int | 575 | static int __devinit |
576 | salinfo_cpu_callback(struct notifier_block *nb, unsigned long action, void *hcpu) | 576 | salinfo_cpu_callback(struct notifier_block *nb, unsigned long action, void *hcpu) |
577 | { | 577 | { |
578 | unsigned int i, cpu = (unsigned long)hcpu; | 578 | unsigned int i, cpu = (unsigned long)hcpu; |
diff --git a/arch/ia64/kernel/topology.c b/arch/ia64/kernel/topology.c index 5737c9a061ef..f07c382b57b8 100644 --- a/arch/ia64/kernel/topology.c +++ b/arch/ia64/kernel/topology.c | |||
@@ -404,7 +404,7 @@ static int __cpuinit cache_remove_dev(struct sys_device * sys_dev) | |||
404 | * When a cpu is hot-plugged, do a check and initiate | 404 | * When a cpu is hot-plugged, do a check and initiate |
405 | * cache kobject if necessary | 405 | * cache kobject if necessary |
406 | */ | 406 | */ |
407 | static int cache_cpu_callback(struct notifier_block *nfb, | 407 | static int __cpuinit cache_cpu_callback(struct notifier_block *nfb, |
408 | unsigned long action, void *hcpu) | 408 | unsigned long action, void *hcpu) |
409 | { | 409 | { |
410 | unsigned int cpu = (unsigned long)hcpu; | 410 | unsigned int cpu = (unsigned long)hcpu; |
diff --git a/arch/powerpc/kernel/sysfs.c b/arch/powerpc/kernel/sysfs.c index 412ad00e222d..0231869613ce 100644 --- a/arch/powerpc/kernel/sysfs.c +++ b/arch/powerpc/kernel/sysfs.c | |||
@@ -279,7 +279,7 @@ static void unregister_cpu_online(unsigned int cpu) | |||
279 | } | 279 | } |
280 | #endif /* CONFIG_HOTPLUG_CPU */ | 280 | #endif /* CONFIG_HOTPLUG_CPU */ |
281 | 281 | ||
282 | static int sysfs_cpu_notify(struct notifier_block *self, | 282 | static int __devinit sysfs_cpu_notify(struct notifier_block *self, |
283 | unsigned long action, void *hcpu) | 283 | unsigned long action, void *hcpu) |
284 | { | 284 | { |
285 | unsigned int cpu = (unsigned int)(long)hcpu; | 285 | unsigned int cpu = (unsigned int)(long)hcpu; |
diff --git a/arch/x86_64/kernel/mce.c b/arch/x86_64/kernel/mce.c index acd5816b1a6f..efe8500a5b9d 100644 --- a/arch/x86_64/kernel/mce.c +++ b/arch/x86_64/kernel/mce.c | |||
@@ -629,7 +629,7 @@ static __cpuinit void mce_remove_device(unsigned int cpu) | |||
629 | #endif | 629 | #endif |
630 | 630 | ||
631 | /* Get notified when a cpu comes on/off. Be hotplug friendly. */ | 631 | /* Get notified when a cpu comes on/off. Be hotplug friendly. */ |
632 | static int | 632 | static __cpuinit int |
633 | mce_cpu_callback(struct notifier_block *nfb, unsigned long action, void *hcpu) | 633 | mce_cpu_callback(struct notifier_block *nfb, unsigned long action, void *hcpu) |
634 | { | 634 | { |
635 | unsigned int cpu = (unsigned long)hcpu; | 635 | unsigned int cpu = (unsigned long)hcpu; |
diff --git a/drivers/base/topology.c b/drivers/base/topology.c index 8c52421cbc54..915810f6237e 100644 --- a/drivers/base/topology.c +++ b/drivers/base/topology.c | |||
@@ -107,7 +107,7 @@ static int __cpuinit topology_remove_dev(struct sys_device * sys_dev) | |||
107 | return 0; | 107 | return 0; |
108 | } | 108 | } |
109 | 109 | ||
110 | static int topology_cpu_callback(struct notifier_block *nfb, | 110 | static int __cpuinit topology_cpu_callback(struct notifier_block *nfb, |
111 | unsigned long action, void *hcpu) | 111 | unsigned long action, void *hcpu) |
112 | { | 112 | { |
113 | unsigned int cpu = (unsigned long)hcpu; | 113 | unsigned int cpu = (unsigned long)hcpu; |
diff --git a/drivers/cpufreq/cpufreq.c b/drivers/cpufreq/cpufreq.c index 44d1eca83a72..486ef6664708 100644 --- a/drivers/cpufreq/cpufreq.c +++ b/drivers/cpufreq/cpufreq.c | |||
@@ -1497,7 +1497,7 @@ int cpufreq_update_policy(unsigned int cpu) | |||
1497 | } | 1497 | } |
1498 | EXPORT_SYMBOL(cpufreq_update_policy); | 1498 | EXPORT_SYMBOL(cpufreq_update_policy); |
1499 | 1499 | ||
1500 | static int cpufreq_cpu_callback(struct notifier_block *nfb, | 1500 | static int __cpuinit cpufreq_cpu_callback(struct notifier_block *nfb, |
1501 | unsigned long action, void *hcpu) | 1501 | unsigned long action, void *hcpu) |
1502 | { | 1502 | { |
1503 | unsigned int cpu = (unsigned long)hcpu; | 1503 | unsigned int cpu = (unsigned long)hcpu; |
diff --git a/kernel/hrtimer.c b/kernel/hrtimer.c index 55601b3ce60e..f9f531916612 100644 --- a/kernel/hrtimer.c +++ b/kernel/hrtimer.c | |||
@@ -833,7 +833,7 @@ static void migrate_hrtimers(int cpu) | |||
833 | } | 833 | } |
834 | #endif /* CONFIG_HOTPLUG_CPU */ | 834 | #endif /* CONFIG_HOTPLUG_CPU */ |
835 | 835 | ||
836 | static int hrtimer_cpu_notify(struct notifier_block *self, | 836 | static int __devinit hrtimer_cpu_notify(struct notifier_block *self, |
837 | unsigned long action, void *hcpu) | 837 | unsigned long action, void *hcpu) |
838 | { | 838 | { |
839 | long cpu = (long)hcpu; | 839 | long cpu = (long)hcpu; |
diff --git a/kernel/profile.c b/kernel/profile.c index 68afe121e507..5a730fdb1a2c 100644 --- a/kernel/profile.c +++ b/kernel/profile.c | |||
@@ -299,7 +299,7 @@ out: | |||
299 | } | 299 | } |
300 | 300 | ||
301 | #ifdef CONFIG_HOTPLUG_CPU | 301 | #ifdef CONFIG_HOTPLUG_CPU |
302 | static int profile_cpu_callback(struct notifier_block *info, | 302 | static int __devinit profile_cpu_callback(struct notifier_block *info, |
303 | unsigned long action, void *__cpu) | 303 | unsigned long action, void *__cpu) |
304 | { | 304 | { |
305 | int node, cpu = (unsigned long)__cpu; | 305 | int node, cpu = (unsigned long)__cpu; |
diff --git a/kernel/rcupdate.c b/kernel/rcupdate.c index c0e1cb95dd4f..a8d80b7048b9 100644 --- a/kernel/rcupdate.c +++ b/kernel/rcupdate.c | |||
@@ -548,7 +548,7 @@ static void __devinit rcu_online_cpu(int cpu) | |||
548 | tasklet_init(&per_cpu(rcu_tasklet, cpu), rcu_process_callbacks, 0UL); | 548 | tasklet_init(&per_cpu(rcu_tasklet, cpu), rcu_process_callbacks, 0UL); |
549 | } | 549 | } |
550 | 550 | ||
551 | static int rcu_cpu_notify(struct notifier_block *self, | 551 | static int __devinit rcu_cpu_notify(struct notifier_block *self, |
552 | unsigned long action, void *hcpu) | 552 | unsigned long action, void *hcpu) |
553 | { | 553 | { |
554 | long cpu = (long)hcpu; | 554 | long cpu = (long)hcpu; |
diff --git a/kernel/softirq.c b/kernel/softirq.c index 9e2f1c6e73d7..db65a311f14e 100644 --- a/kernel/softirq.c +++ b/kernel/softirq.c | |||
@@ -446,7 +446,7 @@ static void takeover_tasklets(unsigned int cpu) | |||
446 | } | 446 | } |
447 | #endif /* CONFIG_HOTPLUG_CPU */ | 447 | #endif /* CONFIG_HOTPLUG_CPU */ |
448 | 448 | ||
449 | static int cpu_callback(struct notifier_block *nfb, | 449 | static int __devinit cpu_callback(struct notifier_block *nfb, |
450 | unsigned long action, | 450 | unsigned long action, |
451 | void *hcpu) | 451 | void *hcpu) |
452 | { | 452 | { |
diff --git a/kernel/softlockup.c b/kernel/softlockup.c index b5c3b94e01ce..29da0a847ba2 100644 --- a/kernel/softlockup.c +++ b/kernel/softlockup.c | |||
@@ -104,7 +104,7 @@ static int watchdog(void * __bind_cpu) | |||
104 | /* | 104 | /* |
105 | * Create/destroy watchdog threads as CPUs come and go: | 105 | * Create/destroy watchdog threads as CPUs come and go: |
106 | */ | 106 | */ |
107 | static int | 107 | static int __devinit |
108 | cpu_callback(struct notifier_block *nfb, unsigned long action, void *hcpu) | 108 | cpu_callback(struct notifier_block *nfb, unsigned long action, void *hcpu) |
109 | { | 109 | { |
110 | int hotcpu = (unsigned long)hcpu; | 110 | int hotcpu = (unsigned long)hcpu; |
diff --git a/kernel/timer.c b/kernel/timer.c index 5bb6b7976eec..878194ec8bd6 100644 --- a/kernel/timer.c +++ b/kernel/timer.c | |||
@@ -1652,7 +1652,7 @@ static void __devinit migrate_timers(int cpu) | |||
1652 | } | 1652 | } |
1653 | #endif /* CONFIG_HOTPLUG_CPU */ | 1653 | #endif /* CONFIG_HOTPLUG_CPU */ |
1654 | 1654 | ||
1655 | static int timer_cpu_notify(struct notifier_block *self, | 1655 | static int __devinit timer_cpu_notify(struct notifier_block *self, |
1656 | unsigned long action, void *hcpu) | 1656 | unsigned long action, void *hcpu) |
1657 | { | 1657 | { |
1658 | long cpu = (long)hcpu; | 1658 | long cpu = (long)hcpu; |
diff --git a/kernel/workqueue.c b/kernel/workqueue.c index 565cf7a1febd..59f0b42bd89e 100644 --- a/kernel/workqueue.c +++ b/kernel/workqueue.c | |||
@@ -559,7 +559,7 @@ static void take_over_work(struct workqueue_struct *wq, unsigned int cpu) | |||
559 | } | 559 | } |
560 | 560 | ||
561 | /* We're holding the cpucontrol mutex here */ | 561 | /* We're holding the cpucontrol mutex here */ |
562 | static int workqueue_cpu_callback(struct notifier_block *nfb, | 562 | static int __devinit workqueue_cpu_callback(struct notifier_block *nfb, |
563 | unsigned long action, | 563 | unsigned long action, |
564 | void *hcpu) | 564 | void *hcpu) |
565 | { | 565 | { |
diff --git a/mm/page_alloc.c b/mm/page_alloc.c index 9f86191bb632..e9fb2d4064c8 100644 --- a/mm/page_alloc.c +++ b/mm/page_alloc.c | |||
@@ -2009,7 +2009,7 @@ static inline void free_zone_pagesets(int cpu) | |||
2009 | } | 2009 | } |
2010 | } | 2010 | } |
2011 | 2011 | ||
2012 | static int pageset_cpuup_callback(struct notifier_block *nfb, | 2012 | static int __cpuinit pageset_cpuup_callback(struct notifier_block *nfb, |
2013 | unsigned long action, | 2013 | unsigned long action, |
2014 | void *hcpu) | 2014 | void *hcpu) |
2015 | { | 2015 | { |
@@ -1073,7 +1073,7 @@ static inline int cache_free_alien(struct kmem_cache *cachep, void *objp) | |||
1073 | 1073 | ||
1074 | #endif | 1074 | #endif |
1075 | 1075 | ||
1076 | static int cpuup_callback(struct notifier_block *nfb, | 1076 | static int __devinit cpuup_callback(struct notifier_block *nfb, |
1077 | unsigned long action, void *hcpu) | 1077 | unsigned long action, void *hcpu) |
1078 | { | 1078 | { |
1079 | long cpu = (long)hcpu; | 1079 | long cpu = (long)hcpu; |
diff --git a/mm/vmscan.c b/mm/vmscan.c index f03da33d9147..eeacb0d695c3 100644 --- a/mm/vmscan.c +++ b/mm/vmscan.c | |||
@@ -1450,7 +1450,7 @@ out: | |||
1450 | not required for correctness. So if the last cpu in a node goes | 1450 | not required for correctness. So if the last cpu in a node goes |
1451 | away, we get changed to run anywhere: as the first one comes back, | 1451 | away, we get changed to run anywhere: as the first one comes back, |
1452 | restore their cpu bindings. */ | 1452 | restore their cpu bindings. */ |
1453 | static int cpu_callback(struct notifier_block *nfb, | 1453 | static int __devinit cpu_callback(struct notifier_block *nfb, |
1454 | unsigned long action, void *hcpu) | 1454 | unsigned long action, void *hcpu) |
1455 | { | 1455 | { |
1456 | pg_data_t *pgdat; | 1456 | pg_data_t *pgdat; |