powerpc/powernv: Move opal_power_control_init() call in opal_init().
authorMahesh Salgaonkar <mahesh@linux.vnet.ibm.com>
Thu, 13 Dec 2018 05:47:31 +0000 (11:17 +0530)
committerMichael Ellerman <mpe@ellerman.id.au>
Fri, 21 Dec 2018 00:32:49 +0000 (11:32 +1100)
opal_power_control_init() depends on opal message notifier to be
initialized, which is done in opal_init()->opal_message_init(). But both
these initialization are called through machine initcalls and it all
depends on in which order they being called. So far these are called in
correct order (may be we got lucky) and never saw any issue. But it is
clearer to control initialization order explicitly by moving
opal_power_control_init() into opal_init().

Signed-off-by: Mahesh Salgaonkar <mahesh@linux.vnet.ibm.com>
Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
arch/powerpc/include/asm/opal.h
arch/powerpc/platforms/powernv/opal-power.c
arch/powerpc/platforms/powernv/opal.c

index ff3866473afe411f63c3d4e968ff6b574694402b..a55b01c90bb13b5bad7431bb127b2fdb92123ff6 100644 (file)
@@ -347,6 +347,7 @@ extern int opal_async_comp_init(void);
 extern int opal_sensor_init(void);
 extern int opal_hmi_handler_init(void);
 extern int opal_event_init(void);
+int opal_power_control_init(void);
 
 extern int opal_machine_check(struct pt_regs *regs);
 extern bool opal_mce_check_early_recovery(struct pt_regs *regs);
index 58dc3308237f6aa7a943f842dcc6b874d1baea62..89ab1da5765718e2d30b98de22a78ca2ee21f2eb 100644 (file)
@@ -138,7 +138,7 @@ static struct notifier_block opal_power_control_nb = {
        .priority       = 0,
 };
 
-static int __init opal_power_control_init(void)
+int __init opal_power_control_init(void)
 {
        int ret, supported = 0;
        struct device_node *np;
@@ -176,4 +176,3 @@ static int __init opal_power_control_init(void)
 
        return 0;
 }
-machine_subsys_initcall(powernv, opal_power_control_init);
index beed86f4224b998a77d66a0102b509cfe222fb22..f6dfc0534969991e0619886b292782ca890c3cdf 100644 (file)
@@ -960,6 +960,9 @@ static int __init opal_init(void)
        /* Initialise OPAL sensor groups */
        opal_sensor_groups_init();
 
+       /* Initialise OPAL Power control interface */
+       opal_power_control_init();
+
        return 0;
 }
 machine_subsys_initcall(powernv, opal_init);