powerpc: move epapr paravirt init of power_save to an initcall

some restructuring of epapr paravirt init resulted in
ppc_md.power_save being set, and then overwritten to
NULL during machine_init.  This patch splits the
initialization of ppc_md.power_save out into a postcore
init call.

Signed-off-by: Stuart Yoder <stuart.yoder@freescale.com>
Signed-off-by: Scott Wood <scottwood@freescale.com>
This commit is contained in:
Stuart Yoder 2014-04-30 18:34:23 -05:00 committed by Scott Wood
parent 2b09c60389
commit 83e267d797
1 changed files with 11 additions and 1 deletions

View File

@ -30,6 +30,7 @@ extern u32 epapr_ev_idle_start[];
#endif #endif
bool epapr_paravirt_enabled; bool epapr_paravirt_enabled;
static bool epapr_has_idle;
static int __init early_init_dt_scan_epapr(unsigned long node, static int __init early_init_dt_scan_epapr(unsigned long node,
const char *uname, const char *uname,
@ -55,7 +56,7 @@ static int __init early_init_dt_scan_epapr(unsigned long node,
#if !defined(CONFIG_64BIT) || defined(CONFIG_PPC_BOOK3E_64) #if !defined(CONFIG_64BIT) || defined(CONFIG_PPC_BOOK3E_64)
if (of_get_flat_dt_prop(node, "has-idle", NULL)) if (of_get_flat_dt_prop(node, "has-idle", NULL))
ppc_md.power_save = epapr_ev_idle; epapr_has_idle = true;
#endif #endif
epapr_paravirt_enabled = true; epapr_paravirt_enabled = true;
@ -70,3 +71,12 @@ int __init epapr_paravirt_early_init(void)
return 0; return 0;
} }
static int __init epapr_idle_init(void)
{
if (epapr_has_idle)
ppc_md.power_save = epapr_ev_idle;
return 0;
}
postcore_initcall(epapr_idle_init);