Re: [tip:x86/idle] x86, hotplug: Move WBINVD back outside the play_deadloop

From: H. Peter Anvin
Date: Mon Sep 20 2010 - 16:12:00 EST


This is a multi-part message in MIME format.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(&current_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