From: Arnd Bergmann <arnd@arndb.de> To: Thomas Gleixner <tglx@linutronix.de> Cc: linux-arch <linux-arch@vger.kernel.org>, Catalin Marinas <catalin.marinas@arm.com>, Daniel Lezcano <daniel.lezcano@linaro.org>, Will Deacon <will.deacon@arm.com>, Russell King - ARM Linux <linux@armlinux.org.uk>, Ralf Baechle <ralf@linux-mips.org>, Mark Salyzyn <salyzyn@android.com>, Paul Burton <paul.burton@mips.com>, Vincenzo Frascino <vincenzo.frascino@arm.com>, Peter Collingbourne <pcc@google.com>, Linux ARM <linux-arm-kernel@lists.infradead.org> Subject: Re: [PATCH v2 06/28] kernel: Define gettimeofday vdso common code Date: Fri, 30 Nov 2018 15:29:25 +0100 [thread overview] Message-ID: <CAK8P3a1hmsf2CKWfQ60aUQMoC1YxWhkRKY3GBRusGnQ2cDCJpQ@mail.gmail.com> (raw) In-Reply-To: <alpine.DEB.2.21.1811292230430.1657@nanos.tec.linutronix.de> On Thu, Nov 29, 2018 at 11:12 PM Thomas Gleixner <tglx@linutronix.de> wrote: > On Thu, 29 Nov 2018, Vincenzo Frascino wrote: > > +if HAVE_GENERIC_VDSO > > + > > +config GENERIC_GETTIMEOFDAY > > + bool > > + help > > + This is a generic implementation of gettimeofday vdso. > > + Each architecture that enables this feature has to > > + provide the fallback implementation. > > + > > +config GENERIC_VDSO_32 > > + bool > > + depends on GENERIC_GETTIMEOFDAY && !64BIT > > + help > > + This config option helps to avoid possible performance issues > > + in 32 bit only architectures. > > + > > +config HAVE_ARCH_TIMER > > + bool > > + depends on GENERIC_GETTIMEOFDAY > > + help > > + Select this configuration option if the architecture has an arch > > + timer. > > Please don't add code which is architecture specific to the generic > implementation. There is really no reason to make ARCH_TIMER special. I think it's just unfortunate naming based on what arm64 had, but conceptually it does the right thing, and just disable the clock_gettime fastpath on kernel builds that never have access to a clocksource from user space. > > +static notrace int __cvdso_clock_getres(clockid_t clock_id, > > + struct __vdso_timespec *res) > > +{ > > + u64 ns; > > + > > + if (!__arch_valid_arg(res)) > > + return -EFAULT; > > + > > + if (clock_id == CLOCK_REALTIME || > > + clock_id == CLOCK_TAI || > > + clock_id == CLOCK_BOOTTIME || > > + clock_id == CLOCK_MONOTONIC || > > + clock_id == CLOCK_MONOTONIC_RAW) > > + ns = MONOTONIC_RES_NSEC; > > This is wrong. You cannot unconditionally set that. See what the syscall > based version does. You always need to verify that the syscall version and > the vdso version return the same information and not something randomly > different. Do you think we actually need the fastpath here? If not, the easy way to do it would be to always fall back to calling the syscall based version. Or was this originally added to deal with the syscall and vdso clock_gettime having different resolutions (which would sound like a bad idea, but might have to stay for compatibility)? Arnd
WARNING: multiple messages have this Message-ID (diff)
From: Arnd Bergmann <arnd@arndb.de> To: Thomas Gleixner <tglx@linutronix.de> Cc: Vincenzo Frascino <vincenzo.frascino@arm.com>, linux-arch <linux-arch@vger.kernel.org>, Linux ARM <linux-arm-kernel@lists.infradead.org>, Catalin Marinas <catalin.marinas@arm.com>, Will Deacon <will.deacon@arm.com>, Russell King - ARM Linux <linux@armlinux.org.uk>, Ralf Baechle <ralf@linux-mips.org>, Paul Burton <paul.burton@mips.com>, Daniel Lezcano <daniel.lezcano@linaro.org>, Mark Salyzyn <salyzyn@android.com>, Peter Collingbourne <pcc@google.com> Subject: Re: [PATCH v2 06/28] kernel: Define gettimeofday vdso common code Date: Fri, 30 Nov 2018 15:29:25 +0100 [thread overview] Message-ID: <CAK8P3a1hmsf2CKWfQ60aUQMoC1YxWhkRKY3GBRusGnQ2cDCJpQ@mail.gmail.com> (raw) Message-ID: <20181130142925.8kEF0sSjFenZ_DFkkzjNfy1hlT7NDUY-2rbvipW38VA@z> (raw) In-Reply-To: <alpine.DEB.2.21.1811292230430.1657@nanos.tec.linutronix.de> On Thu, Nov 29, 2018 at 11:12 PM Thomas Gleixner <tglx@linutronix.de> wrote: > On Thu, 29 Nov 2018, Vincenzo Frascino wrote: > > +if HAVE_GENERIC_VDSO > > + > > +config GENERIC_GETTIMEOFDAY > > + bool > > + help > > + This is a generic implementation of gettimeofday vdso. > > + Each architecture that enables this feature has to > > + provide the fallback implementation. > > + > > +config GENERIC_VDSO_32 > > + bool > > + depends on GENERIC_GETTIMEOFDAY && !64BIT > > + help > > + This config option helps to avoid possible performance issues > > + in 32 bit only architectures. > > + > > +config HAVE_ARCH_TIMER > > + bool > > + depends on GENERIC_GETTIMEOFDAY > > + help > > + Select this configuration option if the architecture has an arch > > + timer. > > Please don't add code which is architecture specific to the generic > implementation. There is really no reason to make ARCH_TIMER special. I think it's just unfortunate naming based on what arm64 had, but conceptually it does the right thing, and just disable the clock_gettime fastpath on kernel builds that never have access to a clocksource from user space. > > +static notrace int __cvdso_clock_getres(clockid_t clock_id, > > + struct __vdso_timespec *res) > > +{ > > + u64 ns; > > + > > + if (!__arch_valid_arg(res)) > > + return -EFAULT; > > + > > + if (clock_id == CLOCK_REALTIME || > > + clock_id == CLOCK_TAI || > > + clock_id == CLOCK_BOOTTIME || > > + clock_id == CLOCK_MONOTONIC || > > + clock_id == CLOCK_MONOTONIC_RAW) > > + ns = MONOTONIC_RES_NSEC; > > This is wrong. You cannot unconditionally set that. See what the syscall > based version does. You always need to verify that the syscall version and > the vdso version return the same information and not something randomly > different. Do you think we actually need the fastpath here? If not, the easy way to do it would be to always fall back to calling the syscall based version. Or was this originally added to deal with the syscall and vdso clock_gettime having different resolutions (which would sound like a bad idea, but might have to stay for compatibility)? Arnd
next prev parent reply other threads:[~2018-11-30 14:29 UTC|newest] Thread overview: 100+ messages / expand[flat|nested] mbox.gz Atom feed top 2018-11-29 17:05 [PATCH v2 00/28] Unify vDSOs across more architectures Vincenzo Frascino 2018-11-29 17:05 ` Vincenzo Frascino 2018-11-29 17:05 ` [PATCH v2 01/28] kernel: Standardize vdso_datapage Vincenzo Frascino 2018-11-29 17:05 ` Vincenzo Frascino 2018-11-29 22:39 ` Thomas Gleixner 2018-11-29 22:39 ` Thomas Gleixner 2018-12-11 13:22 ` Vincenzo Frascino 2018-12-11 13:22 ` Vincenzo Frascino 2018-11-29 17:05 ` [PATCH v2 02/28] kernel: Add Monotonic boot time support Vincenzo Frascino 2018-11-29 17:05 ` Vincenzo Frascino 2018-11-29 17:05 ` [PATCH v2 03/28] kernel: Add International Atomic Time support Vincenzo Frascino 2018-11-29 17:05 ` Vincenzo Frascino 2018-11-29 17:05 ` [PATCH v2 04/28] kernel: Add masks support for Raw and NTP time Vincenzo Frascino 2018-11-29 17:05 ` Vincenzo Frascino 2018-11-29 22:41 ` Thomas Gleixner 2018-11-29 22:41 ` Thomas Gleixner 2018-12-11 13:24 ` Vincenzo Frascino 2018-12-11 13:24 ` Vincenzo Frascino 2018-11-29 17:05 ` [PATCH v2 05/28] kernel: Add clock_mode support Vincenzo Frascino 2018-11-29 17:05 ` Vincenzo Frascino 2018-11-29 17:05 ` [PATCH v2 06/28] kernel: Define gettimeofday vdso common code Vincenzo Frascino 2018-11-29 17:05 ` Vincenzo Frascino 2018-11-29 20:42 ` Arnd Bergmann 2018-11-29 20:42 ` Arnd Bergmann 2018-12-11 13:39 ` Vincenzo Frascino 2018-12-11 13:39 ` Vincenzo Frascino 2018-12-11 21:41 ` Arnd Bergmann 2018-12-11 21:41 ` Arnd Bergmann 2018-12-13 9:46 ` Vincenzo Frascino 2018-12-13 9:46 ` Vincenzo Frascino 2018-11-29 22:11 ` Thomas Gleixner 2018-11-29 22:11 ` Thomas Gleixner 2018-11-30 14:29 ` Arnd Bergmann [this message] 2018-11-30 14:29 ` Arnd Bergmann 2018-12-11 14:02 ` Vincenzo Frascino 2018-12-11 14:02 ` Vincenzo Frascino 2018-12-07 17:53 ` Will Deacon 2018-12-07 17:53 ` Will Deacon 2019-02-08 17:35 ` Will Deacon 2019-02-08 17:35 ` Will Deacon 2019-02-08 19:28 ` Thomas Gleixner 2019-02-08 19:28 ` Thomas Gleixner 2019-02-08 19:30 ` Thomas Gleixner 2019-02-08 19:30 ` Thomas Gleixner 2019-02-13 17:04 ` Will Deacon 2019-02-13 17:04 ` Will Deacon 2019-02-13 19:35 ` Thomas Gleixner 2019-02-13 19:35 ` Thomas Gleixner 2019-02-13 17:05 ` Will Deacon 2019-02-13 17:05 ` Will Deacon 2018-12-11 13:54 ` Vincenzo Frascino 2018-12-11 13:54 ` Vincenzo Frascino 2018-11-29 17:05 ` [PATCH v2 07/28] arm64: Build vDSO with -ffixed-x18 Vincenzo Frascino 2018-11-29 17:05 ` Vincenzo Frascino 2018-11-29 17:05 ` [PATCH v2 08/28] arm64: Substitute gettimeofday with C implementation Vincenzo Frascino 2018-11-29 17:05 ` Vincenzo Frascino 2018-11-29 17:05 ` [PATCH v2 09/28] arm64: compat: Alloc separate pages for vectors and sigpage Vincenzo Frascino 2018-11-29 17:05 ` Vincenzo Frascino 2018-11-29 17:05 ` [PATCH v2 10/28] arm64: compat: Split kuser32 Vincenzo Frascino 2018-11-29 17:05 ` Vincenzo Frascino 2018-11-29 17:05 ` [PATCH v2 11/28] arm64: compat: Refactor aarch32_alloc_vdso_pages() Vincenzo Frascino 2018-11-29 17:05 ` Vincenzo Frascino 2018-11-29 17:05 ` [PATCH v2 12/28] arm64: compat: Add KUSER_HELPERS config option Vincenzo Frascino 2018-11-29 17:05 ` Vincenzo Frascino 2018-11-29 17:05 ` [PATCH v2 13/28] arm64: compat: Add missing syscall numbers Vincenzo Frascino 2018-11-29 17:05 ` Vincenzo Frascino 2018-11-29 17:05 ` [PATCH v2 14/28] arm64: compat: Expose signal related structures Vincenzo Frascino 2018-11-29 17:05 ` Vincenzo Frascino 2018-11-29 17:05 ` [PATCH v2 15/28] arm64: compat: Generate asm offsets for signals Vincenzo Frascino 2018-11-29 17:05 ` Vincenzo Frascino 2018-11-29 17:05 ` [PATCH v2 16/28] lib: vdso: Add compat support Vincenzo Frascino 2018-11-29 17:05 ` Vincenzo Frascino 2018-11-29 17:05 ` [PATCH v2 17/28] arm64: compat: Add vDSO Vincenzo Frascino 2018-11-29 17:05 ` Vincenzo Frascino 2018-11-29 17:05 ` [PATCH v2 18/28] arm64: Refactor vDSO code Vincenzo Frascino 2018-11-29 17:05 ` Vincenzo Frascino 2018-11-29 17:05 ` [PATCH v2 19/28] arm64: compat: vDSO setup for compat layer Vincenzo Frascino 2018-11-29 17:05 ` Vincenzo Frascino 2018-11-29 17:05 ` [PATCH v2 20/28] arm64: elf: vDSO code page discovery Vincenzo Frascino 2018-11-29 17:05 ` Vincenzo Frascino 2018-11-29 17:05 ` [PATCH v2 21/28] arm64: compat: Get sigreturn trampolines from vDSO Vincenzo Frascino 2018-11-29 17:05 ` Vincenzo Frascino 2018-11-29 17:05 ` [PATCH v2 22/28] arm64: Add vDSO compat support Vincenzo Frascino 2018-11-29 17:05 ` Vincenzo Frascino 2018-11-29 17:05 ` [PATCH v2 23/28] arm64: Enable compat vDSO support Vincenzo Frascino 2018-11-29 17:05 ` Vincenzo Frascino 2018-11-29 17:05 ` [PATCH v2 24/28] arm: Add support for generic vDSO Vincenzo Frascino 2018-11-29 17:05 ` Vincenzo Frascino 2018-12-10 22:13 ` Mark Salyzyn 2018-12-10 22:13 ` Mark Salyzyn 2018-12-11 14:15 ` Vincenzo Frascino 2018-12-11 14:15 ` Vincenzo Frascino 2018-11-29 17:05 ` [PATCH v2 25/28] mips: Introduce vdso_direct Vincenzo Frascino 2018-11-29 17:05 ` Vincenzo Frascino 2018-11-29 17:05 ` [PATCH v2 26/28] clock: csrc-4k: Add support for vdso_direct Vincenzo Frascino 2018-11-29 17:05 ` Vincenzo Frascino 2018-11-29 17:05 ` [PATCH v2 27/28] clock: gic-timer: " Vincenzo Frascino 2018-11-29 17:05 ` Vincenzo Frascino 2018-11-29 17:05 ` [PATCH v2 28/28] mips: Add support for generic vDSO Vincenzo Frascino 2018-11-29 17:05 ` Vincenzo Frascino
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=CAK8P3a1hmsf2CKWfQ60aUQMoC1YxWhkRKY3GBRusGnQ2cDCJpQ@mail.gmail.com \ --to=arnd@arndb.de \ --cc=catalin.marinas@arm.com \ --cc=daniel.lezcano@linaro.org \ --cc=linux-arch@vger.kernel.org \ --cc=linux-arm-kernel@lists.infradead.org \ --cc=linux@armlinux.org.uk \ --cc=paul.burton@mips.com \ --cc=pcc@google.com \ --cc=ralf@linux-mips.org \ --cc=salyzyn@android.com \ --cc=tglx@linutronix.de \ --cc=vincenzo.frascino@arm.com \ --cc=will.deacon@arm.com \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: linkBe sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for NNTP newsgroup(s).