On 09/17/2010 05:48 PM, Venkatesh Pallipadi wrote: >> >> + wbinvd(); >> + >> while (1) { >> - mb(); >> - wbinvd(); >> __monitor(¤t_thread_info()->flags, 0, 0); >> mb(); > > > Just one observation. There are some CPUs with errata that need > clflush before monitor. So, if that CPU wakesup spuriously it may have > problem reentering idle. Not sure whether that will be a problem as > that errata also depended on read happening on the flag. May be its > better to do monitor (0, 0, 0). > It seems the easy way to deal with that would be to just add clflush before monitor... it is *probably* redundant, but it should be safe to do. It means depending on X86_FEATURE_CLFLUSH as well as X86_FEATURE_MWAIT, but I don't think there is any x86 processor which has MWAIT and not CLFLUSH, and I highly doubt there ever will be. Does anyone see any downside? -hpa -- To unsubscribe from this list: send the line "unsubscribe linux-tip-commits" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html
![]() |