Received: by 2002:ab2:7855:0:b0:1f9:5764:f03e with SMTP id m21csp153190lqp; Tue, 21 May 2024 23:27:33 -0700 (PDT) X-Forwarded-Encrypted: i=3; AJvYcCWeTRMghlYMnW7C8dK/zygcvB1L8IDh0OW95EIDdFLIU19YsS1/A5xMMo6LWLb7gFdEc6n9c4rpl6zjfmbdS1YA041watJsynsXwKrvPQ== X-Google-Smtp-Source: AGHT+IEwE/msNBFT5p3gspwXZ73lQW6WzxKESi7kn46RD/v0gTGbViQE2D7uyNoubAEB4JEai1F8 X-Received: by 2002:a05:6871:5b1f:b0:244:c6d6:2bcb with SMTP id 586e51a60fabf-24c68d8adc2mr1186997fac.46.1716359253128; Tue, 21 May 2024 23:27:33 -0700 (PDT) ARC-Seal: i=2; a=rsa-sha256; t=1716359253; cv=pass; d=google.com; s=arc-20160816; b=S7MgVQZcdNFgFmALlLAgzYzw/CVNLtAx0euyBP8h2uiTiT8yZxJcbwunHPR2ai402X dmxv8Zjbf4EzppPIbVQFg8QuW1/8dHkqtO6ilI9rMEcJmbE/9CisG3Id+G3+L8z+MlD/ MCYOAFnB9xOfbXsT8iu4Fp1yGl3CpG8U5gZvgqm5s4pQMBFzuUeKueMx9kvutK/lkun3 KbL/DVc+U6/IQXVHnn4oHpXldyo6Mxy9aZFcfdKMOmbB814YHiFQGkLWRkt/iEdJSLkh WX6ePt3l6/xGrmyoykOnf3lbUWbZ+P/+ivubWSTxZNn7sUD2FyFS4MbMHWEvPLArFP5l VaLw== ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:content-transfer-encoding:mime-version:list-unsubscribe :list-subscribe:list-id:precedence:references:in-reply-to:message-id :date:subject:cc:to:from:dkim-signature; bh=LhUA0U4IOeUA/e+o4NGCvx07Pxtovz/JSXQ/6S+Lttw=; fh=cHbBeIcWPXug0itFmRfudfa44WmtKnJkoGAOtdzsqoA=; b=C0cwXIDrGsAHAaOfQFJrDWqhdOVpBLx+/TlgqXvBWudtKWoIzadE6sk78VJ3WnV4Ek uhKdHPXBNi/TN7hSafLYwrxuowFX06Fw96AQsoVgGJfOGWOKxO65/2PphXdVS3562Ryd XbcRVF9JlzZ979ivlWXLIXEi63L+fS87p+K3ONFlyK1+mZK4jindddGqAlsCAXSCY2jV vZV5h+xZP9kmIgyDVJC0sFBZLZFifbtNnRBbfuEj+1XHDtL8scI0B56ssL4f2nKb1j80 xhXsSi8NYWdp2pY63jIp8ncrA9bQmhtSsJPJg9QCID9tldKcNHurOplYJSp2jUN+gMzF PLGQ==; dara=google.com ARC-Authentication-Results: i=2; mx.google.com; dkim=pass header.i=@infradead.org header.s=casper.20170209 header.b=SykCe26A; arc=pass (i=1 dkim=pass dkdomain=infradead.org); spf=pass (google.com: domain of linux-kernel+bounces-185562-linux.lists.archive=gmail.com@vger.kernel.org designates 2604:1380:40f1:3f00::1 as permitted sender) smtp.mailfrom="linux-kernel+bounces-185562-linux.lists.archive=gmail.com@vger.kernel.org" Return-Path: Received: from sy.mirrors.kernel.org (sy.mirrors.kernel.org. [2604:1380:40f1:3f00::1]) by mx.google.com with ESMTPS id d2e1a72fcca58-6f4f8b0d0ebsi5351036b3a.206.2024.05.21.23.27.32 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 21 May 2024 23:27:33 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel+bounces-185562-linux.lists.archive=gmail.com@vger.kernel.org designates 2604:1380:40f1:3f00::1 as permitted sender) client-ip=2604:1380:40f1:3f00::1; Authentication-Results: mx.google.com; dkim=pass header.i=@infradead.org header.s=casper.20170209 header.b=SykCe26A; arc=pass (i=1 dkim=pass dkdomain=infradead.org); spf=pass (google.com: domain of linux-kernel+bounces-185562-linux.lists.archive=gmail.com@vger.kernel.org designates 2604:1380:40f1:3f00::1 as permitted sender) smtp.mailfrom="linux-kernel+bounces-185562-linux.lists.archive=gmail.com@vger.kernel.org" Received: from smtp.subspace.kernel.org (wormhole.subspace.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by sy.mirrors.kernel.org (Postfix) with ESMTPS id 09B84B231DB for ; Wed, 22 May 2024 00:24:24 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id C805A145B2F; Wed, 22 May 2024 00:18:45 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=infradead.org header.i=@infradead.org header.b="SykCe26A" Received: from casper.infradead.org (casper.infradead.org [90.155.50.34]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 4D24C23D0; Wed, 22 May 2024 00:18:34 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=90.155.50.34 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1716337119; cv=none; b=fxbcYCTvtSTb/dJQtDkjTO8vgcmxENkDUvRInu87t4V4+DtJEQQ16wOhe+YIvgFOETpbQJKwp/7gXe7a5m57+O9GgdcRCmRxenVbaivi0v9WtQ4/ZRKI3/8fQMpmfGA+Ft/MJ9QAuxAyEWA97th8nU1hBirbFpVI8rZ0cL+zgHg= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1716337119; c=relaxed/simple; bh=MfsZSEbRwBJ9w5jCG1r9UNHwXDhRvX+YH1b8L7lq6jc=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=d1RWD1hyHOV2cgkQjHAp6oGDWK/m0KMdiiKN6/qotQ+krk4FteVBtZWaR4SYYhlPKMC+C/7B3IhguyD18tdofP6EFAkQyLgAXz1oRFsaSIhgYembD7ZbihvkrJuIckG15jmcklvY+frFowpn0KiUVYMVjCJoZGljknoOauPuGFc= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=infradead.org; spf=none smtp.mailfrom=casper.srs.infradead.org; dkim=pass (2048-bit key) header.d=infradead.org header.i=@infradead.org header.b=SykCe26A; arc=none smtp.client-ip=90.155.50.34 Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=infradead.org Authentication-Results: smtp.subspace.kernel.org; spf=none smtp.mailfrom=casper.srs.infradead.org 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:Cc:To:From: Reply-To:Content-Type:Content-ID:Content-Description; bh=LhUA0U4IOeUA/e+o4NGCvx07Pxtovz/JSXQ/6S+Lttw=; b=SykCe26At/GO6JjeZAaeY7wWIC q3swHUY1uqOoNF8X+0XQ0jjVgtWXdIHtAl1hAtMK6xDV0asG6qZv+ftneNJo/S4hJWE6HCY3QC8bt 5CkuCAAs3kZWBaCrr9rAN+HSjW6wqjePkmBV8AuPzFTP6nU9goQbyq/Pqa4G7+wjz8dUbVaWC4Vhf uFZd7MOhvZgA7yqczZ22ER7SVvaHoVMaUt5Rl3xqG8bjwebjQwCJMCIhHjBIxscHOKSnvkjk6uMaj N0eY2zMzGU66oWAT3o7XlVaHRkPSWgEHeqbnzpNAevXRuMLOpOBmwk4InYbGQVVrgkznR1gWkSiGA ffwdTorQ==; Received: from [2001:8b0:10b:1::ebe] (helo=i7.infradead.org) by casper.infradead.org with esmtpsa (Exim 4.97.1 #2 (Red Hat Linux)) id 1s9ZgS-0000000081H-2pxq; Wed, 22 May 2024 00:18:20 +0000 Received: from dwoodhou by i7.infradead.org with local (Exim 4.97.1 #2 (Red Hat Linux)) id 1s9ZgS-00000002b4z-10yQ; Wed, 22 May 2024 01:18:20 +0100 From: David Woodhouse To: kvm@vger.kernel.org Cc: Paolo Bonzini , Jonathan Corbet , Sean Christopherson , Thomas Gleixner , Ingo Molnar , Borislav Petkov , Dave Hansen , x86@kernel.org, "H. Peter Anvin" , Paul Durrant , Peter Zijlstra , Juri Lelli , Vincent Guittot , Dietmar Eggemann , Steven Rostedt , Ben Segall , Mel Gorman , Daniel Bristot de Oliveira , Valentin Schneider , Shuah Khan , linux-doc@vger.kernel.org, linux-kernel@vger.kernel.org, jalliste@amazon.co.uk, sveith@amazon.de, zide.chen@intel.com, Dongli Zhang , Chenyi Qiang Subject: [RFC PATCH v3 12/21] KVM: x86: Remove implicit rdtsc() from kvm_compute_l1_tsc_offset() Date: Wed, 22 May 2024 01:17:07 +0100 Message-ID: <20240522001817.619072-13-dwmw2@infradead.org> X-Mailer: git-send-email 2.44.0 In-Reply-To: <20240522001817.619072-1-dwmw2@infradead.org> References: <20240522001817.619072-1-dwmw2@infradead.org> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Sender: David Woodhouse X-SRS-Rewrite: SMTP reverse-path rewritten from by casper.infradead.org. See http://www.infradead.org/rpr.html From: David Woodhouse Let the callers pass the host TSC value in as an explicit parameter. This leaves some fairly obviously stupid code, which using this function to compare the guest TSC at some *other* time, with the newly-minted TSC value from rdtsc(). Unless it's being used to measure *elapsed* time, that isn't very sensible. In this case, "obviously stupid" is an improvement over being non-obviously so. No functional change intended. Signed-off-by: David Woodhouse --- arch/x86/kvm/x86.c | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/arch/x86/kvm/x86.c b/arch/x86/kvm/x86.c index ef3cd6113037..ea59694d712a 100644 --- a/arch/x86/kvm/x86.c +++ b/arch/x86/kvm/x86.c @@ -2601,11 +2601,12 @@ u64 kvm_scale_tsc(u64 tsc, u64 ratio) return _tsc; } -static u64 kvm_compute_l1_tsc_offset(struct kvm_vcpu *vcpu, u64 target_tsc) +static u64 kvm_compute_l1_tsc_offset(struct kvm_vcpu *vcpu, u64 host_tsc, + u64 target_tsc) { u64 tsc; - tsc = kvm_scale_tsc(rdtsc(), vcpu->arch.l1_tsc_scaling_ratio); + tsc = kvm_scale_tsc(host_tsc, vcpu->arch.l1_tsc_scaling_ratio); return target_tsc - tsc; } @@ -2758,7 +2759,7 @@ static void kvm_synchronize_tsc(struct kvm_vcpu *vcpu, u64 *user_value) bool synchronizing = false; raw_spin_lock_irqsave(&kvm->arch.tsc_write_lock, flags); - offset = kvm_compute_l1_tsc_offset(vcpu, data); + offset = kvm_compute_l1_tsc_offset(vcpu, rdtsc(), data); ns = get_kvmclock_base_ns(); elapsed = ns - kvm->arch.last_tsc_nsec; @@ -2809,7 +2810,7 @@ static void kvm_synchronize_tsc(struct kvm_vcpu *vcpu, u64 *user_value) } else { u64 delta = nsec_to_cycles(vcpu, elapsed); data += delta; - offset = kvm_compute_l1_tsc_offset(vcpu, data); + offset = kvm_compute_l1_tsc_offset(vcpu, rdtsc(), data); } matched = true; } @@ -4024,7 +4025,8 @@ int kvm_set_msr_common(struct kvm_vcpu *vcpu, struct msr_data *msr_info) if (msr_info->host_initiated) { kvm_synchronize_tsc(vcpu, &data); } else { - u64 adj = kvm_compute_l1_tsc_offset(vcpu, data) - vcpu->arch.l1_tsc_offset; + u64 adj = kvm_compute_l1_tsc_offset(vcpu, rdtsc(), data) - + vcpu->arch.l1_tsc_offset; adjust_tsc_offset_guest(vcpu, adj); vcpu->arch.ia32_tsc_adjust_msr += adj; } @@ -5098,7 +5100,7 @@ void kvm_arch_vcpu_load(struct kvm_vcpu *vcpu, int cpu) mark_tsc_unstable("KVM discovered backwards TSC"); if (kvm_check_tsc_unstable()) { - u64 offset = kvm_compute_l1_tsc_offset(vcpu, + u64 offset = kvm_compute_l1_tsc_offset(vcpu, rdtsc(), vcpu->arch.last_guest_tsc); kvm_vcpu_write_tsc_offset(vcpu, offset); vcpu->arch.tsc_catchup = 1; -- 2.44.0