On Tue, 2014-09-12 at 18:56:50 UTC, "Shreyas B. Prabhu" wrote: > From: Paul Mackerras <[email protected]> > > Currently, when going idle, we set the flag indicating that we are in > nap mode (paca->kvm_hstate.hwthread_state) and then execute the nap > (or sleep or rvwinkle) instruction, all with the MMU on. This is bad > for two reasons: (a) the architecture specifies that those instructions > must be executed with the MMU off, and in fact with only the SF, HV, ME > and possibly RI bits set, and (b) this introduces a race, because as > soon as we set the flag, another thread can switch the MMU to a guest > context. If the race is lost, this thread will typically start looping > on relocation-on ISIs at 0xc...4400. > > This fixes it by setting the MSR as required by the architecture before > setting the flag or executing the nap/sleep/rvwinkle instruction. > > [ [email protected]: Edited to handle LE ] > Signed-off-by: Paul Mackerras <[email protected]> > Signed-off-by: Shreyas B. Prabhu <[email protected]> > Cc: Benjamin Herrenschmidt <[email protected]> > Cc: Michael Ellerman <[email protected]> > Cc: [email protected]
I'm going to CC this to stable unless anyone objects. It's not something people are likely to hit, but the result is fairly catastrophic. cheers -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to [email protected] More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/

