From nobody Wed Aug 26 12:58:15 2026 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) client-ip=192.237.175.120; envelope-from=xen-devel-bounces@lists.xenproject.org; helo=lists.xenproject.org; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) smtp.mailfrom=xen-devel-bounces@lists.xenproject.org; dmarc=pass(p=none dis=none) header.from=infradead.org ARC-Seal: i=1; a=rsa-sha256; t=1783113765; cv=none; d=zohomail.com; s=zohoarc; b=cPq0PAWhL5HC23282VWkL7TgERdU4OIeSO0aPYrwxbGCPEAqStawcQmSTqVWD6MwVo4VC9u6/QPDo5PZ6GYF/ewAc+/XqH+P7TvKorOqmzUBvIydlQFh3AGbR9afMJszCSkwAL5mvLwb17gAtdSV1oEQwFVoL+LCkFOR3vywsT0= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1783113765; h=Content-Transfer-Encoding:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To:Cc; bh=5esTOgHqgTZQG0bhg0+NN2EeUiyx8in1MUEgOdbTb68=; b=QXUhC8rf7MjkjypCb5Cf0pyibeqlKrrCDtSUzlUBEUBk0nctrPurIDlY6Mvq/Mywq+WnufLNaYjgW8y11NDolqm1bR5UbMekkc00acvHDgAo/8VHfvfZ55QAgiBQQC41dhw8pO96fb0K0NsFK3ZYUOEzpvA6HVVexVQk5P5CLSA= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) smtp.mailfrom=xen-devel-bounces@lists.xenproject.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) by mx.zohomail.com with SMTPS id 1783113765578425.9782081318249; Fri, 3 Jul 2026 14:22:45 -0700 (PDT) Received: from list by lists.xenproject.org with outflank-mailman.1353764.1609559 (Exim 4.92) (envelope-from ) id 1wflKz-0008GA-1Y; Fri, 03 Jul 2026 21:22:17 +0000 Received: by outflank-mailman (output) from mailman id 1353764.1609559; Fri, 03 Jul 2026 21:22:16 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1wflKy-0008EG-Mg; Fri, 03 Jul 2026 21:22:16 +0000 Received: by outflank-mailman (input) for mailman id 1353764; Fri, 03 Jul 2026 21:22:14 +0000 Received: from mx.expurgate.net ([194.145.224.10]) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1wflKw-00082A-Ce for xen-devel@lists.xenproject.org; Fri, 03 Jul 2026 21:22:14 +0000 Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp id 1wflKv-00CeeP-PD; Fri, 03 Jul 2026 23:22:13 +0200 Received: from [10.42.69.3] (helo=localhost) by localhost with ESMTP (eXpurgate MTA 0.9.1) (envelope-from ) id 6a4827ca-bab6-0a2a0a5309dd-0a2a4503bf3c-26 for ; Fri, 03 Jul 2026 23:22:13 +0200 Received: from [90.155.50.34] (helo=casper.infradead.org) by tlsNG-33051d.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1) (envelope-from ) id 6a482805-ec1a-0a2a45030019-5a9b3222d6fa-3 for ; Fri, 03 Jul 2026 23:22:13 +0200 Received: from [2001:8b0:10b:1::425] (helo=i7.infradead.org) by casper.infradead.org with esmtpsa (Exim 4.99.1 #2 (Red Hat Linux)) id 1wflKW-0000000AsY5-1o7d; Fri, 03 Jul 2026 21:21:48 +0000 Received: from dwoodhou by i7.infradead.org with local (Exim 4.99.2 #2 (Red Hat Linux)) id 1wflKW-00000001ROT-1D1r; Fri, 03 Jul 2026 22:21:48 +0100 X-Outflank-Mailman: Message body and most headers restored to incoming version X-BeenThere: xen-devel@lists.xenproject.org List-Id: Xen developer discussion List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Precedence: list Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=casper.20170209 header.d=infradead.org header.i="@infradead.org" header.h="Sender:Content-Transfer-Encoding:MIME-Version:References:In-Reply-To:Message-ID:Date:Subject:To:From" DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=infradead.org; s=casper.20170209; h=Sender:Content-Transfer-Encoding: MIME-Version:References:In-Reply-To:Message-ID:Date:Subject:To:From:Reply-To: Cc:Content-Type:Content-ID:Content-Description; bh=5esTOgHqgTZQG0bhg0+NN2EeUiyx8in1MUEgOdbTb68=; b=i2Ub5UzQieNGYKh00g6PXh3mlj M6QMKQ7kfa6KmzGRvyGWn+y6cTd5d12wteB+OfmlUg/ChloyUDVPBsk+4pnifDfVTcFbQg8XPC6Wx 9w7ufgolgi/BG63pmuYQdHTWGhN65P30JJe53ZSKtWpbYn92SfYCQPWnJpgO1TxJrQffhrc+nwhfT Hf+GYVvn5FM5FeI/rUSwlUKt+kTEK/s1DWnwBVHw4/d0ffwmTdNa7342xixebxJ+gyh5rnT0fAaFH X9l96ijMza3ZqOhdx51JKTtN5H+fAKNBFRSq11Ker17Mu5sqoVCHIho+ILVaPiuiyXPfDunwp82m5 B97pDgTg==; From: David Woodhouse To: Paolo Bonzini , Jonathan Corbet , Shuah Khan , Sean Christopherson , Thomas Gleixner , Ingo Molnar , Borislav Petkov , Dave Hansen , x86@kernel.org, "H. Peter Anvin" , Vitaly Kuznetsov , Juergen Gross , Boris Ostrovsky , David Woodhouse , Paul Durrant , Jonathan Cameron , Sascha Bischoff , Marc Zyngier , Joey Gouly , Jack Allister , Dongli Zhang , joe.jin@oracle.com, kvm@vger.kernel.org, linux-doc@vger.kernel.org, linux-kernel@vger.kernel.org, xen-devel@lists.xenproject.org, linux-kselftest@vger.kernel.org Subject: [PATCH v6 11/36] KVM: x86: Fold __get_kvmclock() into get_kvmclock() Date: Fri, 3 Jul 2026 22:17:50 +0100 Message-ID: <20260703212145.343527-12-dwmw2@infradead.org> X-Mailer: git-send-email 2.54.0 In-Reply-To: <20260703212145.343527-1-dwmw2@infradead.org> References: <20260703212145.343527-1-dwmw2@infradead.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Sender: David Woodhouse X-SRS-Rewrite: SMTP reverse-path rewritten from by casper.infradead.org. See http://www.infradead.org/rpr.html X-purgate-ID: tlsNG-33051d/1783113733-061315D1-03F432AA/0/0 X-purgate-type: clean X-purgate-size: 3279 X-ZohoMail-DKIM: pass (identity @infradead.org) X-ZM-MESSAGEID: 1783113766526158500 Content-Type: text/plain; charset="utf-8" From: David Woodhouse There is no need for the separate __get_kvmclock() helper; just inline its body into get_kvmclock() within the seqcount retry loop. No functional change. Signed-off-by: David Woodhouse --- arch/x86/kvm/x86.c | 63 +++++++++++++++++++++------------------------- 1 file changed, 28 insertions(+), 35 deletions(-) diff --git a/arch/x86/kvm/x86.c b/arch/x86/kvm/x86.c index 21603feb44c5..50f088570dab 100644 --- a/arch/x86/kvm/x86.c +++ b/arch/x86/kvm/x86.c @@ -3200,50 +3200,43 @@ static unsigned long get_cpu_tsc_khz(void) return __this_cpu_read(cpu_tsc_khz); } =20 -/* Called within read_seqcount_begin/retry for kvm->pvclock_sc. */ -static void __get_kvmclock(struct kvm *kvm, struct kvm_clock_data *data) +static void get_kvmclock(struct kvm *kvm, struct kvm_clock_data *data) { struct kvm_arch *ka =3D &kvm->arch; struct pvclock_vcpu_time_info hv_clock; + unsigned int seq; =20 - /* both __this_cpu_read() and rdtsc() should be on the same cpu */ - get_cpu(); + do { + seq =3D read_seqcount_begin(&ka->pvclock_sc); =20 - data->flags =3D 0; - if (ka->use_master_clock && - (static_cpu_has(X86_FEATURE_CONSTANT_TSC) || __this_cpu_read(cpu_tsc_= khz))) { + /* both __this_cpu_read() and rdtsc() should be on the same cpu */ + get_cpu(); + + data->flags =3D 0; + if (ka->use_master_clock && + (static_cpu_has(X86_FEATURE_CONSTANT_TSC) || __this_cpu_read(cpu_tsc= _khz))) { #ifdef CONFIG_X86_64 - struct timespec64 ts; + struct timespec64 ts; =20 - if (kvm_get_walltime_and_clockread(&ts, &data->host_tsc)) { - data->realtime =3D ts.tv_nsec + NSEC_PER_SEC * ts.tv_sec; - data->flags |=3D KVM_CLOCK_REALTIME | KVM_CLOCK_HOST_TSC; - } else + if (kvm_get_walltime_and_clockread(&ts, &data->host_tsc)) { + data->realtime =3D ts.tv_nsec + NSEC_PER_SEC * ts.tv_sec; + data->flags |=3D KVM_CLOCK_REALTIME | KVM_CLOCK_HOST_TSC; + } else #endif - data->host_tsc =3D rdtsc(); - - data->flags |=3D KVM_CLOCK_TSC_STABLE; - hv_clock.tsc_timestamp =3D ka->master_cycle_now; - hv_clock.system_time =3D ka->master_kernel_ns + ka->kvmclock_offset; - kvm_get_time_scale(NSEC_PER_SEC, get_cpu_tsc_khz() * 1000LL, - &hv_clock.tsc_shift, - &hv_clock.tsc_to_system_mul); - data->clock =3D __pvclock_read_cycles(&hv_clock, data->host_tsc); - } else { - data->clock =3D get_kvmclock_base_ns() + ka->kvmclock_offset; - } - - put_cpu(); -} - -static void get_kvmclock(struct kvm *kvm, struct kvm_clock_data *data) -{ - struct kvm_arch *ka =3D &kvm->arch; - unsigned seq; + data->host_tsc =3D rdtsc(); + + data->flags |=3D KVM_CLOCK_TSC_STABLE; + hv_clock.tsc_timestamp =3D ka->master_cycle_now; + hv_clock.system_time =3D ka->master_kernel_ns + ka->kvmclock_offset; + kvm_get_time_scale(NSEC_PER_SEC, get_cpu_tsc_khz() * 1000LL, + &hv_clock.tsc_shift, + &hv_clock.tsc_to_system_mul); + data->clock =3D __pvclock_read_cycles(&hv_clock, data->host_tsc); + } else { + data->clock =3D get_kvmclock_base_ns() + ka->kvmclock_offset; + } =20 - do { - seq =3D read_seqcount_begin(&ka->pvclock_sc); - __get_kvmclock(kvm, data); + put_cpu(); } while (read_seqcount_retry(&ka->pvclock_sc, seq)); } =20 --=20 2.54.0