* [dwmw2:kvmclock4 16/33] arch/x86/kvm/x86.c:3388:22: error: implicit declaration of function 'kvm_get_time_and_clockread'; did you mean 'kvm_get_monotonic_and_clockread'?
@ 2026-05-11 11:59 kernel test robot
2026-05-11 12:26 ` David Woodhouse
0 siblings, 1 reply; 2+ messages in thread
From: kernel test robot @ 2026-05-11 11:59 UTC (permalink / raw)
To: David Woodhouse; +Cc: oe-kbuild-all
tree: git://git.infradead.org/users/dwmw2/linux kvmclock4
head: d6673491163f4987d73e4644987c605f22cbf706
commit: d216b965d38e8dc9aeccd8eea855a1187f997199 [16/33] KVM: x86: Restructure kvm_guest_time_update() for TSC upscaling
config: i386-buildonly-randconfig-006 (https://download.01.org/0day-ci/archive/20260511/202605111940.zLRfvQzJ-lkp@intel.com/config)
compiler: gcc-14 (Debian 14.2.0-19) 14.2.0
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20260511/202605111940.zLRfvQzJ-lkp@intel.com/reproduce)
If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Reported-by: kernel test robot <lkp@intel.com>
| Closes: https://lore.kernel.org/oe-kbuild-all/202605111940.zLRfvQzJ-lkp@intel.com/
All errors (new ones prefixed by >>):
arch/x86/kvm/x86.c: In function 'kvm_guest_time_update':
>> arch/x86/kvm/x86.c:3388:22: error: implicit declaration of function 'kvm_get_time_and_clockread'; did you mean 'kvm_get_monotonic_and_clockread'? [-Wimplicit-function-declaration]
3388 | !kvm_get_time_and_clockread(&kernel_ns, &host_tsc) &&
| ^~~~~~~~~~~~~~~~~~~~~~~~~~
| kvm_get_monotonic_and_clockread
arch/x86/kvm/x86.c:3359:23: warning: unused variable 'flags' [-Wunused-variable]
3359 | unsigned long flags;
| ^~~~~
vim +3388 arch/x86/kvm/x86.c
3355
3356 int kvm_guest_time_update(struct kvm_vcpu *v)
3357 {
3358 struct pvclock_vcpu_time_info hv_clock = {};
3359 unsigned long flags;
3360 u64 tgt_tsc_hz;
3361 unsigned seq;
3362 struct kvm_vcpu_arch *vcpu = &v->arch;
3363 struct kvm_arch *ka = &v->kvm->arch;
3364 s64 kernel_ns;
3365 u64 tsc_timestamp, host_tsc;
3366 u64 master_host_tsc = 0;
3367 s64 master_kernel_ns = 0;
3368 bool use_master_clock;
3369
3370 /*
3371 * If the host uses TSC clock, then passthrough TSC as stable
3372 * to the guest.
3373 */
3374 do {
3375 seq = read_seqcount_begin(&ka->pvclock_sc);
3376
3377 use_master_clock = ka->use_master_clock;
3378
3379 /*
3380 * The TSC read and the call to get_cpu_tsc_khz() must happen
3381 * on the same CPU.
3382 */
3383 get_cpu();
3384
3385 tgt_tsc_hz = (u64)get_cpu_tsc_khz() * 1000;
3386
3387 if (use_master_clock &&
> 3388 !kvm_get_time_and_clockread(&kernel_ns, &host_tsc) &&
3389 WARN_ON_ONCE(!read_seqcount_retry(&ka->pvclock_sc, seq)))
3390 use_master_clock = false;
3391
3392 put_cpu();
3393
3394 if (!use_master_clock)
3395 break;
3396
3397 master_host_tsc = ka->master_cycle_now;
3398 master_kernel_ns = ka->master_kernel_ns;
3399 } while (read_seqcount_retry(&ka->pvclock_sc, seq));
3400
3401 if (unlikely(tgt_tsc_hz == 0)) {
3402 kvm_make_request(KVM_REQ_CLOCK_UPDATE, v);
3403 return 1;
3404 }
3405
3406 if (!use_master_clock) {
3407 host_tsc = rdtsc();
3408 kernel_ns = get_kvmclock_base_ns();
3409 }
3410
3411 /*
3412 * We may have to catch up the TSC to match elapsed wall clock
3413 * time for two reasons, even if kvmclock is used.
3414 * 1) CPU could have been running below the maximum TSC rate
3415 * 2) Broken TSC compensation resets the base at each VCPU
3416 * entry to avoid unknown leaps of TSC even when running
3417 * again on the same CPU. This may cause apparent elapsed
3418 * time to disappear, and the guest to stand still or run
3419 * very slowly.
3420 */
3421 if (vcpu->tsc_catchup) {
3422 s64 adjustment;
3423
3424 /*
3425 * Calculate the delta between what the guest TSC *should* be
3426 * and what it actually is according to kvm_read_l1_tsc().
3427 */
3428 adjustment = compute_guest_tsc(v, kernel_ns) -
3429 kvm_read_l1_tsc(v, host_tsc);
3430 if (adjustment > 0)
3431 adjust_tsc_offset_guest(v, adjustment);
3432 }
3433
3434 /*
3435 * Now that TSC upscaling is out of the way, the remaining calculations
3436 * are all relative to the reference time that's placed in hv_clock.
3437 * If the master clock is NOT in use, the reference time is "now". If
3438 * master clock is in use, the reference time comes from there.
3439 */
3440 if (use_master_clock) {
3441 host_tsc = master_host_tsc;
3442 kernel_ns = master_kernel_ns;
3443 }
3444 tsc_timestamp = kvm_read_l1_tsc(v, host_tsc);
3445
3446 /* With all the info we got, fill in the values */
3447
3448 if (kvm_caps.has_tsc_control) {
3449 tgt_tsc_hz = kvm_scale_tsc(tgt_tsc_hz,
3450 v->arch.l1_tsc_scaling_ratio);
3451 tgt_tsc_hz = tgt_tsc_hz ? : 1;
3452 }
3453
3454 if (unlikely(vcpu->hw_tsc_hz != tgt_tsc_hz)) {
3455 kvm_get_time_scale(NSEC_PER_SEC, tgt_tsc_hz,
3456 &vcpu->pvclock_tsc_shift,
3457 &vcpu->pvclock_tsc_mul);
3458 vcpu->hw_tsc_hz = tgt_tsc_hz;
3459 }
3460
3461 hv_clock.tsc_shift = vcpu->pvclock_tsc_shift;
3462 hv_clock.tsc_to_system_mul = vcpu->pvclock_tsc_mul;
3463 hv_clock.tsc_timestamp = tsc_timestamp;
3464 hv_clock.system_time = kernel_ns + v->kvm->arch.kvmclock_offset;
3465 vcpu->last_guest_tsc = tsc_timestamp;
3466
3467 /* If the host uses TSC clocksource, then it is stable */
3468 hv_clock.flags = 0;
3469 if (use_master_clock)
3470 hv_clock.flags |= PVCLOCK_TSC_STABLE_BIT;
3471
3472 if (vcpu->pv_time.active) {
3473 /*
3474 * GUEST_STOPPED is only supported by kvmclock, and KVM's
3475 * historic behavior is to only process the request if kvmclock
3476 * is active/enabled.
3477 */
3478 if (vcpu->pvclock_set_guest_stopped_request) {
3479 hv_clock.flags |= PVCLOCK_GUEST_STOPPED;
3480 vcpu->pvclock_set_guest_stopped_request = false;
3481 }
3482 kvm_setup_guest_pvclock(&hv_clock, v, &vcpu->pv_time, 0);
3483
3484 hv_clock.flags &= ~PVCLOCK_GUEST_STOPPED;
3485 }
3486
3487 kvm_hv_setup_tsc_page(v->kvm, &hv_clock);
3488
--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki
^ permalink raw reply [flat|nested] 2+ messages in thread
* Re: [dwmw2:kvmclock4 16/33] arch/x86/kvm/x86.c:3388:22: error: implicit declaration of function 'kvm_get_time_and_clockread'; did you mean 'kvm_get_monotonic_and_clockread'?
2026-05-11 11:59 [dwmw2:kvmclock4 16/33] arch/x86/kvm/x86.c:3388:22: error: implicit declaration of function 'kvm_get_time_and_clockread'; did you mean 'kvm_get_monotonic_and_clockread'? kernel test robot
@ 2026-05-11 12:26 ` David Woodhouse
0 siblings, 0 replies; 2+ messages in thread
From: David Woodhouse @ 2026-05-11 12:26 UTC (permalink / raw)
To: kernel test robot; +Cc: oe-kbuild-all
[-- Attachment #1: Type: text/plain, Size: 1859 bytes --]
On Mon, 2026-05-11 at 19:59 +0800, kernel test robot wrote:
> tree: git://git.infradead.org/users/dwmw2/linux kvmclock4
> head: d6673491163f4987d73e4644987c605f22cbf706
> commit: d216b965d38e8dc9aeccd8eea855a1187f997199 [16/33] KVM: x86: Restructure kvm_guest_time_update() for TSC upscaling
> config: i386-buildonly-randconfig-006 (https://download.01.org/0day-ci/archive/20260511/202605111940.zLRfvQzJ-lkp@intel.com/config)
> compiler: gcc-14 (Debian 14.2.0-19) 14.2.0
> reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20260511/202605111940.zLRfvQzJ-lkp@intel.com/reproduce)
>
> If you fix the issue in a separate patch/commit (i.e. not just a new version of
> the same patch/commit), kindly add following tags
> > Reported-by: kernel test robot <lkp@intel.com>
> > Closes: https://lore.kernel.org/oe-kbuild-all/202605111940.zLRfvQzJ-lkp@intel.com/
>
> All errors (new ones prefixed by >>):
>
> arch/x86/kvm/x86.c: In function 'kvm_guest_time_update':
> > > arch/x86/kvm/x86.c:3388:22: error: implicit declaration of function 'kvm_get_time_and_clockread'; did you mean 'kvm_get_monotonic_and_clockread'? [-Wimplicit-function-declaration]
> 3388 | !kvm_get_time_and_clockread(&kernel_ns, &host_tsc) &&
> | ^~~~~~~~~~~~~~~~~~~~~~~~~~
> | kvm_get_monotonic_and_clockread
> arch/x86/kvm/x86.c:3359:23: warning: unused variable 'flags' [-Wunused-variable]
> 3359 | unsigned long flags;
> | ^~~~~
Ack, that code block can only ever happen on 64-bit because -
>use_master_clock can't be true on 32-bit. It can go inside an ifdef.
Thanks.
[-- Attachment #2: smime.p7s --]
[-- Type: application/pkcs7-signature, Size: 5069 bytes --]
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2026-05-11 12:26 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-05-11 11:59 [dwmw2:kvmclock4 16/33] arch/x86/kvm/x86.c:3388:22: error: implicit declaration of function 'kvm_get_time_and_clockread'; did you mean 'kvm_get_monotonic_and_clockread'? kernel test robot
2026-05-11 12:26 ` David Woodhouse
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.