* [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.