From: Helge Deller <deller@kernel.org>
To: Adhemerval Zanella Netto <adhemerval.zanella@linaro.org>
Cc: libc-alpha@sourceware.org,
John David Anglin <dave.anglin@bell.net>,
linux-parisc@vger.kernel.org
Subject: Re: [PATCH v2] hppa/vdso: Add wrappers for vDSO functions
Date: Thu, 27 Jun 2024 11:46:19 +0200 [thread overview]
Message-ID: <Zn006zh2vSqfgii6@carbonx1> (raw)
In-Reply-To: <433fdb50-85e6-4b2d-8bd5-371b8cac4921@linaro.org>
* Adhemerval Zanella Netto <adhemerval.zanella@linaro.org>:
>
> On 25/06/24 16:48, Helge Deller wrote:
> > On 6/24/24 22:31, Adhemerval Zanella Netto wrote:
> >>
> >>
> >> On 21/06/24 16:26, Helge Deller wrote:
> >>> The upcoming parisc (hppa) v6.11 Linux kernel will include vDSO
> >>> support for gettimeofday(), clock_gettime() and clock_gettime64()
> >>> syscalls for 32- and 64-bit userspace.
> >>> The patch below adds the necessary glue code for glibc.
> >>>
> >>> Signed-off-by: Helge Deller <deller@gmx.de>
> >>>
> >>> Changes in v2:
> >>> - add vsyscalls for 64-bit too
> >>>
> >>> diff -up ./sysdeps/unix/sysv/linux/hppa/sysdep.h.org ./sysdeps/unix/sysv/linux/hppa/sysdep.h
> >>> --- ./sysdeps/unix/sysv/linux/hppa/sysdep.h.org 2024-06-15 20:20:58.992000000 +0000
> >>> +++ ./sysdeps/unix/sysv/linux/hppa/sysdep.h 2024-06-21 19:19:02.132000000 +0000
> >>> @@ -468,6 +468,18 @@ L(pre_end): ASM_LINE_SEP \
> >>> #define CLOB_ARGS_1 CLOB_ARGS_2, "%r25"
> >>> #define CLOB_ARGS_0 CLOB_ARGS_1, "%r26"
> >>>
> >>> +#define VDSO_NAME "LINUX_6.11"
> >>> +#define VDSO_HASH 182951793
> >>> +
> >>> +#ifdef __LP64__
> >>> +# define HAVE_CLOCK_GETTIME_VSYSCALL "__vdso_clock_gettime"
> >>> +# define HAVE_GETTIMEOFDAY_VSYSCALL "__vdso_gettimeofday"
> >>> +#else
> >>> +# define HAVE_CLOCK_GETTIME_VSYSCALL "__vdso_clock_gettime"
> >>> +# define HAVE_CLOCK_GETTIME64_VSYSCALL "__vdso_clock_gettime64"
> >>> +# define HAVE_GETTIMEOFDAY_VSYSCALL "__vdso_gettimeofday"
> >>> +#endif /* __LP64__ */
> >>> +
> >>> #endif /* __ASSEMBLER__ */
> >>
> >> Not sure why you have added the gettimeofday support, currently 32 bits
> >> it is already routed to to clock_gettime (which will use
> >> __vdso_clock_gettime64 anyway).
> >
> > Yep, you are right.
> > I actually didn't checked if it's being used but just saw it's defined
> > for other arches too, so I assumed it to be used.
> >
> >> For hppa to actually use, it would require to add a way to call it
> >> for !USE_IFUNC_GETTIMEOFDAY gettimeofday, which I am not it really be
> >> an improvement here.
> >
> > Yes, that doesn't make sense.
> >
> > Looking at the code it seems riscv, sparc, arm, mips and s390 define it
> > too, without being used. Do you suggest we should remove gettimeofday
> > vsyscall from hppa again (or just keep like the others even if not being used)?
>
> The riscv only added it for CONFIG_64BIT, while old ABIs like arm, sparc,
> mips, and s390 added before 64 bit time_t landed on 5.1. With current
> 32 bits ABIs moving to 64 bit time_t userland, there is no much sense in
> providing a 32 bit gettimeofday, nor I think I adding a gettimeoday64 would
> make much sense (maybe on really high sensitive workloads that require
> low-latency timestamping, but clock_gettime would work better anyway).
>
> It is highly unlikely that the symbol will ever be used by userland,
> and I think it only make sense to provide clock_gettime64. The glibc
> 32 bit time_t clock_gettime routes to clock_gettime64 and it will only
> fallback to 32 bit vDSO symbol if the 64 bit time_t one is not present.
Like patch below?
Helge
[PATCH] hppa/vdso: Provide 64-bit clock_gettime() vDSO only
Adhemerval noticed that the gettimeofday() and 32-bit clock_gettime()
vDSO calls won't be used by glibc on hppa, so there is no need to
declare them. Both syscalls will be emulated by utilizing return values
of the 64-bit clock_gettime() vDSO instead..
Signed-off-by: Helge Deller <deller@gmx.de>
Suggested-by: Adhemerval Zanella Netto <adhemerval.zanella@linaro.org>
diff --git a/sysdeps/unix/sysv/linux/hppa/sysdep.h b/sysdeps/unix/sysv/linux/hppa/sysdep.h
index af62f7501e..e47975e5cf 100644
--- a/sysdeps/unix/sysv/linux/hppa/sysdep.h
+++ b/sysdeps/unix/sysv/linux/hppa/sysdep.h
@@ -473,11 +473,8 @@ L(pre_end): ASM_LINE_SEP \
#ifdef __LP64__
# define HAVE_CLOCK_GETTIME_VSYSCALL "__vdso_clock_gettime"
-# define HAVE_GETTIMEOFDAY_VSYSCALL "__vdso_gettimeofday"
#else
-# define HAVE_CLOCK_GETTIME_VSYSCALL "__vdso_clock_gettime"
# define HAVE_CLOCK_GETTIME64_VSYSCALL "__vdso_clock_gettime64"
-# define HAVE_GETTIMEOFDAY_VSYSCALL "__vdso_gettimeofday"
#endif /* __LP64__ */
#endif /* __ASSEMBLER__ */
next prev parent reply other threads:[~2024-06-27 9:46 UTC|newest]
Thread overview: 8+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-06-21 19:26 [PATCH v2] hppa/vdso: Add wrappers for vDSO functions Helge Deller
2024-06-23 23:41 ` John David Anglin
2024-06-24 20:31 ` Adhemerval Zanella Netto
2024-06-25 19:48 ` Helge Deller
2024-06-25 20:14 ` Adhemerval Zanella Netto
2024-06-27 9:46 ` Helge Deller [this message]
2024-07-02 19:52 ` Adhemerval Zanella Netto
2024-07-02 20:29 ` John David Anglin
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=Zn006zh2vSqfgii6@carbonx1 \
--to=deller@kernel.org \
--cc=adhemerval.zanella@linaro.org \
--cc=dave.anglin@bell.net \
--cc=libc-alpha@sourceware.org \
--cc=linux-parisc@vger.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