On 09/20/2010 11:20 AM, H. Peter Anvin wrote: > 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? > Patch for review... anyone see any problem with it? -hpa