On Wed, May 20, 2015 at 09:12:15PM +0200, Thomas Gleixner wrote:
> Which would be good enough for mdelay/udelay I think, but we'd need to
> measure the time spend in MWAITT so we wont return early.
> 
> Something like this:

Yeah, with a check maybe:

>         delay = usec_to_tsc(delay_usec);

        if (delay > ((1 << 32) - 1)) {
                mdelay(delay_usec);
                return;
        }

>         end = rdtsc() + delay;
>         while (1) {

I guess
                monitorx( ...);

first.

>               MWAITT(delay);
>               now = rdtsc();
>               if (end <= now)
>                         break;
>               delay = end - now;
>       }
> 
> Now we'd need to add alternatives or some other mechanism to it to
> make this conditionally for those machines.

alternative_call(mdelay, mdelayx, X86_FEATURE_MWAITT, /* no output */, timeout);

Something like that maybe.

> Not sure if it's worth the trouble.

Could be a use case for MWAITX in the kernel!

:-D

-- 
Regards/Gruss,
    Boris.

ECO tip #101: Trim your mails when you reply.
--
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Reply via email to