On Mon, Jan 20, 2014 at 12:56:47AM -0800, H. Peter Anvin wrote: > On 01/20/2014 12:26 AM, Peter Zijlstra wrote: > > On Sun, Jan 19, 2014 at 11:45:43PM -0500, Len Brown wrote: > >> +static void mwait_idle(void) > >> +{ > >> + mwait_idle_with_hints(0, 0); > >> +} > >> + > >> > >> The reason the patch above will crash Core2 machines is because > >> core2 machines don't support mwait_idle_with_hints(). > >> > >> The calling sequence for old and new MWAIT instructions is different. > >> The former must be invoked with interrupts enabled, > >> and the later can be invoked with interrupts disabled, > >> which is a feature that Linux takes advantage of. > > > > What old and new? They're the same byte sequence: 0x0f 0x01 0xc9 > > > > And your 'old' __sti_mwait(0,0) has the exact same arguments as > > mwait_idle_with_hints(0,0). > > > > The difference is the STI! So do the local_irq_enable(); mwait_idle_with_hints(0,0); thing. But that's entirely different from saying that core2 doesn't support mwait_idle_with_hints because its a different instruction. -- To unsubscribe from this list: send the line "unsubscribe linux-next" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html