Christophe Leroy <christophe.le...@c-s.fr> writes: > Michael Ellerman <m...@ellerman.id.au> a écrit : >> Christophe Leroy <christophe.le...@c-s.fr> writes: >>> This is copied and adapted from commit 5c929885f1bb ("powerpc/vdso64: >>> Add support for CLOCK_{REALTIME/MONOTONIC}_COARSE") >>> from Santosh Sivaraj <sant...@fossix.org> >>> >>> Benchmark from vdsotest-all: >>> clock-gettime-realtime: syscall: 3601 nsec/call >>> clock-gettime-realtime: libc: 1072 nsec/call >>> clock-gettime-realtime: vdso: 931 nsec/call >>> clock-gettime-monotonic: syscall: 4034 nsec/call >>> clock-gettime-monotonic: libc: 1213 nsec/call >>> clock-gettime-monotonic: vdso: 1076 nsec/call >>> clock-gettime-realtime-coarse: syscall: 2722 nsec/call >>> clock-gettime-realtime-coarse: libc: 805 nsec/call >>> clock-gettime-realtime-coarse: vdso: 668 nsec/call >>> clock-gettime-monotonic-coarse: syscall: 2949 nsec/call >>> clock-gettime-monotonic-coarse: libc: 882 nsec/call >>> clock-gettime-monotonic-coarse: vdso: 745 nsec/call >>> >>> Additional test passed with: >>> vdsotest -d 30 clock-gettime-monotonic-coarse verify >> >> This broke on 64-bit big endian, which uses the 32-bit VDSO, with errors >> like: >> >> clock-gettime-monotonic-coarse/verify: 10 failures/inconsistencies >> encountered >> timestamp obtained from libc/vDSO not normalized: >> [-1574202155, 1061008673] >> timestamp obtained from libc/vDSO predates timestamp >> previously obtained from kernel: >> [74, 261310747] (kernel) >> [-1574202155, 1061008673] (vDSO) >> timestamp obtained from libc/vDSO not normalized: >> [-1574202155, 1061008673] >> timestamp obtained from libc/vDSO predates timestamp >> previously obtained from kernel: >> [74, 261310747] (kernel) >> [-1574202155, 1061008673] (vDSO) >> timestamp obtained from libc/vDSO not normalized: >> [-1574202155, 1061008673] >> timestamp obtained from libc/vDSO predates timestamp >> previously obtained from kernel: >> [74, 261310747] (kernel) >> [-1574202155, 1061008673] (vDSO) >> timestamp obtained from libc/vDSO not normalized: >> [-1574202155, 1061008673] >> timestamp obtained from libc/vDSO predates timestamp >> previously obtained from kernel: >> [74, 261310747] (kernel) >> [-1574202155, 1061008673] (vDSO) >> timestamp obtained from libc/vDSO not normalized: >> [-1574202155, 1061008673] >> timestamp obtained from libc/vDSO predates timestamp >> previously obtained from kernel: >> [74, 261310747] (kernel) >> [-1574202155, 1061008673] (vDSO) >> Failure threshold (10) reached; stopping test. >> >> >> The diff below seems to fix it, but I'm not sure it's correct. ie. we >> just ignore the top part of the values, how does that work? > > Your change makes sense, it is consistent with other functions using > STAMP_XTIME. > > It works because nanoseconds are max 999999999, it fits 32 bits regs.
Yeah, but for seconds? I guess this is the whole Y2038 problem, though I'm not clear how it's going to work for compat. Anyway I'll squash that in and get this merged. cheers