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.