Linux Kernel Selftest development
 help / color / mirror / Atom feed
* [PATCH v4 0/3] Fix vDSO clock_getres()
@ 2019-05-23 11:21 vincenzo.frascino
  2019-05-23 11:21 ` Vincenzo Frascino
                   ` (3 more replies)
  0 siblings, 4 replies; 29+ messages in thread
From: vincenzo.frascino @ 2019-05-23 11:21 UTC (permalink / raw)


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.

A possible fix is to change the vdso implementation of clock_getres,
keeping a copy of hrtimer_resolution in vdso data and using that
directly [1].

This patchset implements the proposed fix for arm64, powerpc, s390,
nds32 and adds a test to verify that the syscall and the vdso library
implementation of clock_getres return the same values.

Even if these patches are unified by the same topic, there is no
dependency between them, hence they can be merged singularly by each
arch maintainer.

Note: arm64 and nds32 respective fixes have been merged in 5.2-rc1,
hence they have been removed from this series.

[1] https://marc.info/?l=linux-arm-kernel&m=155110381930196&w=2

Changes:
--------
v4:
  - Address review comments.
v3:
  - Rebased on 5.2-rc1.
  - Address review comments.
v2:
  - Rebased on 5.1-rc5.
  - Addressed review comments.

Cc: Christophe Leroy <christophe.leroy at c-s.fr>
Cc: Benjamin Herrenschmidt <benh at kernel.crashing.org>
Cc: Paul Mackerras <paulus at samba.org>
Cc: Michael Ellerman <mpe at ellerman.id.au>
Cc: Martin Schwidefsky <schwidefsky at de.ibm.com>
Cc: Heiko Carstens <heiko.carstens at de.ibm.com>
Cc: Shuah Khan <shuah at kernel.org>
Cc: Thomas Gleixner <tglx at linutronix.de>
Cc: Arnd Bergmann <arnd at arndb.de>
Signed-off-by: Vincenzo Frascino <vincenzo.frascino at arm.com>

Vincenzo Frascino (3):
  powerpc: Fix vDSO clock_getres()
  s390: Fix vDSO clock_getres()
  kselftest: Extend vDSO selftest to clock_getres

 arch/powerpc/include/asm/vdso_datapage.h      |   2 +
 arch/powerpc/kernel/asm-offsets.c             |   2 +-
 arch/powerpc/kernel/time.c                    |   1 +
 arch/powerpc/kernel/vdso32/gettimeofday.S     |   7 +-
 arch/powerpc/kernel/vdso64/gettimeofday.S     |   7 +-
 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        |  12 +-
 arch/s390/kernel/vdso64/clock_getres.S        |  10 +-
 tools/testing/selftests/vDSO/Makefile         |   2 +
 .../selftests/vDSO/vdso_clock_getres.c        | 124 ++++++++++++++++++
 12 files changed, 155 insertions(+), 16 deletions(-)
 create mode 100644 tools/testing/selftests/vDSO/vdso_clock_getres.c

-- 
2.21.0

^ permalink raw reply	[flat|nested] 29+ messages in thread

end of thread, other threads:[~2019-06-13 15:22 UTC | newest]

Thread overview: 29+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2019-05-23 11:21 [PATCH v4 0/3] Fix vDSO clock_getres() vincenzo.frascino
2019-05-23 11:21 ` Vincenzo Frascino
2019-05-23 11:21 ` [PATCH v4 1/3] powerpc: " vincenzo.frascino
2019-05-23 11:21   ` Vincenzo Frascino
2019-05-23 11:21 ` [PATCH v4 2/3] s390: " vincenzo.frascino
2019-05-23 11:21   ` Vincenzo Frascino
2019-05-23 11:21 ` [PATCH v4 3/3] kselftest: Extend vDSO selftest to clock_getres vincenzo.frascino
2019-05-23 11:21   ` Vincenzo Frascino
2019-05-28  6:19   ` mpe
2019-05-28  6:19     ` Michael Ellerman
2019-05-28 11:57     ` vincenzo.frascino
2019-05-28 11:57       ` Vincenzo Frascino
2019-05-28 17:01       ` christophe.leroy
2019-05-28 17:01         ` Christophe Leroy
2019-05-28 17:05         ` vincenzo.frascino
2019-05-28 17:05           ` Vincenzo Frascino
2019-06-04 13:16       ` christophe.leroy
2019-06-04 13:16         ` Christophe Leroy
2019-06-04 13:32         ` vincenzo.frascino
2019-06-04 13:32           ` Vincenzo Frascino
2019-06-04 13:39           ` christophe.leroy
2019-06-04 13:39             ` Christophe Leroy
2019-06-04 13:43             ` vincenzo.frascino
2019-06-04 13:43               ` Vincenzo Frascino
2019-06-04 13:52               ` christophe.leroy
2019-06-04 13:52                 ` Christophe Leroy
2019-06-04 14:21                 ` vincenzo.frascino
2019-06-04 14:21                   ` Vincenzo Frascino
2019-06-13 15:22       ` Vincenzo Frascino

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox