Re: [PATCH v4.16-rc5 3/3] x86/vdso: on Intel, VDSO should handle CLOCK_MONOTONIC_RAW

From: kbuild test robot
Date: Sat Mar 17 2018 - 03:07:12 EST


Hi,

Thank you for the patch! Yet something to improve:

[auto build test ERROR on v4.16-rc4]
[also build test ERROR on next-20180316]
[if your patch is applied to the wrong git tree, please drop us a note to help improve the system]

url: https://github.com/0day-ci/linux/commits/jason-vas-dias-gmail-com/x86-vdso-on-Intel-VDSO-should-handle-CLOCK_MONOTONIC_RAW/20180317-143702
config: x86_64-randconfig-x010-201810 (attached as .config)
compiler: gcc-7 (Debian 7.3.0-1) 7.3.0
reproduce:
# save the attached .config to linux build tree
make ARCH=x86_64

All errors (new ones prefixed by >>):

arch/x86/entry/vdso/vclock_gettime.c: In function '__vdso_linux_tsc_calibration':
>> arch/x86/entry/vdso/vclock_gettime.c:399:27: error: 'struct vsyscall_gtod_data' has no member named 'tsc_khz'
tsc_cal->tsc_khz = gtod->tsc_khz;
^~

vim +399 arch/x86/entry/vdso/vclock_gettime.c

324
325 notrace int __vdso_clock_gettime(clockid_t clock, struct timespec *ts)
326 {
327 switch (clock) {
328 case CLOCK_REALTIME:
329 if (do_realtime(ts) == VCLOCK_NONE)
330 goto fallback;
331 break;
332 case CLOCK_MONOTONIC:
333 if (do_monotonic(ts) == VCLOCK_NONE)
334 goto fallback;
335 break;
336 case CLOCK_MONOTONIC_RAW:
337 if (do_monotonic_raw(ts) == VCLOCK_NONE)
338 goto fallback;
339 break;
340 case CLOCK_REALTIME_COARSE:
341 do_realtime_coarse(ts);
342 break;
343 case CLOCK_MONOTONIC_COARSE:
344 do_monotonic_coarse(ts);
345 break;
346 default:
347 goto fallback;
348 }
349
350 return 0;
351 fallback:
352 return vdso_fallback_gettime(clock, ts);
353 }
354 int clock_gettime(clockid_t, struct timespec *)
355 __attribute__((weak, alias("__vdso_clock_gettime")));
356
357 notrace int __vdso_gettimeofday(struct timeval *tv, struct timezone *tz)
358 {
359 if (likely(tv != NULL)) {
360 if (unlikely(do_realtime((struct timespec *)tv) == VCLOCK_NONE))
361 return vdso_fallback_gtod(tv, tz);
362 tv->tv_usec /= 1000;
363 }
364 if (unlikely(tz != NULL)) {
365 tz->tz_minuteswest = gtod->tz_minuteswest;
366 tz->tz_dsttime = gtod->tz_dsttime;
367 }
368
369 return 0;
370 }
371 int gettimeofday(struct timeval *, struct timezone *)
372 __attribute__((weak, alias("__vdso_gettimeofday")));
373
374 /*
375 * This will break when the xtime seconds get inaccurate, but that is
376 * unlikely
377 */
378 notrace time_t __vdso_time(time_t *t)
379 {
380 /* This is atomic on x86 so we don't need any locks. */
381 time_t result = READ_ONCE(gtod->wall_time_sec);
382
383 if (t)
384 *t = result;
385 return result;
386 }
387 time_t time(time_t *t)
388 __attribute__((weak, alias("__vdso_time")));
389
390 notrace unsigned int
391 __vdso_linux_tsc_calibration(struct linux_tsc_calibration_s *tsc_cal)
392 {
393 unsigned long seq;
394
395 do {
396 seq = gtod_read_begin(gtod);
397 if ((gtod->vclock_mode == VCLOCK_TSC) &&
398 (tsc_cal != ((void *)0UL))) {
> 399 tsc_cal->tsc_khz = gtod->tsc_khz;
400 tsc_cal->mult = gtod->raw_mult;
401 tsc_cal->shift = gtod->raw_shift;
402 return 1;
403 }
404 } while (unlikely(gtod_read_retry(gtod, seq)));
405
406 return 0;
407 }
408

---
0-DAY kernel test infrastructure Open Source Technology Center
https://lists.01.org/pipermail/kbuild-all Intel Corporation

Attachment: .config.gz
Description: application/gzip