aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMichael Ellerman <mpe@ellerman.id.au>2014-07-15 22:02:43 -0400
committerBenjamin Herrenschmidt <benh@kernel.crashing.org>2014-07-28 00:11:26 -0400
commit8e83e9053f23cd036b73ae246d86c50cbb3ca73e (patch)
tree94641ed8d6fe643742b669787ec6461f14c1c5b9
parentb14726c51ce338ee3abe753fa40428a119c12597 (diff)
powerpc/pseries: Switch pseries drivers to use machine_xxx_initcall()
A lot of the code in platforms/pseries is using non-machine initcalls. That means if a kernel built with pseries support runs on another platform, for example powernv, the initcalls will still run. Most of these cases are OK, though sometimes only due to luck. Some were having more effect: * hcall_inst_init - Checking FW_FEATURE_LPAR which is set on ps3 & celleb. * mobility_sysfs_init - created sysfs files unconditionally - but no effect due to ENOSYS from rtas_ibm_suspend_me() * apo_pm_init - created sysfs, allows write - nothing checks the value written to though * alloc_dispatch_log_kmem_cache - creating kmem_cache on non-pseries machines Signed-off-by: Michael Ellerman <mpe@ellerman.id.au> Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
-rw-r--r--arch/powerpc/platforms/pseries/dtl.c3
-rw-r--r--arch/powerpc/platforms/pseries/eeh_pseries.c8
-rw-r--r--arch/powerpc/platforms/pseries/hvCall_inst.c3
-rw-r--r--arch/powerpc/platforms/pseries/mobility.c3
-rw-r--r--arch/powerpc/platforms/pseries/msi.c4
-rw-r--r--arch/powerpc/platforms/pseries/power.c5
-rw-r--r--arch/powerpc/platforms/pseries/ras.c2
-rw-r--r--arch/powerpc/platforms/pseries/reconfig.c5
-rw-r--r--arch/powerpc/platforms/pseries/rng.c2
-rw-r--r--arch/powerpc/platforms/pseries/setup.c2
-rw-r--r--arch/powerpc/platforms/pseries/suspend.c5
11 files changed, 19 insertions, 23 deletions
diff --git a/arch/powerpc/platforms/pseries/dtl.c b/arch/powerpc/platforms/pseries/dtl.c
index 7d61498e45c0..1062f71f5a85 100644
--- a/arch/powerpc/platforms/pseries/dtl.c
+++ b/arch/powerpc/platforms/pseries/dtl.c
@@ -29,6 +29,7 @@
29#include <asm/lppaca.h> 29#include <asm/lppaca.h>
30#include <asm/debug.h> 30#include <asm/debug.h>
31#include <asm/plpar_wrappers.h> 31#include <asm/plpar_wrappers.h>
32#include <asm/machdep.h>
32 33
33struct dtl { 34struct dtl {
34 struct dtl_entry *buf; 35 struct dtl_entry *buf;
@@ -391,4 +392,4 @@ err_remove_dir:
391err: 392err:
392 return rc; 393 return rc;
393} 394}
394arch_initcall(dtl_init); 395machine_arch_initcall(pseries, dtl_init);
diff --git a/arch/powerpc/platforms/pseries/eeh_pseries.c b/arch/powerpc/platforms/pseries/eeh_pseries.c
index 0bec0c02c5e7..476a5d8b0b36 100644
--- a/arch/powerpc/platforms/pseries/eeh_pseries.c
+++ b/arch/powerpc/platforms/pseries/eeh_pseries.c
@@ -743,10 +743,7 @@ static struct eeh_ops pseries_eeh_ops = {
743 */ 743 */
744static int __init eeh_pseries_init(void) 744static int __init eeh_pseries_init(void)
745{ 745{
746 int ret = -EINVAL; 746 int ret;
747
748 if (!machine_is(pseries))
749 return ret;
750 747
751 ret = eeh_ops_register(&pseries_eeh_ops); 748 ret = eeh_ops_register(&pseries_eeh_ops);
752 if (!ret) 749 if (!ret)
@@ -757,5 +754,4 @@ static int __init eeh_pseries_init(void)
757 754
758 return ret; 755 return ret;
759} 756}
760 757machine_early_initcall(pseries, eeh_pseries_init);
761early_initcall(eeh_pseries_init);
diff --git a/arch/powerpc/platforms/pseries/hvCall_inst.c b/arch/powerpc/platforms/pseries/hvCall_inst.c
index cf4e7736e4f1..4575f0c9e521 100644
--- a/arch/powerpc/platforms/pseries/hvCall_inst.c
+++ b/arch/powerpc/platforms/pseries/hvCall_inst.c
@@ -27,6 +27,7 @@
27#include <asm/firmware.h> 27#include <asm/firmware.h>
28#include <asm/cputable.h> 28#include <asm/cputable.h>
29#include <asm/trace.h> 29#include <asm/trace.h>
30#include <asm/machdep.h>
30 31
31DEFINE_PER_CPU(struct hcall_stats[HCALL_STAT_ARRAY_SIZE], hcall_stats); 32DEFINE_PER_CPU(struct hcall_stats[HCALL_STAT_ARRAY_SIZE], hcall_stats);
32 33
@@ -162,4 +163,4 @@ static int __init hcall_inst_init(void)
162 163
163 return 0; 164 return 0;
164} 165}
165__initcall(hcall_inst_init); 166machine_device_initcall(pseries, hcall_inst_init);
diff --git a/arch/powerpc/platforms/pseries/mobility.c b/arch/powerpc/platforms/pseries/mobility.c
index bde7ebad3949..d146fef038b8 100644
--- a/arch/powerpc/platforms/pseries/mobility.c
+++ b/arch/powerpc/platforms/pseries/mobility.c
@@ -18,6 +18,7 @@
18#include <linux/delay.h> 18#include <linux/delay.h>
19#include <linux/slab.h> 19#include <linux/slab.h>
20 20
21#include <asm/machdep.h>
21#include <asm/rtas.h> 22#include <asm/rtas.h>
22#include "pseries.h" 23#include "pseries.h"
23 24
@@ -362,4 +363,4 @@ static int __init mobility_sysfs_init(void)
362 363
363 return rc; 364 return rc;
364} 365}
365device_initcall(mobility_sysfs_init); 366machine_device_initcall(pseries, mobility_sysfs_init);
diff --git a/arch/powerpc/platforms/pseries/msi.c b/arch/powerpc/platforms/pseries/msi.c
index 0c882e83c4ce..18ff4626d74e 100644
--- a/arch/powerpc/platforms/pseries/msi.c
+++ b/arch/powerpc/platforms/pseries/msi.c
@@ -16,6 +16,7 @@
16#include <asm/rtas.h> 16#include <asm/rtas.h>
17#include <asm/hw_irq.h> 17#include <asm/hw_irq.h>
18#include <asm/ppc-pci.h> 18#include <asm/ppc-pci.h>
19#include <asm/machdep.h>
19 20
20static int query_token, change_token; 21static int query_token, change_token;
21 22
@@ -532,5 +533,4 @@ static int rtas_msi_init(void)
532 533
533 return 0; 534 return 0;
534} 535}
535arch_initcall(rtas_msi_init); 536machine_arch_initcall(pseries, rtas_msi_init);
536
diff --git a/arch/powerpc/platforms/pseries/power.c b/arch/powerpc/platforms/pseries/power.c
index 6d6266236446..c26eadde434c 100644
--- a/arch/powerpc/platforms/pseries/power.c
+++ b/arch/powerpc/platforms/pseries/power.c
@@ -25,6 +25,7 @@
25#include <linux/string.h> 25#include <linux/string.h>
26#include <linux/errno.h> 26#include <linux/errno.h>
27#include <linux/init.h> 27#include <linux/init.h>
28#include <asm/machdep.h>
28 29
29unsigned long rtas_poweron_auto; /* default and normal state is 0 */ 30unsigned long rtas_poweron_auto; /* default and normal state is 0 */
30 31
@@ -71,11 +72,11 @@ static int __init pm_init(void)
71 return -ENOMEM; 72 return -ENOMEM;
72 return sysfs_create_group(power_kobj, &attr_group); 73 return sysfs_create_group(power_kobj, &attr_group);
73} 74}
74core_initcall(pm_init); 75machine_core_initcall(pseries, pm_init);
75#else 76#else
76static int __init apo_pm_init(void) 77static int __init apo_pm_init(void)
77{ 78{
78 return (sysfs_create_file(power_kobj, &auto_poweron_attr.attr)); 79 return (sysfs_create_file(power_kobj, &auto_poweron_attr.attr));
79} 80}
80__initcall(apo_pm_init); 81machine_device_initcall(pseries, apo_pm_init);
81#endif 82#endif
diff --git a/arch/powerpc/platforms/pseries/ras.c b/arch/powerpc/platforms/pseries/ras.c
index 9c5778e6ed4b..dff05b9eb946 100644
--- a/arch/powerpc/platforms/pseries/ras.c
+++ b/arch/powerpc/platforms/pseries/ras.c
@@ -71,7 +71,7 @@ static int __init init_ras_IRQ(void)
71 71
72 return 0; 72 return 0;
73} 73}
74subsys_initcall(init_ras_IRQ); 74machine_subsys_initcall(pseries, init_ras_IRQ);
75 75
76#define EPOW_SHUTDOWN_NORMAL 1 76#define EPOW_SHUTDOWN_NORMAL 1
77#define EPOW_SHUTDOWN_ON_UPS 2 77#define EPOW_SHUTDOWN_ON_UPS 2
diff --git a/arch/powerpc/platforms/pseries/reconfig.c b/arch/powerpc/platforms/pseries/reconfig.c
index 1c0a60d98867..0f319521e002 100644
--- a/arch/powerpc/platforms/pseries/reconfig.c
+++ b/arch/powerpc/platforms/pseries/reconfig.c
@@ -446,13 +446,10 @@ static int proc_ppc64_create_ofdt(void)
446{ 446{
447 struct proc_dir_entry *ent; 447 struct proc_dir_entry *ent;
448 448
449 if (!machine_is(pseries))
450 return 0;
451
452 ent = proc_create("powerpc/ofdt", S_IWUSR, NULL, &ofdt_fops); 449 ent = proc_create("powerpc/ofdt", S_IWUSR, NULL, &ofdt_fops);
453 if (ent) 450 if (ent)
454 proc_set_size(ent, 0); 451 proc_set_size(ent, 0);
455 452
456 return 0; 453 return 0;
457} 454}
458__initcall(proc_ppc64_create_ofdt); 455machine_device_initcall(pseries, proc_ppc64_create_ofdt);
diff --git a/arch/powerpc/platforms/pseries/rng.c b/arch/powerpc/platforms/pseries/rng.c
index 72a102758d4e..e09608770909 100644
--- a/arch/powerpc/platforms/pseries/rng.c
+++ b/arch/powerpc/platforms/pseries/rng.c
@@ -42,4 +42,4 @@ static __init int rng_init(void)
42 42
43 return 0; 43 return 0;
44} 44}
45subsys_initcall(rng_init); 45machine_subsys_initcall(pseries, rng_init);
diff --git a/arch/powerpc/platforms/pseries/setup.c b/arch/powerpc/platforms/pseries/setup.c
index f2f40e64658f..cfe8a6389a51 100644
--- a/arch/powerpc/platforms/pseries/setup.c
+++ b/arch/powerpc/platforms/pseries/setup.c
@@ -351,7 +351,7 @@ static int alloc_dispatch_log_kmem_cache(void)
351 351
352 return alloc_dispatch_logs(); 352 return alloc_dispatch_logs();
353} 353}
354early_initcall(alloc_dispatch_log_kmem_cache); 354machine_early_initcall(pseries, alloc_dispatch_log_kmem_cache);
355 355
356static void pseries_lpar_idle(void) 356static void pseries_lpar_idle(void)
357{ 357{
diff --git a/arch/powerpc/platforms/pseries/suspend.c b/arch/powerpc/platforms/pseries/suspend.c
index b87b97849d4c..e76aefae2aa2 100644
--- a/arch/powerpc/platforms/pseries/suspend.c
+++ b/arch/powerpc/platforms/pseries/suspend.c
@@ -265,7 +265,7 @@ static int __init pseries_suspend_init(void)
265{ 265{
266 int rc; 266 int rc;
267 267
268 if (!machine_is(pseries) || !firmware_has_feature(FW_FEATURE_LPAR)) 268 if (!firmware_has_feature(FW_FEATURE_LPAR))
269 return 0; 269 return 0;
270 270
271 suspend_data.token = rtas_token("ibm,suspend-me"); 271 suspend_data.token = rtas_token("ibm,suspend-me");
@@ -280,5 +280,4 @@ static int __init pseries_suspend_init(void)
280 suspend_set_ops(&pseries_suspend_ops); 280 suspend_set_ops(&pseries_suspend_ops);
281 return 0; 281 return 0;
282} 282}
283 283machine_device_initcall(pseries, pseries_suspend_init);
284__initcall(pseries_suspend_init);