Re: [RFC PATCH] x86/delay: Do not use cpu_tss in preemptible ctxt in delay_mwaitx()

From: Borislav Petkov
Date: Wed Mar 09 2016 - 13:10:31 EST


On Wed, Mar 09, 2016 at 09:56:39AM -0800, Andy Lutomirski wrote:
> On Mar 9, 2016 3:38 AM, "Borislav Petkov" <bp@xxxxxxxxx> wrote:
> >
> > From: Borislav Petkov <bp@xxxxxxx>
> >
> > So Andy had a good idea about using a cacheline-aligned, seldomly used
> > per-cpu var as the MONITORX target but we can't use it in preemptible
> > context. The first simple idea I have is to disable preemption around us
> > dereffing it.
>
> What's the actual problem? Is it the preempt warnings and, if so,
> would raw_cpu_ptr fix it?

Yeah, it is the warning:

[ 1.565876] BUG: using smp_processor_id() in preemptible [00000000] code: udevd/312
[ 1.566123] caller is delay_mwaitx+0x40/0xa0

and yes, I think so. I don't think we care about being in preemptible
context since we're going idle anyway and doesn't matter which cpu_tss
we touch.

Yeah, I'll use raw_cpu_ptr...

> It may pay to move it into the loop, though.

... and won't need to do that.

Thanks for the idea.

--
Regards/Gruss,
Boris.

ECO tip #101: Trim your mails when you reply.