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: i386-randconfig-x013-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=i386 All errors (new ones prefixed by >>): In file included from arch/x86/entry/vdso/vdso32/vclock_gettime.c:33:0: arch/x86/entry/vdso/vdso32/../vclock_gettime.c: In function '__vdso_linux_tsc_calibration': >> arch/x86/entry/vdso/vdso32/../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/vdso32/../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