linux-mips.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Christophe Leroy <christophe.leroy@c-s.fr>
To: Arnd Bergmann <arnd@arndb.de>
Cc: Benjamin Herrenschmidt <benh@kernel.crashing.org>,
	Paul Mackerras <paulus@samba.org>,
	Michael Ellerman <mpe@ellerman.id.au>,
	Thomas Gleixner <tglx@linutronix.de>,
	Vincenzo Frascino <vincenzo.frascino@arm.com>,
	Andy Lutomirski <luto@kernel.org>,
	"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
	linuxppc-dev <linuxppc-dev@lists.ozlabs.org>,
	Linux ARM <linux-arm-kernel@lists.infradead.org>,
	"open list:BROADCOM NVRAM DRIVER" <linux-mips@vger.kernel.org>,
	the arch/x86 maintainers <x86@kernel.org>
Subject: Re: [RFC PATCH v2 01/10] lib: vdso: ensure all arches have 32bit fallback
Date: Thu, 9 Jan 2020 16:43:46 +0100	[thread overview]
Message-ID: <0d8ffa6f-00fa-aefe-d255-b635fb90497f@c-s.fr> (raw)
In-Reply-To: <CAK8P3a1gHvW2XEMDSHCcdOQ8NSs3iHk9GpujwkWZnnZ0dnw96w@mail.gmail.com>



Le 02/01/2020 à 12:29, Arnd Bergmann a écrit :
> On Mon, Dec 30, 2019 at 1:27 PM Arnd Bergmann <arnd@arndb.de> wrote:
>> On Mon, Dec 23, 2019 at 3:31 PM Christophe Leroy <christophe.leroy@c-s.fr> wrote:
>>> +static __always_inline
>>> +long clock_getres32_fallback(clockid_t _clkid, struct old_timespec32 *_ts)
>>> +{
>>> +       struct __kernel_timespec ts;
>>> +       int ret = clock_getres_fallback(clock, &ts);
>>> +
>>> +       if (likely(!ret && _ts)) {
>>> +               _ts->tv_sec = ts.tv_sec;
>>> +               _ts->tv_nsec = ts.tv_nsec;
>>> +       }
>>> +       return ret;
>>> +}
>>
>> Please change these to call __NR_clock_gettime and __NR_clock_getres_time
>> instead of __NR_clock_gettime64/__NR_clock_getres_time64 for multiple reasons.
>>
>> - When doing migration between containers, the vdso may get copied into
>>    an application running on a kernel that does not support the time64
>>    variants, and then the fallback fails.
>>
>> - When CONFIG_COMPAT_32BIT_TIME is disabled, the time32 syscalls
>>    return -ENOSYS, and the vdso version should have the exact same behavior
>>    to avoid surprises. In particular an application that checks clock_gettime()
>>    to see if the time32 are in part of the kernel would get an incorrect result
>>    here.
>>
>> arch/arm64/include/asm/vdso/compat_gettimeofday.h already does this,
>> I think you can just copy the implementation or find a way to share it.
> 
> There was a related discussion on this after a vdso regression on mips,
> and I suggested to drop the time32 functions completely from the
> vdso when CONFIG_COMPAT_32BIT_TIME is disabled, such as
> 
> diff --git a/arch/powerpc/kernel/vdso32/vdso32.lds.S
> b/arch/powerpc/kernel/vdso32/vdso32.lds.S
> index 00c025ba4a92..605f259fa24c 100644
> --- a/arch/powerpc/kernel/vdso32/vdso32.lds.S
> +++ b/arch/powerpc/kernel/vdso32/vdso32.lds.S
> @@ -145,10 +145,12 @@ VERSION
> 
>                  __kernel_get_syscall_map;
>   #ifndef CONFIG_PPC_BOOK3S_601
> +#ifdef CONFIG_COMPAT_32BIT_TIME
>                  __kernel_gettimeofday;
>                  __kernel_clock_gettime;
>                  __kernel_clock_getres;
>                  __kernel_time;
> +#endif
>                  __kernel_get_tbfreq;
>   #endif
>                  __kernel_sync_dicache;
> 
> Any opinions on this? If everyone agrees with that approach, I can
> send a cross-architecture patch to do this everywhere. It's probably
> best though if Christophe adds that to his series as it touches a lot
> of the same files and I would prefer to avoid conflicting changes.
> 

I guess it would be wise.

I don't think my series to switch powerpc to C VDSO will get ready 
anytime soon, because (in addition to the performance impact) I'm having 
hard time with the 32 bits VDSO for PPC64. Many of the powerpc header 
files used by lib/vdso/gettimeofday.c are not ready for generating 32 
bits code for PPC64. Main problem is that at many places, #ifdef 
CONFIG_PPC64 is used instead of #ifdef __powerpc64__. There are also 
some CONFIG options like CONFIG_GENERIC_ATOMIC64 that are selected only 
when CONFIG_PPC32 is set, but which are required for building the 32 
bits VDSO. For that I don't even know how to deal with it.

So, feel free to send your patch, and if my series comes early enough to 
conflict, I'll manage it.

Christophe

  reply	other threads:[~2020-01-09 15:43 UTC|newest]

Thread overview: 45+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-12-23 14:31 [RFC PATCH v2 00/10] powerpc/32: switch VDSO to C implementation Christophe Leroy
2019-12-23 14:31 ` [RFC PATCH v2 01/10] lib: vdso: ensure all arches have 32bit fallback Christophe Leroy
2019-12-24  2:07   ` Andy Lutomirski
2020-01-10 20:56     ` Thomas Gleixner
2020-01-10 21:02       ` Andy Lutomirski
2019-12-30 12:27   ` Arnd Bergmann
2020-01-02 11:29     ` Arnd Bergmann
2020-01-09 15:43       ` Christophe Leroy [this message]
2019-12-23 14:31 ` [RFC PATCH v2 02/10] lib: vdso: move call to fallback out of common code Christophe Leroy
2019-12-24  2:24   ` Andy Lutomirski
2019-12-24 11:41     ` christophe leroy
2019-12-24 12:09       ` Andy Lutomirski
2019-12-23 14:31 ` [RFC PATCH v2 03/10] lib: vdso: Change __cvdso_clock_gettime/getres_common() to __cvdso_clock_gettime/getres() Christophe Leroy
2019-12-23 14:31 ` [RFC PATCH v2 04/10] lib: vdso: get pointer to vdso data from the arch Christophe Leroy
2019-12-24  2:27   ` Andy Lutomirski
2019-12-24 11:53     ` christophe leroy
2019-12-24 12:15       ` Andy Lutomirski
2019-12-24 12:41         ` Andy Lutomirski
2019-12-24 14:46         ` Segher Boessenkool
2019-12-23 14:31 ` [RFC PATCH v2 05/10] lib: vdso: inline do_hres() Christophe Leroy
2019-12-24  2:29   ` Andy Lutomirski
2019-12-30 12:07   ` Arnd Bergmann
2020-01-10 21:07     ` Thomas Gleixner
2020-01-11  9:06       ` Christophe Leroy
2019-12-23 14:31 ` [RFC PATCH v2 06/10] lib: vdso: make do_coarse() return 0 Christophe Leroy
2019-12-23 14:31 ` [RFC PATCH v2 07/10] lib: vdso: don't use READ_ONCE() in __c_kernel_time() Christophe Leroy
2019-12-24  1:58   ` Andy Lutomirski
2019-12-24 11:12     ` christophe leroy
2019-12-24 12:04       ` Andy Lutomirski
2020-01-10 21:12   ` Thomas Gleixner
2020-01-11  8:05     ` Christophe Leroy
2020-01-11 11:07       ` Thomas Gleixner
2020-01-13  6:52         ` Christophe Leroy
2019-12-23 14:31 ` [RFC PATCH v2 08/10] lib: vdso: Avoid duplication in __cvdso_clock_getres() Christophe Leroy
2019-12-24  1:59   ` Andy Lutomirski
2019-12-23 14:31 ` [RFC PATCH v2 09/10] powerpc/vdso32: inline __get_datapage() Christophe Leroy
2019-12-23 14:31 ` [RFC PATCH v2 10/10] powerpc/32: Switch VDSO to C implementation Christophe Leroy
2020-01-09 17:52 ` Surprising code generated for vdso_read_begin() Christophe Leroy
2020-01-09 20:07   ` Segher Boessenkool
2020-01-10  6:45     ` Christophe Leroy
2020-01-11 11:33       ` Segher Boessenkool
2020-02-16 18:10         ` Arnd Bergmann
2020-02-19  8:45           ` Christophe Leroy
2020-02-19  9:52             ` Arnd Bergmann
2020-02-19 13:08               ` Segher Boessenkool

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=0d8ffa6f-00fa-aefe-d255-b635fb90497f@c-s.fr \
    --to=christophe.leroy@c-s.fr \
    --cc=arnd@arndb.de \
    --cc=benh@kernel.crashing.org \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-mips@vger.kernel.org \
    --cc=linuxppc-dev@lists.ozlabs.org \
    --cc=luto@kernel.org \
    --cc=mpe@ellerman.id.au \
    --cc=paulus@samba.org \
    --cc=tglx@linutronix.de \
    --cc=vincenzo.frascino@arm.com \
    --cc=x86@kernel.org \
    /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: link
Be 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).