Messages in this thread |  | | | Date | Mon, 20 Sep 2010 11:20:31 -0700 | | From | "H. Peter Anvin" <> | | Subject | Re: [tip:x86/idle] x86, hotplug: Move WBINVD back outside the play_dead loop |
| |
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
|  |