public inbox for libc-alpha@sourceware.org
 help / color / mirror / Atom feed
From: Adhemerval Zanella <adhemerval.zanella@linaro.org>
To: Lukasz Majewski <lukma@denx.de>
Cc: libc-alpha@sourceware.org, Carlos O'Donell <carlos@redhat.com>
Subject: Re: [PATCH 00/18] More y2038 fixes
Date: Thu, 17 Jun 2021 14:41:43 -0300	[thread overview]
Message-ID: <188b5674-a34c-5c27-6332-9a549471cf90@linaro.org> (raw)
In-Reply-To: <20210617162021.52a63a3e@ktm>



On 17/06/2021 11:20, Lukasz Majewski wrote:
> Hi Adhemerval,
> 
>> Hi Carlos and Lukasz,
>>
>> This patchset adds more y2038 fixes that I would like to push for
>> 2.34. The first two patches enable more internal y2038 usage on glibc
>> and also for the installed programs.  Making glibc the first consumer
>> of these newer interfaces should improve coverage.
>>
> 
> Those two patches were already available for review for some time.
> Indeed, by using 64-bit time internally we may have more testing
> (sooner).

Yes, but I changed slight the one that enabled the y2038 symbol on
installed program to use apply the CFLAGS on module, instead of
setting in each sub Makefile.

> 
>> The next 6 patches removes an optimization I added on some specific
>> syscall, where a global variable it atomically set once glibc detects
>> that kernel supports 64-bit time.  The problem with this approach
>> breaks the usage case of live migration like CRIU or similar.
> 
> I do recall that this optimization was to avoid performance regression
> on legacy systems - to avoid issuing two syscalls (64 bit one and then
> 32 bit one).

Yes, but as I noted some interfaces don't really need to use the newer
syscall in the compatibility mode (where glibc is build to support older
kernels). This optimization is really tricky, since it incurs in some
data races (I think to fully avoid it would require seq-cst atomic instead
of relaxed ones) and it might break live migration.

> 
>>  Also
>> for some interfaces that do not query information from kernel, most
>> usages can be optimized away by either building glibc with a minimum
>> 5.1 kernel or by using the 32-bit syscall for the common case.
> 
> I do think that this approach (with classification of use cases based
> on specified kernel version) aligns with how people will build setups
> for those systems (at least I do it in this way for OE/Yocto).

I think there will be specific cases where kernel update is not an
option, but I think these will be really niches. 

> 
>>
>> So the following patch implement this optimization for the interfaces
>> that allows it.  If the provided timeout can be fit in old 32-bit
>> time_t, the old syscall is used instead.  This optimization is only
>> used for !__ASSUME_TIME64_SYSCALLS, otherwise the newer 64-bit
>> syscall are used.
> 
> Ok.
> 
>>
>> I checked this with 3 different configation which should cover most
>> usages:
>>
>>   - i686-linux-gnu on a 4.15 kernel and default --enable-kernel=3.2.
>>     This uses the 32-bit optimization to avoid calling the newer
>>     64-bit syscall when possible.  It also triggers and EOVERFLOW
>>     when 64-bit inputs are used without proper kernel support.
> 
> Ok.
> 
>>   - i686-linux-gnu on a 5.11 kernel and default --enable-kernel=3.2.
>>     This will also use the 32-bit optimization, but it will always
>>     succeded due proper kernel support.
> 
> Ok.
> 
>>   - i686-linux-gnu on a 5.11 kernel and with --enable-kernel=5.1.
>>     This enables __ASSUME_TIME64_SYSCALLS and only uses 64-bit
>>     time_t syscalls.
> 
> Ok.
> 
> BTW: I'm wondering when the minimal, supported Linux kernel version is
> going to be moved forward?

We usually follow the minimum LTS supported by Linux kernel developers.

  reply	other threads:[~2021-06-17 17:41 UTC|newest]

Thread overview: 48+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-06-17 11:50 Adhemerval Zanella
2021-06-17 11:50 ` [PATCH 01/18] Use 64 bit time_t stat internally Adhemerval Zanella
2021-06-21  7:42   ` Lukasz Majewski
2021-06-22 19:37   ` Florian Weimer
2021-06-22 19:51     ` Adhemerval Zanella
2021-06-17 11:50 ` [PATCH 02/18] Use LFS and 64 bit time for installed programs Adhemerval Zanella
2021-06-17 12:19   ` Andreas Schwab
2021-06-18 18:50     ` Adhemerval Zanella
2021-06-17 20:49   ` Joseph Myers
2021-06-18 18:14     ` Adhemerval Zanella
2021-06-17 11:50 ` [PATCH 03/18] support: Add support_create_timer Adhemerval Zanella
2021-06-21  7:42   ` Lukasz Majewski
2021-06-17 11:50 ` [PATCH 04/18] linux: Only use 64-bit syscall if required for ppoll Adhemerval Zanella
2021-06-21  7:42   ` Lukasz Majewski
2021-06-17 11:50 ` [PATCH 05/18] linux: Only use 64-bit syscall if required for pselect Adhemerval Zanella
2021-06-21  7:42   ` Lukasz Majewski
2021-06-17 11:50 ` [PATCH 06/18] linux: Only use 64-bit syscall if required for select Adhemerval Zanella
2021-06-21  7:43   ` Lukasz Majewski
2021-06-17 11:50 ` [PATCH 07/18] linux: Remove supports_time64 () from clock_getres Adhemerval Zanella
2021-06-21  7:43   ` Lukasz Majewski
2021-06-17 11:50 ` [PATCH 08/18] linux: Remove supports_time64 () from clock_gettime Adhemerval Zanella
2021-06-21  7:43   ` Lukasz Majewski
2021-06-17 11:50 ` [PATCH 09/18] linux: Remove time64-support Adhemerval Zanella
2021-06-21  7:43   ` Lukasz Majewski
2021-06-17 11:50 ` [PATCH 10/18] linux: timerfd_gettime minor cleanup Adhemerval Zanella
2021-06-21  7:43   ` Lukasz Majewski
2021-06-17 11:50 ` [PATCH 11/18] linux: Only use 64-bit syscall if required for semtimedop Adhemerval Zanella
2021-06-21  7:43   ` Lukasz Majewski
2021-06-17 11:50 ` [PATCH 12/18] linux: Only use 64-bit syscall if required for timerfd_settime Adhemerval Zanella
2021-06-21  7:44   ` Lukasz Majewski
2021-06-17 11:50 ` [PATCH 13/18] linux: Only use 64-bit syscall if required for mq_timedreceive Adhemerval Zanella
2021-06-21  7:44   ` Lukasz Majewski
2021-06-17 11:51 ` [PATCH 14/18] linux: Only use 64-bit syscall if required for mq_timedsend Adhemerval Zanella
2021-06-21  7:44   ` Lukasz Majewski
2021-06-17 11:51 ` [PATCH 15/18] linux: Only use 64-bit syscall if required for sigtimedwait Adhemerval Zanella
2021-06-17 12:25   ` Andreas Schwab
2021-06-22 14:58     ` Adhemerval Zanella
2021-06-17 11:51 ` [PATCH 16/18] linux: Only use 64-bit syscall if required for utimensat family Adhemerval Zanella
2021-06-21  7:45   ` Lukasz Majewski
2021-06-17 11:51 ` [PATCH 17/18] linux: Only use 64-bit syscall if required for internal futex Adhemerval Zanella
2021-06-21  7:45   ` Lukasz Majewski
2021-06-17 11:51 ` [PATCH 18/18] linux: Only use 64-bit syscall if required for clock_nanosleep Adhemerval Zanella
2021-06-17 15:11   ` Lukasz Majewski
2021-06-17 17:45     ` Adhemerval Zanella
2021-06-21  7:46   ` Lukasz Majewski
2021-06-17 14:20 ` [PATCH 00/18] More y2038 fixes Lukasz Majewski
2021-06-17 17:41   ` Adhemerval Zanella [this message]
2021-06-17 20:58     ` Joseph Myers

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=188b5674-a34c-5c27-6332-9a549471cf90@linaro.org \
    --to=adhemerval.zanella@linaro.org \
    --cc=carlos@redhat.com \
    --cc=libc-alpha@sourceware.org \
    --cc=lukma@denx.de \
    /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 read-only IMAP folder(s) and NNTP newsgroup(s).