* [PATCH v2] hppa/vdso: Add wrappers for vDSO functions
@ 2024-06-21 19:26 Helge Deller
2024-06-23 23:41 ` John David Anglin
2024-06-24 20:31 ` Adhemerval Zanella Netto
0 siblings, 2 replies; 8+ messages in thread
From: Helge Deller @ 2024-06-21 19:26 UTC (permalink / raw)
To: libc-alpha, John David Anglin, carlos, linux-parisc
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__ */
#endif /* _LINUX_HPPA_SYSDEP_H */
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH v2] hppa/vdso: Add wrappers for vDSO functions
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
1 sibling, 0 replies; 8+ messages in thread
From: John David Anglin @ 2024-06-23 23:41 UTC (permalink / raw)
To: Helge Deller, libc-alpha, carlos, linux-parisc
Committed to glibc master.
Dave
On 2024-06-21 3:26 p.m., 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__ */
>
> #endif /* _LINUX_HPPA_SYSDEP_H */
>
--
John David Anglin dave.anglin@bell.net
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH v2] hppa/vdso: Add wrappers for vDSO functions
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
1 sibling, 1 reply; 8+ messages in thread
From: Adhemerval Zanella Netto @ 2024-06-24 20:31 UTC (permalink / raw)
To: Helge Deller, libc-alpha, John David Anglin, carlos, linux-parisc
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). 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.
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH v2] hppa/vdso: Add wrappers for vDSO functions
2024-06-24 20:31 ` Adhemerval Zanella Netto
@ 2024-06-25 19:48 ` Helge Deller
2024-06-25 20:14 ` Adhemerval Zanella Netto
0 siblings, 1 reply; 8+ messages in thread
From: Helge Deller @ 2024-06-25 19:48 UTC (permalink / raw)
To: Adhemerval Zanella Netto, Helge Deller, libc-alpha,
John David Anglin, carlos, linux-parisc
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)?
Helge
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH v2] hppa/vdso: Add wrappers for vDSO functions
2024-06-25 19:48 ` Helge Deller
@ 2024-06-25 20:14 ` Adhemerval Zanella Netto
2024-06-27 9:46 ` Helge Deller
0 siblings, 1 reply; 8+ messages in thread
From: Adhemerval Zanella Netto @ 2024-06-25 20:14 UTC (permalink / raw)
To: Helge Deller, Helge Deller, libc-alpha, John David Anglin, carlos,
linux-parisc
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.
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH v2] hppa/vdso: Add wrappers for vDSO functions
2024-06-25 20:14 ` Adhemerval Zanella Netto
@ 2024-06-27 9:46 ` Helge Deller
2024-07-02 19:52 ` Adhemerval Zanella Netto
0 siblings, 1 reply; 8+ messages in thread
From: Helge Deller @ 2024-06-27 9:46 UTC (permalink / raw)
To: Adhemerval Zanella Netto; +Cc: libc-alpha, John David Anglin, linux-parisc
* 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__ */
^ permalink raw reply related [flat|nested] 8+ messages in thread
* Re: [PATCH v2] hppa/vdso: Add wrappers for vDSO functions
2024-06-27 9:46 ` Helge Deller
@ 2024-07-02 19:52 ` Adhemerval Zanella Netto
2024-07-02 20:29 ` John David Anglin
0 siblings, 1 reply; 8+ messages in thread
From: Adhemerval Zanella Netto @ 2024-07-02 19:52 UTC (permalink / raw)
To: Helge Deller; +Cc: libc-alpha, John David Anglin, linux-parisc
On 27/06/24 06:46, Helge Deller wrote:
> * 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__ */
Yeah, it seems ok thanks.
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH v2] hppa/vdso: Add wrappers for vDSO functions
2024-07-02 19:52 ` Adhemerval Zanella Netto
@ 2024-07-02 20:29 ` John David Anglin
0 siblings, 0 replies; 8+ messages in thread
From: John David Anglin @ 2024-07-02 20:29 UTC (permalink / raw)
To: Adhemerval Zanella Netto, Helge Deller; +Cc: libc-alpha, linux-parisc
Committed to glibc master.
Dave
On 2024-07-02 3:52 p.m., Adhemerval Zanella Netto wrote:
>
> On 27/06/24 06:46, Helge Deller wrote:
>> * 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__ */
> Yeah, it seems ok thanks.
--
John David Anglin dave.anglin@bell.net
^ permalink raw reply [flat|nested] 8+ messages in thread
end of thread, other threads:[~2024-07-02 20:32 UTC | newest]
Thread overview: 8+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
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
2024-07-02 19:52 ` Adhemerval Zanella Netto
2024-07-02 20:29 ` John David Anglin
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox