On Fri, Nov 24, 2017 at 08:05:49AM +0100, Cédric Le Goater wrote: > Just like for hot unplug CPUs, when a guest is rebooted, the secondary > CPUs can be awaken by the decrementer and start entering SLOF at the > same time the boot CPU is. > > To be safe, let's disable on the secondaries all the exceptions which > can cause an exit while the CPU is in power-saving mode. > > Based on previous work from Nikunj A Dadhania <nik...@linux.vnet.ibm.com> > > Signed-off-by: Cédric Le Goater <c...@kaod.org> > Reviewed-by: David Gibson <da...@gibson.dropbear.id.au>
Applied to ppc-for-2.12. > --- > > Changes in v4: > > - used the 'lpcr_pm' field of PowerPCCPUClass > > Changes in v3: > > - used the cpu_ppc_papr_pece_bits() helper > > hw/ppc/spapr_cpu_core.c | 8 ++++++++ > 1 file changed, 8 insertions(+) > > diff --git a/hw/ppc/spapr_cpu_core.c b/hw/ppc/spapr_cpu_core.c > index 3a4c17401226..a2290528542d 100644 > --- a/hw/ppc/spapr_cpu_core.c > +++ b/hw/ppc/spapr_cpu_core.c > @@ -26,6 +26,7 @@ static void spapr_cpu_reset(void *opaque) > PowerPCCPU *cpu = opaque; > CPUState *cs = CPU(cpu); > CPUPPCState *env = &cpu->env; > + PowerPCCPUClass *pcc = POWERPC_CPU_GET_CLASS(cpu); > > cpu_reset(cs); > > @@ -35,6 +36,13 @@ static void spapr_cpu_reset(void *opaque) > cs->halted = 1; > > env->spr[SPR_HIOR] = 0; > + > + /* Disable Power-saving mode Exit Cause exceptions for the CPU. > + * This can cause issues when rebooting the guest if a secondary > + * is awaken */ > + if (cs != first_cpu) { > + env->spr[SPR_LPCR] &= ~pcc->lpcr_pm; > + } > } > > static void spapr_cpu_destroy(PowerPCCPU *cpu) -- David Gibson | I'll have my music baroque, and my code david AT gibson.dropbear.id.au | minimalist, thank you. NOT _the_ _other_ | _way_ _around_! http://www.ozlabs.org/~dgibson
signature.asc
Description: PGP signature