<div dir="ltr"><div class="gmail_default" style="font-size:small">Hi linux-s390 experts,</div><div class="gmail_default" style="font-size:small"><br></div><div class="gmail_default" style="font-size:small">We observed that LTP/clock_gettime04 always FAIL on s390x with kernel-v5.12-rc3.</div><div class="gmail_default" style="font-size:small">To simply show the problem, I rewrite the LTP reproducer as a simple C below.</div><div class="gmail_default" style="font-size:small">Maybe it's a new bug introduced from the kernel-5.12 series branch?</div><div class="gmail_default" style="font-size:small"><br></div><div class="gmail_default" style="font-size:small">PASS:</div><div class="gmail_default" style="font-size:small">------------</div><div class="gmail_default" style="font-size:small"># uname -r<br>5.11.0-*.s390x<br></div><div class="gmail_default" style="font-size:small"><br></div><div class="gmail_default" style="font-size:small"># grep TIME_NS /boot/config-5.11.0-*.s390x<br></div><div class="gmail_default" style="font-size:small">no TIME_NS enabled</div><div class="gmail_default" style="font-size:small"><br></div><div class="gmail_default" style="font-size:small">## ./test-timer<br></div>vdso_ts_nsec = 898169901815, vdso_ts.tv_sec = 898, vdso_ts.tv_nsec = 169901815<br>sys_ts_nsec  = 898169904269, sys_ts.tv_sec  = 898, sys_ts.tv_nsec  = 169904269<br>===> PASS<br><div class="gmail_default" style="font-size:small"><br></div><div class="gmail_default" style="font-size:small">FAIL:</div><div class="gmail_default" style="font-size:small">----------</div><div class="gmail_default" style="font-size:small"># uname -r<br>5.12.0-0.rc3.*.s390x<br></div><div class="gmail_default" style="font-size:small"><br></div><div class="gmail_default" style="font-size:small"># grep TIME_NS /boot/config-5.12.0-0.rc3.s390x <br>CONFIG_TIME_NS=y<br>CONFIG_GENERIC_VDSO_TIME_NS=y<br></div><div class="gmail_default" style="font-size:small"><br></div><div class="gmail_default" style="font-size:small"># ./test-timer <br>vdso_ts_nsec = 4484351380985507, vdso_ts.tv_sec = 4484351, vdso_ts.tv_nsec = 380985507<br>sys_ts_nsec  = 1446923235377, sys_ts.tv_sec  = 1446, sys_ts.tv_nsec  = 923235377<br>===> FAIL<br></div><div class="gmail_default" style="font-size:small"><br></div><div class="gmail_default" style="font-size:small"><br># cat test-timer.c </div><div class="gmail_default" style="font-size:small"><br></div><div class="gmail_default" style="font-size:small">#include <stdio.h><br>#include <unistd.h><br>#include <sys/types.h><br>#include <time.h><br>#include <sys/time.h><br>#include <asm/unistd_64.h><br><br>long long ts_to_ns(struct timespec ts)<br>{<br>        return (ts.tv_sec * 1000000000 + ts.tv_nsec);<br>}<br><br>int main(void)<br>{<br>        long long vdso_ts_nsec, sys_ts_nsec;<br><br>        struct timespec vdso_ts, sys_ts;<br><br>        clock_gettime(CLOCK_MONOTONIC_RAW, &vdso_ts); //vdso way<br>        syscall(__NR_clock_gettime, CLOCK_MONOTONIC_RAW, &sys_ts);<br><br>        vdso_ts_nsec = ts_to_ns(vdso_ts);<br>        sys_ts_nsec  = ts_to_ns(sys_ts);<br><br><br>        printf("vdso_ts_nsec = %lld, vdso_ts.tv_sec = %ld, vdso_ts.tv_nsec = %ld\n", vdso_ts_nsec, vdso_ts.tv_sec, vdso_ts.tv_nsec);<br>        printf("sys_ts_nsec  = %lld, sys_ts.tv_sec  = %ld, sys_ts.tv_nsec  = %ld\n", sys_ts_nsec, sys_ts.tv_sec, sys_ts.tv_nsec);<br><br>        if ((vdso_ts_nsec - sys_ts_nsec) > 1000000)<br>                printf("===> FAIL\n");<br>        else<br>                printf("===> PASS\n");<br><br>        return 0;<br>}<br></div><div class="gmail_default" style="font-size:small"><br></div>-- <br><div dir="ltr" data-smartmail="gmail_signature"><div dir="ltr"><div>Regards,<br></div><div>Li Wang<br></div></div></div></div>