powerpc/powernv: set power_save func after the idle states are initialized
authorShreyas B. Prabhu <shreyas@linux.vnet.ibm.com>
Wed, 8 Jun 2016 16:54:27 +0000 (11:54 -0500)
committerMichael Ellerman <mpe@ellerman.id.au>
Thu, 23 Jun 2016 00:46:59 +0000 (10:46 +1000)
pnv_init_idle_states() discovers supported idle states from the
device tree and does the required initialization. Set power_save
function pointer only after this initialization is done

Otherwise on machines which don't support nap, eg. Power9, the kernel
will crash when it tries to nap.

Reviewed-by: Gautham R. Shenoy <ego@linux.vnet.ibm.com>
Signed-off-by: Shreyas B. Prabhu <shreyas@linux.vnet.ibm.com>
Acked-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
Acked-by: Michael Neuling <mikey@neuling.org>
Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
arch/powerpc/platforms/powernv/idle.c
arch/powerpc/platforms/powernv/setup.c

index 92a8020f3502e409b432cec62169cdc555d66543..8a77f5c4159e31de87231770323df1e7c792c05f 100644 (file)
@@ -285,6 +285,9 @@ static int __init pnv_init_idle_states(void)
        }
 
        pnv_alloc_idle_core_states();
+
+       if (supported_cpuidle_states & OPAL_PM_NAP_ENABLED)
+               ppc_md.power_save = power7_idle;
 out_free:
        kfree(flags);
 out:
index ee6430bedcc3181edd39615097be788f8fae7155..8492bbbcfc0812400fe342a5a5208023626372f1 100644 (file)
@@ -315,7 +315,7 @@ define_machine(powernv) {
        .get_proc_freq          = pnv_get_proc_freq,
        .progress               = pnv_progress,
        .machine_shutdown       = pnv_shutdown,
-       .power_save             = power7_idle,
+       .power_save             = NULL,
        .calibrate_decr         = generic_calibrate_decr,
 #ifdef CONFIG_KEXEC
        .kexec_cpu_down         = pnv_kexec_cpu_down,