From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mail-pf1-f199.google.com (mail-pf1-f199.google.com [209.85.210.199]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 493353314C4 for ; Tue, 4 Aug 2026 23:39:27 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.210.199 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1785886768; cv=none; b=puGCBQRSkUht1dr7OSLk+SdKR8wItCDObHSx3XszFIldoy9aBaUTz2DoUR6rzH3v4I/mYF0OW8/Nbu19u1xuHDBGXkGiZc9rGvNiuHTqhu/qDhg2DxwD7zXMBpUidwQUu5xFXjZIroat9A49Cz61cKFiuFKNJmbBIHkDHnqntmM= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1785886768; c=relaxed/simple; bh=JJOWOiazh9hbd55PEARizwtcOCwRLbjqT+V6GkpgxNw=; h=Date:Mime-Version:Message-ID:Subject:From:To:Cc:Content-Type; b=IFa8a1EQzDo2dH8xTQTsk9aEUUAn5v8hvxITRyxwDHiDUd1dGCaxH+At22n8hVOlclWFRYmIK2HDlSXiiRDA3w/v3fb8hax61MBlqCGWKkFqCqu44LH1IfSnhyokij4tkyBNKdcb1IDUuy+DDxcw6WcyCw72AaMDQx7iUv7+/uA= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=google.com; spf=pass smtp.mailfrom=flex--seanjc.bounces.google.com; dkim=pass (2048-bit key) header.d=google.com header.i=@google.com header.b=fNWLap3u; arc=none smtp.client-ip=209.85.210.199 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=google.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=flex--seanjc.bounces.google.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=google.com header.i=@google.com header.b="fNWLap3u" Received: by mail-pf1-f199.google.com with SMTP id d2e1a72fcca58-8486ffba174so690362b3a.1 for ; Tue, 04 Aug 2026 16:39:27 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20251104; t=1785886767; x=1786491567; darn=vger.kernel.org; h=content-type:cc:to:from:subject:message-id:mime-version:date :reply-to:from:to:cc:subject:date:message-id:reply-to:content-type; bh=377A3J/TE3/FgbcypMT8C/e1RTsBxbIY6pGR8tcpmrQ=; b=fNWLap3u8ARGLL0Duw6lL9s7JRHUeUSKMunLzvtNZA2eHdcecW0DSaRfOu3Id/Kh9X P2wh9BOgKwfcaA+AgGy1cY4rFe2o2AWYVbj9oGYfOjdpJ60dtkOLxZlCc7Uvh78RZbfa LZ/FfsTM1p1DBKpL89QuDPT2Wvggo3YqQeZtK7AOjm2DjWdpDNDgy6wHH52lqAhd++q/ 6ARpKrKprIFaxzmL6YWeHDvpfpdh8YSADyCggqyTnEaqjkmqswdYcZzoVqofC6HKioOq 7movD9Zr9tHAFl96fJC0sdKrXOKATGk8y5XwLkq1PvXbv1VuZ7760fjgjYMC1YQa5qSR V9Kg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1785886767; x=1786491567; h=content-type:cc:to:from:subject:message-id:mime-version:date :reply-to:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to:content-type; bh=377A3J/TE3/FgbcypMT8C/e1RTsBxbIY6pGR8tcpmrQ=; b=o3omg6CNyf2EyPNb08OBjcFndp/7Zuy4BHjPN8/gy2yf3FfqCzsmwCWvghAvqN65h9 UwuJOverDCAj7+Qw5afDzkF5UoeYyzq/pK75KiFXTuRnRr8I5TKqsne35MPIlZdNZI2S xA0wLGx4LUop3q9vcmG2AHg8rpHw2RTULmQKg7ALM5SzPU/skq8TNeB3dZs2rhbQUEKK 1qMfhxzm1leth6r6+RMeKxXKzuWBUvuobNUgZUk9YSdKbkD3JFVQy2p8A6/Ah+ePXFVf qdTbErx3PyMpvy5/ElwqNxzo0pMfIdCmvy3SVaVaHs9rE9Srb27p0/ME7Na/Z/meexo3 gyDQ== X-Forwarded-Encrypted: i=1; AHgh+RpkqxGR0VG8YH3PIDipOCfqZitHOCEulr3hPIYKPk46aSQpUPRI96U3jQfkMoWG/0c0gECpIiq/7nSUUXk=@vger.kernel.org X-Gm-Message-State: AOJu0YyWi5wAfefMwmDIHTpUjC6ONYuXp8WFiOpreomOjfdcTe3014hu 2uO24rIU7ovyv6qvvGagwTpf61SJ25UR30bK0VNCZCeD7Tncwoewzx7F8uQf9kDuUhLha1SJT9N SDoUIUA== X-Received: from pfaf12.prod.google.com ([2002:a05:6a00:a11c:b0:848:866d:f119]) (user=seanjc job=prod-delivery.src-stubby-dispatcher) by 2002:a05:6a00:4b03:b0:847:95a6:eb74 with SMTP id d2e1a72fcca58-84f2e00e9f2mr2312052b3a.23.1785886766332; Tue, 04 Aug 2026 16:39:26 -0700 (PDT) Reply-To: Sean Christopherson Date: Tue, 4 Aug 2026 16:39:04 -0700 Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: Mime-Version: 1.0 X-Mailer: git-send-email 2.55.0.571.g244d577d93-goog Message-ID: <20260804233923.3504629-1-seanjc@google.com> Subject: [PATCH v8 00/17] KVM: x86: Cleaning up the KVM clock mess, part 1 From: Sean Christopherson To: Sean Christopherson , Paolo Bonzini Cc: kvm@vger.kernel.org, linux-kernel@vger.kernel.org, Paul Durrant , David Woodhouse , Dongli Zhang Content-Type: text/plain; charset="UTF-8" This is the first half (give or take) of David's series to clean up some of the mess that is timekeeping in KVM. The "cut point" is rather arbitrary: I stopped when I lost confidence in my understanding of the patches. I'm planning on diving back into review for the remaining patches asap, but want to get start landing changes since many of these are fixes. v8: - Obviously cut partway through the full series. - Update commit references for 633d7652f80f ("KVM: x86/xen: Do not corrupt KVM clock in kvm_xen_shared_info_init()"). - Chunk the "Restructure ..." patches into individual logical changes ("Restructure kvm_guest_time_update() for TSC upscaling" in particular was quite gnarly). - Ensure the TSC+freq pair during guest time updates happens on a single CPU. [Sashiko] - Keep __get_kvmclock() as a masterclock-specific helper to avoid deep indentation and gotos. - Do waaaaay too much spelunking to try piece together the history of some of the many warts. - Ensure preemption is disabled in get_kvmclock() when getting the TSC freq. v7: https://lore.kernel.org/all/20260728144954.355376-1-dwmw2@infradead.org David Woodhouse (12): KVM: x86: Improve accuracy of KVM clock when TSC scaling is in force KVM: x86: Explicitly disable TSC scaling without CONSTANT_TSC KVM: x86: Activate master clock immediately on vCPU creation KVM: x86: Avoid NTP frequency skew for KVM clock on 32-bit host KVM: x86: Wrap all of __get_kvmclock_master_clock() with CONFIG_X86_64=y KVM: x86: Fall back to non-master-clock if clockread fails in get_kvmclock() KVM: x86: Fix KVM clock precision in get_kvmclock() with TSC scaling KVM: x86: Use get_kvmclock() in kvm_get_wall_clock_epoch() KVM: x86: Fix compute_guest_tsc() to handle negative time deltas KVM: x86: Upscale TSC to "now", not master clock when updating PV clocks KVM: x86: Simplify and comment kvm_get_time_scale() KVM: x86: Remove implicit rdtsc() from kvm_compute_l1_tsc_offset() Sean Christopherson (5): KVM: x86: Update "last guest TSC" snapshot prior to enabling IRQs/preemption KVM: x86: Drop unnecessary CPU pinning when computing/getting kvmclock KVM: x86: Move "no master clock" fallback from __get_kvmclock() to get_kvmclock() KVM: x86: Disable preemption, not IRQs, when getting TSC+freq pair KVM: x86: Make master clock logic in guest PV clock updates 64-bit only arch/x86/include/asm/kvm_host.h | 6 +- arch/x86/kvm/cpuid.c | 3 +- arch/x86/kvm/msrs.c | 3 +- arch/x86/kvm/svm/svm.c | 3 +- arch/x86/kvm/vmx/vmx.c | 10 + arch/x86/kvm/x86.c | 332 ++++++++++++++++++-------------- arch/x86/kvm/x86.h | 3 +- 7 files changed, 212 insertions(+), 148 deletions(-) base-commit: 51ba04112e93ac6e04c627eddcea5caf9cbc0134 -- 2.55.0.571.g244d577d93-goog