Re: [PATCH v2] arm: Added support for getcpu() vDSO using TPIDRURW

From: Mark Rutland
Date: Wed Oct 05 2016 - 17:48:00 EST


On Wed, Oct 05, 2016 at 10:01:38PM +0100, Russell King - ARM Linux wrote:
> On Wed, Oct 05, 2016 at 09:44:53PM +0100, Mark Rutland wrote:
> > The zeroing case is similar to the restartable sequences design. So that's
> > probably worth looking into.
>
> You're sending mixed messages: in your previous message, you said:
>
> Arguably, someone could have (ab)used TPIDRURW between commits 6a1c531
> and a4780ad to detect context switches, but in practice they don't
> appear to have, and we know of an established user relying on the
> current behaviour.
>
> For better or worse, the current behaviour is ABI.
>
> Now you're suggesting that we could go back to the case where the
> register is zeroed.

Sorry; clumsy wording on my behalf.

I meant that functionality-wise, restartable sequences had similar behaviour to
the zeroing case (without touching TPIDRURW at all) and were probably worth
looking at. I did not intend to suggest that we should go pack to case where
TPIDRURW was zeroed.

> Well, the fact is that we _can_ change the TPIDRURW behaviour - we just
> need to be careful about how we change it. Eg, we _could_ introduce a
> per-process flag which indicates that we want some other behaviour from
> TPIDRURW such as zeroing it on context switches. The default would be
> to preserve the existing behaviour as doing anything else breaks
> existing programs. The problem there is finding an acceptable way to
> control such a flag from userspace (eg, prctl, syscall, etc).

Sure. Something like that could work.

Thanks,
Mark.