All of lore.kernel.org
 help / color / mirror / Atom feed
* [sean-jc:x86/host_kvmclock_mess 13/15] arch/x86/kvm/x86.c:1898:13: error: 'ka' undeclared
@ 2026-07-30  8:21 kernel test robot
  0 siblings, 0 replies; only message in thread
From: kernel test robot @ 2026-07-30  8:21 UTC (permalink / raw)
  To: Sean Christopherson; +Cc: oe-kbuild-all

tree:   https://github.com/sean-jc/linux x86/host_kvmclock_mess
head:   1874dce49fd558c97bf46e9d2a7e635c5158f74a
commit: cf8c84f746b298279341d445ea410332b25c6395 [13/15] KVM: x86: Make master clock logic in guest PV clock updates 64-bit only
config: i386-allmodconfig (https://download.01.org/0day-ci/archive/20260730/202607301649.iChHivfM-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/20260730/202607301649.iChHivfM-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/202607301649.iChHivfM-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:1898:13: error: 'ka' undeclared (first use in this function)
    1898 |         if (ka->xen.hvm_config.flags & KVM_XEN_HVM_CONFIG_PVCLOCK_TSC_UNSTABLE)
         |             ^~
   arch/x86/kvm/x86.c:1898:13: note: each undeclared identifier is reported only once for each function it appears in


vim +/ka +1898 arch/x86/kvm/x86.c

66570e966dd9cb4 Oliver Upton        2020-08-18  1779  
7a268308015843c Sean Christopherson 2026-06-12  1780  int kvm_guest_time_update(struct kvm_vcpu *v)
7a268308015843c Sean Christopherson 2026-06-12  1781  {
7a268308015843c Sean Christopherson 2026-06-12  1782  	struct pvclock_vcpu_time_info hv_clock = {};
1e70cb5a00c624f David Woodhouse     2026-07-28  1783  	u64 tgt_tsc_hz;
7a268308015843c Sean Christopherson 2026-06-12  1784  	struct kvm_vcpu_arch *vcpu = &v->arch;
7a268308015843c Sean Christopherson 2026-06-12  1785  	s64 kernel_ns;
7a268308015843c Sean Christopherson 2026-06-12  1786  	u64 tsc_timestamp, host_tsc;
66570e966dd9cb4 Oliver Upton        2020-08-18  1787  
68c35f89d016dd0 Maxim Levitsky      2025-10-14  1788  	/*
7a268308015843c Sean Christopherson 2026-06-12  1789  	 * If the host uses TSC clock, then passthrough TSC as stable
7a268308015843c Sean Christopherson 2026-06-12  1790  	 * to the guest.
68c35f89d016dd0 Maxim Levitsky      2025-10-14  1791  	 */
cf8c84f746b2982 Sean Christopherson 2026-07-29  1792  #ifdef CONFIG_X86_64
cf8c84f746b2982 Sean Christopherson 2026-07-29  1793  	struct kvm_arch *ka = &v->kvm->arch;
cf8c84f746b2982 Sean Christopherson 2026-07-29  1794  	bool use_master_clock;
cf8c84f746b2982 Sean Christopherson 2026-07-29  1795  	unsigned seq;
cf8c84f746b2982 Sean Christopherson 2026-07-29  1796  
7a268308015843c Sean Christopherson 2026-06-12  1797  	do {
7a268308015843c Sean Christopherson 2026-06-12  1798  		seq = read_seqcount_begin(&ka->pvclock_sc);
7a268308015843c Sean Christopherson 2026-06-12  1799  		use_master_clock = ka->use_master_clock;
7a268308015843c Sean Christopherson 2026-06-12  1800  		if (use_master_clock) {
7a268308015843c Sean Christopherson 2026-06-12  1801  			host_tsc = ka->master_cycle_now;
7a268308015843c Sean Christopherson 2026-06-12  1802  			kernel_ns = ka->master_kernel_ns;
557a961abbe06ed Vitaly Kuznetsov    2020-05-25  1803  		}
7a268308015843c Sean Christopherson 2026-06-12  1804  	} while (read_seqcount_retry(&ka->pvclock_sc, seq));
cf8c84f746b2982 Sean Christopherson 2026-07-29  1805  #else
cf8c84f746b2982 Sean Christopherson 2026-07-29  1806  	const bool use_master_clock = false;
cf8c84f746b2982 Sean Christopherson 2026-07-29  1807  #endif
2d7c026f09d73c3 Sean Christopherson 2026-07-29  1808  	/*
2d7c026f09d73c3 Sean Christopherson 2026-07-29  1809  	 * Ensure reading the TSC+frequency pair is done on the same CPU.  When
2d7c026f09d73c3 Sean Christopherson 2026-07-29  1810  	 * NOT using the master clock, the TSC frequency may vary between CPUs.
2d7c026f09d73c3 Sean Christopherson 2026-07-29  1811  	 */
2d7c026f09d73c3 Sean Christopherson 2026-07-29  1812  	preempt_disable();
1e70cb5a00c624f David Woodhouse     2026-07-28  1813  	tgt_tsc_hz = (u64)get_cpu_tsc_khz() * HZ_PER_KHZ;
1e70cb5a00c624f David Woodhouse     2026-07-28  1814  	if (unlikely(tgt_tsc_hz == 0)) {
2d7c026f09d73c3 Sean Christopherson 2026-07-29  1815  		preempt_enable();
7a268308015843c Sean Christopherson 2026-06-12  1816  		kvm_make_request(KVM_REQ_CLOCK_UPDATE, v);
c9aaa8957f203bd Glauber Costa       2011-07-11  1817  		return 1;
7a268308015843c Sean Christopherson 2026-06-12  1818  	}
7a268308015843c Sean Christopherson 2026-06-12  1819  	if (!use_master_clock) {
7a268308015843c Sean Christopherson 2026-06-12  1820  		host_tsc = rdtsc();
7a268308015843c Sean Christopherson 2026-06-12  1821  		kernel_ns = get_kvmclock_base_ns();
7a268308015843c Sean Christopherson 2026-06-12  1822  	}
c9aaa8957f203bd Glauber Costa       2011-07-11  1823  
7a268308015843c Sean Christopherson 2026-06-12  1824  	tsc_timestamp = kvm_read_l1_tsc(v, host_tsc);
c9aaa8957f203bd Glauber Costa       2011-07-11  1825  
7a268308015843c Sean Christopherson 2026-06-12  1826  	/*
7a268308015843c Sean Christopherson 2026-06-12  1827  	 * We may have to catch up the TSC to match elapsed wall clock
7a268308015843c Sean Christopherson 2026-06-12  1828  	 * time for two reasons, even if kvmclock is used.
7a268308015843c Sean Christopherson 2026-06-12  1829  	 *   1) CPU could have been running below the maximum TSC rate
7a268308015843c Sean Christopherson 2026-06-12  1830  	 *   2) Broken TSC compensation resets the base at each VCPU
7a268308015843c Sean Christopherson 2026-06-12  1831  	 *      entry to avoid unknown leaps of TSC even when running
7a268308015843c Sean Christopherson 2026-06-12  1832  	 *      again on the same CPU.  This may cause apparent elapsed
7a268308015843c Sean Christopherson 2026-06-12  1833  	 *      time to disappear, and the guest to stand still or run
7a268308015843c Sean Christopherson 2026-06-12  1834  	 *	very slowly.
7a268308015843c Sean Christopherson 2026-06-12  1835  	 */
7a268308015843c Sean Christopherson 2026-06-12  1836  	if (vcpu->tsc_catchup) {
7a268308015843c Sean Christopherson 2026-06-12  1837  		u64 tsc = compute_guest_tsc(v, kernel_ns);
7a268308015843c Sean Christopherson 2026-06-12  1838  		if (tsc > tsc_timestamp) {
7a268308015843c Sean Christopherson 2026-06-12  1839  			adjust_tsc_offset_guest(v, tsc - tsc_timestamp);
7a268308015843c Sean Christopherson 2026-06-12  1840  			tsc_timestamp = tsc;
7a268308015843c Sean Christopherson 2026-06-12  1841  		}
7a268308015843c Sean Christopherson 2026-06-12  1842  	}
c9aaa8957f203bd Glauber Costa       2011-07-11  1843  
2d7c026f09d73c3 Sean Christopherson 2026-07-29  1844  	preempt_enable();
c9aaa8957f203bd Glauber Costa       2011-07-11  1845  
7a268308015843c Sean Christopherson 2026-06-12  1846  	/* With all the info we got, fill in the values */
c9aaa8957f203bd Glauber Costa       2011-07-11  1847  
7a268308015843c Sean Christopherson 2026-06-12  1848  	if (kvm_caps.has_tsc_control) {
1e70cb5a00c624f David Woodhouse     2026-07-28  1849  		tgt_tsc_hz = kvm_scale_tsc(tgt_tsc_hz,
7a268308015843c Sean Christopherson 2026-06-12  1850  					    v->arch.l1_tsc_scaling_ratio);
1e70cb5a00c624f David Woodhouse     2026-07-28  1851  		tgt_tsc_hz = tgt_tsc_hz ? : 1;
7a268308015843c Sean Christopherson 2026-06-12  1852  	}
66570e966dd9cb4 Oliver Upton        2020-08-18  1853  
1e70cb5a00c624f David Woodhouse     2026-07-28  1854  	if (unlikely(vcpu->hw_tsc_hz != tgt_tsc_hz)) {
1e70cb5a00c624f David Woodhouse     2026-07-28  1855  		kvm_get_time_scale(NSEC_PER_SEC, tgt_tsc_hz,
7a268308015843c Sean Christopherson 2026-06-12  1856  				   &vcpu->pvclock_tsc_shift,
7a268308015843c Sean Christopherson 2026-06-12  1857  				   &vcpu->pvclock_tsc_mul);
1e70cb5a00c624f David Woodhouse     2026-07-28  1858  		vcpu->hw_tsc_hz = tgt_tsc_hz;
7a268308015843c Sean Christopherson 2026-06-12  1859  	}
c9aaa8957f203bd Glauber Costa       2011-07-11  1860  
7a268308015843c Sean Christopherson 2026-06-12  1861  	hv_clock.tsc_shift = vcpu->pvclock_tsc_shift;
7a268308015843c Sean Christopherson 2026-06-12  1862  	hv_clock.tsc_to_system_mul = vcpu->pvclock_tsc_mul;
7a268308015843c Sean Christopherson 2026-06-12  1863  	hv_clock.tsc_timestamp = tsc_timestamp;
7a268308015843c Sean Christopherson 2026-06-12  1864  	hv_clock.system_time = kernel_ns + v->kvm->arch.kvmclock_offset;
7a268308015843c Sean Christopherson 2026-06-12  1865  	vcpu->last_guest_tsc = tsc_timestamp;
66570e966dd9cb4 Oliver Upton        2020-08-18  1866  
7a268308015843c Sean Christopherson 2026-06-12  1867  	/* If the host uses TSC clocksource, then it is stable */
7a268308015843c Sean Christopherson 2026-06-12  1868  	hv_clock.flags = 0;
7a268308015843c Sean Christopherson 2026-06-12  1869  	if (use_master_clock)
7a268308015843c Sean Christopherson 2026-06-12  1870  		hv_clock.flags |= PVCLOCK_TSC_STABLE_BIT;
2d5ba19bdfef4dd Marcelo Tosatti     2019-06-03  1871  
7a268308015843c Sean Christopherson 2026-06-12  1872  	if (vcpu->pv_time.active) {
7a268308015843c Sean Christopherson 2026-06-12  1873  		/*
7a268308015843c Sean Christopherson 2026-06-12  1874  		 * GUEST_STOPPED is only supported by kvmclock, and KVM's
7a268308015843c Sean Christopherson 2026-06-12  1875  		 * historic behavior is to only process the request if kvmclock
7a268308015843c Sean Christopherson 2026-06-12  1876  		 * is active/enabled.
7a268308015843c Sean Christopherson 2026-06-12  1877  		 */
7a268308015843c Sean Christopherson 2026-06-12  1878  		if (vcpu->pvclock_set_guest_stopped_request) {
7a268308015843c Sean Christopherson 2026-06-12  1879  			hv_clock.flags |= PVCLOCK_GUEST_STOPPED;
7a268308015843c Sean Christopherson 2026-06-12  1880  			vcpu->pvclock_set_guest_stopped_request = false;
7a268308015843c Sean Christopherson 2026-06-12  1881  		}
7a268308015843c Sean Christopherson 2026-06-12  1882  		kvm_setup_guest_pvclock(&hv_clock, v, &vcpu->pv_time, 0);
2d5ba19bdfef4dd Marcelo Tosatti     2019-06-03  1883  
7a268308015843c Sean Christopherson 2026-06-12  1884  		hv_clock.flags &= ~PVCLOCK_GUEST_STOPPED;
7a268308015843c Sean Christopherson 2026-06-12  1885  	}
71db602322b1197 Andre Przywara      2009-06-12  1886  
7a268308015843c Sean Christopherson 2026-06-12  1887  	kvm_hv_setup_tsc_page(v->kvm, &hv_clock);
5753785fa97742d Gleb Natapov        2012-01-15  1888  
7a268308015843c Sean Christopherson 2026-06-12  1889  #ifdef CONFIG_KVM_XEN
84e0cefa8ddd5d5 Jes Sorensen        2010-09-01  1890  	/*
7a268308015843c Sean Christopherson 2026-06-12  1891  	 * For Xen guests we may need to override PVCLOCK_TSC_STABLE_BIT as unless
7a268308015843c Sean Christopherson 2026-06-12  1892  	 * explicitly told to use TSC as its clocksource Xen will not set this bit.
7a268308015843c Sean Christopherson 2026-06-12  1893  	 * This default behaviour led to bugs in some guest kernels which cause
7a268308015843c Sean Christopherson 2026-06-12  1894  	 * problems if they observe PVCLOCK_TSC_STABLE_BIT in the pvclock flags.
7a268308015843c Sean Christopherson 2026-06-12  1895  	 *
7a268308015843c Sean Christopherson 2026-06-12  1896  	 * Note!  Clear TSC_STABLE only for Xen clocks, i.e. the order matters!
84e0cefa8ddd5d5 Jes Sorensen        2010-09-01  1897  	 */
7a268308015843c Sean Christopherson 2026-06-12 @1898  	if (ka->xen.hvm_config.flags & KVM_XEN_HVM_CONFIG_PVCLOCK_TSC_UNSTABLE)
7a268308015843c Sean Christopherson 2026-06-12  1899  		hv_clock.flags &= ~PVCLOCK_TSC_STABLE_BIT;
7a268308015843c Sean Christopherson 2026-06-12  1900  
7a268308015843c Sean Christopherson 2026-06-12  1901  	if (vcpu->xen.vcpu_info_cache.active)
7a268308015843c Sean Christopherson 2026-06-12  1902  		kvm_setup_guest_pvclock(&hv_clock, v, &vcpu->xen.vcpu_info_cache,
7a268308015843c Sean Christopherson 2026-06-12  1903  					offsetof(struct compat_vcpu_info, time));
7a268308015843c Sean Christopherson 2026-06-12  1904  	if (vcpu->xen.vcpu_time_info_cache.active)
7a268308015843c Sean Christopherson 2026-06-12  1905  		kvm_setup_guest_pvclock(&hv_clock, v, &vcpu->xen.vcpu_time_info_cache, 0);
b4f69df0f65e97f Vitaly Kuznetsov    2023-12-05  1906  #endif
7a268308015843c Sean Christopherson 2026-06-12  1907  	return 0;
7a268308015843c Sean Christopherson 2026-06-12  1908  }
7a268308015843c Sean Christopherson 2026-06-12  1909  

:::::: The code at line 1898 was first introduced by commit
:::::: 7a268308015843c7e8b15dda588b2e9adf45223f KVM: x86: Move the bulk of MSR specific code from x86.c to msrs.{c,h}

:::::: TO: Sean Christopherson <seanjc@google.com>
:::::: CC: Paolo Bonzini <pbonzini@redhat.com>

--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki

^ permalink raw reply	[flat|nested] only message in thread

only message in thread, other threads:[~2026-07-30  8:22 UTC | newest]

Thread overview: (only message) (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-07-30  8:21 [sean-jc:x86/host_kvmclock_mess 13/15] arch/x86/kvm/x86.c:1898:13: error: 'ka' undeclared kernel test robot

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.