Re: Direct rdtsc call side-effect

From: Peter Zijlstra
Date: Fri Jun 02 2023 - 02:46:02 EST


On Thu, Jun 01, 2023 at 09:41:15PM +0000, Steven Noonan wrote:
> On Thursday, June 1st, 2023 at 1:31 PM, Peter Zijlstra <peterz@xxxxxxxxxxxxx> wrote:
> > What about kernel based emulation? You could tie it into user_dispatch
> > and have a user_dispatch tsc offset.
> >
>
> > So regular kernel emulation simply returns the native value (keeps the
> > VDSO working for one), but then from a user_dispatch range, it returns
> > +offset.
> >
>
> > That is; how slow is the below?
>
> It's around 1800-1900 clock cycles on this system

Much more expensive than the actual instruction ofcourse, but that seems
eminently usable.

> (modified patch attached, compile fix + rdtscp support).

Right, that's what I get for writing 'patches' while falling asleep :/

> Since faulting would still make the vDSO clocks go through this path
> we'd have to be careful that whatever offsets we throw into this path
> don't affect the correctness of the other clocks.

Hence the suggested tie-in with user-dispatch; only add the offset when
the IP is from the user-dispatch range.