All of lore.kernel.org
 help / color / mirror / Atom feed
From: Sean Christopherson <seanjc@google.com>
To: Nikunj A Dadhania <nikunj@amd.com>
Cc: linux-kernel@vger.kernel.org, thomas.lendacky@amd.com,
	bp@alien8.de,  x86@kernel.org, kvm@vger.kernel.org,
	mingo@redhat.com, tglx@linutronix.de,
	 dave.hansen@linux.intel.com, pgonda@google.com,
	pbonzini@redhat.com
Subject: Re: [PATCH v12 16/19] x86/kvmclock: Use clock source callback to update kvm sched clock
Date: Wed, 9 Oct 2024 08:58:52 -0700	[thread overview]
Message-ID: <ZwaoPJYN-FuSWRxc@google.com> (raw)
In-Reply-To: <20241009092850.197575-17-nikunj@amd.com>

On Wed, Oct 09, 2024, Nikunj A Dadhania wrote:
> Although the kernel switches over to stable TSC clocksource instead of
> kvmclock, the scheduler still keeps on using kvmclock as the sched clock.
> This is due to kvm_sched_clock_init() updating the pv_sched_clock()
> unconditionally.

All PV clocks are affected by this, no?  This seems like something that should
be handled in common code, which is the point I was trying to make in v11.

> Use the clock source enable/disable callbacks to initialize
> kvm_sched_clock_init() and update the pv_sched_clock().
> 
> As the clock selection happens in the stop machine context, schedule
> delayed work to update the static_call()
> 
> Signed-off-by: Nikunj A Dadhania <nikunj@amd.com>
> ---
>  arch/x86/kernel/kvmclock.c | 34 +++++++++++++++++++++++++++++-----
>  1 file changed, 29 insertions(+), 5 deletions(-)
> 
> diff --git a/arch/x86/kernel/kvmclock.c b/arch/x86/kernel/kvmclock.c
> index 5b2c15214a6b..5cd3717e103b 100644
> --- a/arch/x86/kernel/kvmclock.c
> +++ b/arch/x86/kernel/kvmclock.c
> @@ -21,6 +21,7 @@
>  #include <asm/hypervisor.h>
>  #include <asm/x86_init.h>
>  #include <asm/kvmclock.h>
> +#include <asm/timer.h>
>  
>  static int kvmclock __initdata = 1;
>  static int kvmclock_vsyscall __initdata = 1;
> @@ -148,12 +149,39 @@ bool kvm_check_and_clear_guest_paused(void)
>  	return ret;
>  }
>  
> +static u64 (*old_pv_sched_clock)(void);
> +
> +static void enable_kvm_sc_work(struct work_struct *work)
> +{
> +	u8 flags;
> +
> +	old_pv_sched_clock = static_call_query(pv_sched_clock);
> +	flags = pvclock_read_flags(&hv_clock_boot[0].pvti);
> +	kvm_sched_clock_init(flags & PVCLOCK_TSC_STABLE_BIT);
> +}
> +
> +static DECLARE_DELAYED_WORK(enable_kvm_sc, enable_kvm_sc_work);
> +
> +static void disable_kvm_sc_work(struct work_struct *work)
> +{
> +	if (old_pv_sched_clock)

This feels like it should be a WARN condition, as IIUC, pv_sched_clock() should
never be null.  And it _looks_ wrong too, as it means kvm_clock will remain the
sched clock if there was no old clock, which should be impossible.

> +		paravirt_set_sched_clock(old_pv_sched_clock);

  reply	other threads:[~2024-10-09 15:58 UTC|newest]

Thread overview: 41+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-10-09  9:28 [PATCH v12 00/19] Add Secure TSC support for SNP guests Nikunj A Dadhania
2024-10-09  9:28 ` [PATCH v12 01/19] virt: sev-guest: Use AES GCM crypto library Nikunj A Dadhania
2024-10-17 11:56   ` [tip: x86/sev] " tip-bot2 for Nikunj A Dadhania
2024-10-09  9:28 ` [PATCH v12 02/19] x86/sev: Handle failures from snp_init() Nikunj A Dadhania
2024-10-16 16:16   ` Tom Lendacky
2024-10-17 11:56   ` [tip: x86/sev] " tip-bot2 for Nikunj A Dadhania
2024-10-09  9:28 ` [PATCH v12 03/19] x86/sev: Cache the secrets page address Nikunj A Dadhania
2024-10-17 11:56   ` [tip: x86/sev] " tip-bot2 for Nikunj A Dadhania
2024-10-09  9:28 ` [PATCH v12 04/19] virt: sev-guest: Consolidate SNP guest messaging parameters to a struct Nikunj A Dadhania
2024-10-17 11:56   ` [tip: x86/sev] " tip-bot2 for Nikunj A Dadhania
2024-10-09  9:28 ` [PATCH v12 05/19] virt: sev-guest: Reduce the scope of SNP command mutex Nikunj A Dadhania
2024-10-10 18:32   ` Tom Lendacky
2024-10-17 11:56   ` [tip: x86/sev] " tip-bot2 for Nikunj A Dadhania
2024-10-09  9:28 ` [PATCH v12 06/19] virt: sev-guest: Carve out SNP message context structure Nikunj A Dadhania
2024-10-17 11:56   ` [tip: x86/sev] " tip-bot2 for Nikunj A Dadhania
2024-10-09  9:28 ` [PATCH v12 07/19] x86/sev: Carve out and export SNP guest messaging init routines Nikunj A Dadhania
2024-10-17  7:42   ` kernel test robot
2024-10-09  9:28 ` [PATCH v12 08/19] x86/sev: Relocate SNP guest messaging routines to common code Nikunj A Dadhania
2024-10-09  9:28 ` [PATCH v12 09/19] x86/cc: Add CC_ATTR_GUEST_SNP_SECURE_TSC Nikunj A Dadhania
2024-10-10 18:34   ` Tom Lendacky
2024-10-09  9:28 ` [PATCH v12 10/19] x86/sev: Add Secure TSC support for SNP guests Nikunj A Dadhania
2024-10-09  9:28 ` [PATCH v12 11/19] x86/sev: Change TSC MSR behavior for Secure TSC enabled guests Nikunj A Dadhania
2024-10-09  9:28 ` [PATCH v12 12/19] x86/sev: Prevent RDTSC/RDTSCP interception " Nikunj A Dadhania
2024-10-09  9:28 ` [PATCH v12 13/19] x86/sev: Mark Secure TSC as reliable clocksource Nikunj A Dadhania
2024-10-09  9:28 ` [PATCH v12 14/19] tsc: Use the GUEST_TSC_FREQ MSR for discovering TSC frequency Nikunj A Dadhania
2024-10-10 19:39   ` Tom Lendacky
2024-10-14  3:36     ` Nikunj A. Dadhania
2024-10-09  9:28 ` [PATCH v12 15/19] tsc: Upgrade TSC clocksource rating Nikunj A Dadhania
2024-10-09 16:16   ` Sean Christopherson
2024-10-10  6:44     ` Nikunj A. Dadhania
2024-10-09  9:28 ` [PATCH v12 16/19] x86/kvmclock: Use clock source callback to update kvm sched clock Nikunj A Dadhania
2024-10-09 15:58   ` Sean Christopherson [this message]
2024-10-10 10:14     ` Nikunj A. Dadhania
2024-10-16  8:26       ` Nikunj A. Dadhania
2024-10-09  9:28 ` [PATCH v12 17/19] x86/kvmclock: Abort SecureTSC enabled guest when kvmclock is selected Nikunj A Dadhania
2024-10-10 19:49   ` Tom Lendacky
2024-10-14  3:37     ` Nikunj A. Dadhania
2024-10-09  9:28 ` [PATCH v12 18/19] x86/cpu/amd: Do not print FW_BUG for Secure TSC Nikunj A Dadhania
2024-10-09  9:28 ` [PATCH v12 19/19] x86/sev: Allow Secure TSC feature for SNP guests Nikunj A Dadhania
2024-10-09 16:08 ` [PATCH v12 00/19] Add Secure TSC support " Dave Hansen
2024-10-10  6:28   ` Nikunj A. Dadhania

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=ZwaoPJYN-FuSWRxc@google.com \
    --to=seanjc@google.com \
    --cc=bp@alien8.de \
    --cc=dave.hansen@linux.intel.com \
    --cc=kvm@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mingo@redhat.com \
    --cc=nikunj@amd.com \
    --cc=pbonzini@redhat.com \
    --cc=pgonda@google.com \
    --cc=tglx@linutronix.de \
    --cc=thomas.lendacky@amd.com \
    --cc=x86@kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
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.