diff options
author | Paul Mackerras <paulus@samba.org> | 2008-01-30 19:25:51 -0500 |
---|---|---|
committer | Paul Mackerras <paulus@samba.org> | 2008-01-30 19:25:51 -0500 |
commit | bd45ac0c5daae35e7c71138172e63df5cf644cf6 (patch) | |
tree | 5eb5a599bf6a9d7a8a34e802db932aa9e9555de4 /arch/powerpc/platforms/pseries | |
parent | 4eece4ccf997c0e6d8fdad3d842e37b16b8d705f (diff) | |
parent | 5bdeae46be6dfe9efa44a548bd622af325f4bdb4 (diff) |
Merge branch 'linux-2.6'
Diffstat (limited to 'arch/powerpc/platforms/pseries')
-rw-r--r-- | arch/powerpc/platforms/pseries/hotplug-cpu.c | 8 | ||||
-rw-r--r-- | arch/powerpc/platforms/pseries/power.c | 32 | ||||
-rw-r--r-- | arch/powerpc/platforms/pseries/rtasd.c | 8 |
3 files changed, 21 insertions, 27 deletions
diff --git a/arch/powerpc/platforms/pseries/hotplug-cpu.c b/arch/powerpc/platforms/pseries/hotplug-cpu.c index 412e6b42986f..c4ad54e0f288 100644 --- a/arch/powerpc/platforms/pseries/hotplug-cpu.c +++ b/arch/powerpc/platforms/pseries/hotplug-cpu.c | |||
@@ -153,7 +153,7 @@ static int pseries_add_processor(struct device_node *np) | |||
153 | for (i = 0; i < nthreads; i++) | 153 | for (i = 0; i < nthreads; i++) |
154 | cpu_set(i, tmp); | 154 | cpu_set(i, tmp); |
155 | 155 | ||
156 | lock_cpu_hotplug(); | 156 | cpu_maps_update_begin(); |
157 | 157 | ||
158 | BUG_ON(!cpus_subset(cpu_present_map, cpu_possible_map)); | 158 | BUG_ON(!cpus_subset(cpu_present_map, cpu_possible_map)); |
159 | 159 | ||
@@ -190,7 +190,7 @@ static int pseries_add_processor(struct device_node *np) | |||
190 | } | 190 | } |
191 | err = 0; | 191 | err = 0; |
192 | out_unlock: | 192 | out_unlock: |
193 | unlock_cpu_hotplug(); | 193 | cpu_maps_update_done(); |
194 | return err; | 194 | return err; |
195 | } | 195 | } |
196 | 196 | ||
@@ -211,7 +211,7 @@ static void pseries_remove_processor(struct device_node *np) | |||
211 | 211 | ||
212 | nthreads = len / sizeof(u32); | 212 | nthreads = len / sizeof(u32); |
213 | 213 | ||
214 | lock_cpu_hotplug(); | 214 | cpu_maps_update_begin(); |
215 | for (i = 0; i < nthreads; i++) { | 215 | for (i = 0; i < nthreads; i++) { |
216 | for_each_present_cpu(cpu) { | 216 | for_each_present_cpu(cpu) { |
217 | if (get_hard_smp_processor_id(cpu) != intserv[i]) | 217 | if (get_hard_smp_processor_id(cpu) != intserv[i]) |
@@ -225,7 +225,7 @@ static void pseries_remove_processor(struct device_node *np) | |||
225 | printk(KERN_WARNING "Could not find cpu to remove " | 225 | printk(KERN_WARNING "Could not find cpu to remove " |
226 | "with physical id 0x%x\n", intserv[i]); | 226 | "with physical id 0x%x\n", intserv[i]); |
227 | } | 227 | } |
228 | unlock_cpu_hotplug(); | 228 | cpu_maps_update_done(); |
229 | } | 229 | } |
230 | 230 | ||
231 | static int pseries_smp_notifier(struct notifier_block *nb, | 231 | static int pseries_smp_notifier(struct notifier_block *nb, |
diff --git a/arch/powerpc/platforms/pseries/power.c b/arch/powerpc/platforms/pseries/power.c index 73e69023d90a..e95fc1594c84 100644 --- a/arch/powerpc/platforms/pseries/power.c +++ b/arch/powerpc/platforms/pseries/power.c | |||
@@ -28,13 +28,15 @@ | |||
28 | 28 | ||
29 | unsigned long rtas_poweron_auto; /* default and normal state is 0 */ | 29 | unsigned long rtas_poweron_auto; /* default and normal state is 0 */ |
30 | 30 | ||
31 | static ssize_t auto_poweron_show(struct kset *kset, char *buf) | 31 | static ssize_t auto_poweron_show(struct kobject *kobj, |
32 | struct kobj_attribute *attr, char *buf) | ||
32 | { | 33 | { |
33 | return sprintf(buf, "%lu\n", rtas_poweron_auto); | 34 | return sprintf(buf, "%lu\n", rtas_poweron_auto); |
34 | } | 35 | } |
35 | 36 | ||
36 | static ssize_t | 37 | static ssize_t auto_poweron_store(struct kobject *kobj, |
37 | auto_poweron_store(struct kset *kset, const char *buf, size_t n) | 38 | struct kobj_attribute *attr, |
39 | const char *buf, size_t n) | ||
38 | { | 40 | { |
39 | int ret; | 41 | int ret; |
40 | unsigned long ups_restart; | 42 | unsigned long ups_restart; |
@@ -47,17 +49,11 @@ auto_poweron_store(struct kset *kset, const char *buf, size_t n) | |||
47 | return -EINVAL; | 49 | return -EINVAL; |
48 | } | 50 | } |
49 | 51 | ||
50 | static struct subsys_attribute auto_poweron_attr = { | 52 | static struct kobj_attribute auto_poweron_attr = |
51 | .attr = { | 53 | __ATTR(auto_poweron, 0644, auto_poweron_show, auto_poweron_store); |
52 | .name = __stringify(auto_poweron), | ||
53 | .mode = 0644, | ||
54 | }, | ||
55 | .show = auto_poweron_show, | ||
56 | .store = auto_poweron_store, | ||
57 | }; | ||
58 | 54 | ||
59 | #ifndef CONFIG_PM | 55 | #ifndef CONFIG_PM |
60 | decl_subsys(power,NULL,NULL); | 56 | struct kobject *power_kobj; |
61 | 57 | ||
62 | static struct attribute *g[] = { | 58 | static struct attribute *g[] = { |
63 | &auto_poweron_attr.attr, | 59 | &auto_poweron_attr.attr, |
@@ -70,18 +66,16 @@ static struct attribute_group attr_group = { | |||
70 | 66 | ||
71 | static int __init pm_init(void) | 67 | static int __init pm_init(void) |
72 | { | 68 | { |
73 | int error = subsystem_register(&power_subsys); | 69 | power_kobj = kobject_create_and_add("power", NULL); |
74 | if (!error) | 70 | if (!power_kobj) |
75 | error = sysfs_create_group(&power_subsys.kobj, &attr_group); | 71 | return -ENOMEM; |
76 | return error; | 72 | return sysfs_create_group(power_kobj, &attr_group); |
77 | } | 73 | } |
78 | core_initcall(pm_init); | 74 | core_initcall(pm_init); |
79 | #else | 75 | #else |
80 | extern struct kset power_subsys; | ||
81 | |||
82 | static int __init apo_pm_init(void) | 76 | static int __init apo_pm_init(void) |
83 | { | 77 | { |
84 | return (subsys_create_file(&power_subsys, &auto_poweron_attr)); | 78 | return (sysfs_create_file(power_kobj, &auto_poweron_attr)); |
85 | } | 79 | } |
86 | __initcall(apo_pm_init); | 80 | __initcall(apo_pm_init); |
87 | #endif | 81 | #endif |
diff --git a/arch/powerpc/platforms/pseries/rtasd.c b/arch/powerpc/platforms/pseries/rtasd.c index 73401c820110..e3078ce41518 100644 --- a/arch/powerpc/platforms/pseries/rtasd.c +++ b/arch/powerpc/platforms/pseries/rtasd.c | |||
@@ -382,7 +382,7 @@ static void do_event_scan_all_cpus(long delay) | |||
382 | { | 382 | { |
383 | int cpu; | 383 | int cpu; |
384 | 384 | ||
385 | lock_cpu_hotplug(); | 385 | get_online_cpus(); |
386 | cpu = first_cpu(cpu_online_map); | 386 | cpu = first_cpu(cpu_online_map); |
387 | for (;;) { | 387 | for (;;) { |
388 | set_cpus_allowed(current, cpumask_of_cpu(cpu)); | 388 | set_cpus_allowed(current, cpumask_of_cpu(cpu)); |
@@ -390,15 +390,15 @@ static void do_event_scan_all_cpus(long delay) | |||
390 | set_cpus_allowed(current, CPU_MASK_ALL); | 390 | set_cpus_allowed(current, CPU_MASK_ALL); |
391 | 391 | ||
392 | /* Drop hotplug lock, and sleep for the specified delay */ | 392 | /* Drop hotplug lock, and sleep for the specified delay */ |
393 | unlock_cpu_hotplug(); | 393 | put_online_cpus(); |
394 | msleep_interruptible(delay); | 394 | msleep_interruptible(delay); |
395 | lock_cpu_hotplug(); | 395 | get_online_cpus(); |
396 | 396 | ||
397 | cpu = next_cpu(cpu, cpu_online_map); | 397 | cpu = next_cpu(cpu, cpu_online_map); |
398 | if (cpu == NR_CPUS) | 398 | if (cpu == NR_CPUS) |
399 | break; | 399 | break; |
400 | } | 400 | } |
401 | unlock_cpu_hotplug(); | 401 | put_online_cpus(); |
402 | } | 402 | } |
403 | 403 | ||
404 | static int rtasd(void *unused) | 404 | static int rtasd(void *unused) |