On Wed, 3 Apr 2019, Martin Schwidefsky wrote:
> On Mon, 1 Apr 2019 12:51:50 +0100
> Vincenzo Frascino <[email protected]> wrote:
>
> > clock_getres in the vDSO library has to preserve the same behaviour
> > of posix_get_hrtimer_res().
> >
> > In particular, posix_get_hrtimer_res() does:
> > sec = 0;
> > ns = hrtimer_resolution;
> > and hrtimer_resolution depends on the enablement of the high
> > resolution timers that can happen either at compile or at run time.
> >
> > Fix the s390 vdso implementation of clock_getres keeping a copy of
> > hrtimer_resolution in vdso data and using that directly.
> >
> > Cc: Martin Schwidefsky <[email protected]>
> > Cc: Heiko Carstens <[email protected]>
> > Signed-off-by: Vincenzo Frascino <[email protected]>
> > ---
> > arch/s390/include/asm/vdso.h | 1 +
> > arch/s390/kernel/asm-offsets.c | 2 +-
> > arch/s390/kernel/time.c | 1 +
> > arch/s390/kernel/vdso32/clock_getres.S | 17 ++++++++++++-----
> > arch/s390/kernel/vdso64/clock_getres.S | 15 ++++++++++-----
> > 5 files changed, 25 insertions(+), 11 deletions(-)
>
> I tried this patch and in principle this works. In that regard
> Acked-by: Martin Schwidefsky <[email protected]>
>
> But I wonder if the loop to check the update counter is really
> necessary. The hrtimer_resolution value can only changes once with
> the first call to hrtimer_switch_to_hres(). With the TOD clock
> as the only clock available on s390 we always have the ability
> to do hrtimer. It then all depends on the highres=[on|off] kernel
> parameter what value we get with clock_getres().
Yes, it's not changing after boot anymore.
Thanks,
tglx