public inbox for kvm@vger.kernel.org
 help / color / mirror / Atom feed
From: "Nikunj A. Dadhania" <nikunj@amd.com>
To: Borislav Petkov <bp@alien8.de>
Cc: thomas.lendacky@amd.com, linux-kernel@vger.kernel.org,
	x86@kernel.org, kvm@vger.kernel.org, mingo@redhat.com,
	tglx@linutronix.de, dave.hansen@linux.intel.com,
	pgonda@google.com, seanjc@google.com, pbonzini@redhat.com
Subject: Re: [PATCH v15 09/13] tsc: Use the GUEST_TSC_FREQ MSR for discovering TSC frequency
Date: Thu, 2 Jan 2025 18:40:38 +0530	[thread overview]
Message-ID: <061b675d-529b-4175-93bc-67e4fa670cd3@amd.com> (raw)
In-Reply-To: <20250102104519.GFZ3ZuPx8z57jowOWr@fat_crate.local>



On 1/2/2025 4:15 PM, Borislav Petkov wrote:
> On Thu, Jan 02, 2025 at 03:31:49PM +0530, Nikunj A. Dadhania wrote:
>> Sure, how about the below:
>>
>> For SecureTSC enabled guests, TSC frequency should be obtained from the platform 
>> provided GUEST_TSC_FREQ MSR (C001_0134h). As paravirt clock(kvm-clock) has over-ridden 
>> x86_platform.calibrate_cpu() and x86_platform.calibrate_tsc() callbacks, 
>> SecureTSC needs to override them with its own callbacks.
> 
> Not really.
> 
> It's like you're in a contest of "how to write a commit message which is the
> shortest and has as less information as possible."

That is not the goal :-)

Patch 9

---------------------------------------------------------------------------
x86/tsc: Use the GUEST_TSC_FREQ MSR for discovering TSC frequency

Although the kernel switches over to stable TSC clocksource instead of
kvm-clock, TSC frequency calibration still keeps on using the kvm-clock
based frequency calibration. This is due to kvmclock_init() updating the
x86_platform's CPU and TSC callbacks unconditionally.

For SecureTSC enabled guests, use the GUEST_TSC_FREQ MSR to discover the
TSC frequency instead of relying on kvm-clock based frequency calibration.
Override both CPU and TSC frequency calibration callbacks with
securetsc_get_tsc_khz(). As difference between CPU base and TSC frequency
does not apply in this case same callback is being used.
---------------------------------------------------------------------------


> 
> Go back, read the subthread and summarize, please, what has been discussed
> here and for patch 12.

Here is the updated commit log for patch 12:

---------------------------------------------------------------------------
x86/kvmclock: Warn when kvmclock is selected for SecureTSC enabled guests

Warn users when kvmclock is selected as the clock source for SecureTSC enabled
guests. Users can change the clock source to kvm-clock using the sysfs interface
while running on a Secure TSC enabled guest. Switching to the hypervisor-controlled
kvmclock defeats the purpose of using SecureTSC.

Taint the kernel and issue a warning to the user when the clock source switches
to kvmclock, ensuring they are aware of the change and its implications.

---------------------------------------------------------------------------

 
> I'm missing the big picture about the relationship between kvmclock and TSC
> in STSC guests. 

kvmclock_init() always runs before tsc_early_init(). kvm-clock registers the
following during the initialization:

1) TSC calibration callbacks (addressed by patch 9)
2) sched clock (addressed by patch 11)
3) kvm-clock as the clocksource (addressed by patch 10)
4) wall clock callbacks (we don't have a solution for this yet)

I had a summary about this here [1], below snippet with slight modifications after review:

---
To summarise this thread with respect to TSC vs KVM clock, there three key questions:

1) When should kvmclock init be done?
2) How should the TSC frequency be discovered?
3) What should be the sched clock source and how should it be selected in a generic way?

○ Legacy CPU/VMs: VMs running on platforms without non-stop/constant TSC 
  + kvm-clock should be registered before tsc-early/tsc
  + Need to calibrate TSC frequency
  + Use kvmclock wallclock
  + Use kvmclock for sched clock

○ Modern CPU/VMs: VMs running on platforms supporting constant, non-stop and reliable TSC
  + kvm-clock should be registered before tsc-early/tsc
  + TSC Frequency:
      For SecureTSC: GUEST_TSC_FREQ MSR (C001_0134h) provides the TSC frequency, other 
      AMD guests need to calibrate the TSC frequency.
  + Use kvmclock wallclock
  + Use TSC for sched clock

----

> 
> After asking so many questions, it sounds to me like this patch and patch 12
> should be merged into one and there it should be explained what the strategy
> is when a STSC guest loads and how kvmclock is supposed to be handled, what is
> allowed, what is warned about, when the guest terminates what is tainted,
> yadda yadda. 
> > This all belongs in a single patch logically.



Regards
Nikunj
 
1: https://lore.kernel.org/lkml/64813123-e1e2-17e2-19e8-bd5c852b6a32@amd.com/


  reply	other threads:[~2025-01-02 13:10 UTC|newest]

Thread overview: 96+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-12-03  9:00 [PATCH v15 00/13] Add Secure TSC support for SNP guests Nikunj A Dadhania
2024-12-03  9:00 ` [PATCH v15 01/13] x86/sev: Carve out and export SNP guest messaging init routines Nikunj A Dadhania
2024-12-03 14:19   ` Borislav Petkov
2024-12-03 14:35     ` Nikunj A. Dadhania
2024-12-03 14:50       ` Borislav Petkov
2024-12-03 14:52         ` Nikunj A. Dadhania
2024-12-04  9:30     ` Nikunj A. Dadhania
2024-12-04 10:00     ` Nikunj A. Dadhania
2024-12-04 20:02       ` Borislav Petkov
2024-12-05  6:23         ` Nikunj A. Dadhania
2024-12-06 20:27           ` Borislav Petkov
2024-12-07  0:27             ` Dionna Amalie Glaze
2024-12-09 15:36               ` Borislav Petkov
2024-12-09  6:16             ` Nikunj A. Dadhania
2024-12-09 15:38               ` Borislav Petkov
2024-12-10  6:38                 ` Nikunj A Dadhania
2025-01-04 19:06   ` Francesco Lavra
2025-01-06  4:14     ` Nikunj A. Dadhania
2024-12-03  9:00 ` [PATCH v15 02/13] x86/sev: Relocate SNP guest messaging routines to common code Nikunj A Dadhania
2024-12-04 20:20   ` Borislav Petkov
2024-12-05  6:25     ` Nikunj A. Dadhania
2024-12-03  9:00 ` [PATCH v15 03/13] x86/sev: Add Secure TSC support for SNP guests Nikunj A Dadhania
2024-12-05 11:55   ` Borislav Petkov
2024-12-06  4:19     ` Nikunj A. Dadhania
2024-12-16 16:06   ` Tom Lendacky
2024-12-17  6:12     ` Nikunj A Dadhania
2025-01-04 20:26   ` Francesco Lavra
2025-01-06  4:34     ` Nikunj A. Dadhania
2024-12-03  9:00 ` [PATCH v15 04/13] x86/sev: Change TSC MSR behavior for Secure TSC enabled guests Nikunj A Dadhania
2024-12-09 15:57   ` Borislav Petkov
2024-12-10  5:02     ` Nikunj A. Dadhania
2024-12-10 11:43       ` Borislav Petkov
2024-12-10 16:44         ` Nikunj A Dadhania
2024-12-10 14:29       ` Tom Lendacky
2024-12-10 16:59         ` Nikunj A Dadhania
2024-12-11 19:00         ` Borislav Petkov
2024-12-11 22:01           ` Tom Lendacky
2024-12-11 22:22             ` Borislav Petkov
2024-12-11 22:43               ` Tom Lendacky
2024-12-03  9:00 ` [PATCH v15 05/13] x86/sev: Prevent RDTSC/RDTSCP interception " Nikunj A Dadhania
2024-12-10 11:53   ` Borislav Petkov
2024-12-03  9:00 ` [PATCH v15 06/13] x86/sev: Prevent GUEST_TSC_FREQ MSR " Nikunj A Dadhania
2024-12-10 12:11   ` Borislav Petkov
2024-12-10 17:13     ` Nikunj A Dadhania
2024-12-10 17:18       ` Borislav Petkov
2024-12-12  4:53         ` Nikunj A. Dadhania
2024-12-17 10:57           ` Borislav Petkov
2024-12-18  5:20             ` Nikunj A. Dadhania
2024-12-24 11:53               ` Borislav Petkov
2025-01-01  8:44                 ` Nikunj A. Dadhania
2025-01-01 16:10                   ` Borislav Petkov
2025-01-02  5:03                     ` Nikunj A. Dadhania
2025-01-02  9:07                       ` Borislav Petkov
2025-01-02  9:30                         ` Nikunj A. Dadhania
2025-01-02 14:45                           ` Tom Lendacky
2025-01-02 14:54                             ` Borislav Petkov
2024-12-10 17:22       ` Tom Lendacky
2024-12-03  9:00 ` [PATCH v15 07/13] x86/sev: Mark Secure TSC as reliable clocksource Nikunj A Dadhania
2024-12-11 20:32   ` Borislav Petkov
2024-12-12  5:07     ` Nikunj A Dadhania
2024-12-03  9:00 ` [PATCH v15 08/13] x86/cpu/amd: Do not print FW_BUG for Secure TSC Nikunj A Dadhania
2024-12-17 11:10   ` Borislav Petkov
2024-12-18  5:21     ` Nikunj A. Dadhania
2024-12-03  9:00 ` [PATCH v15 09/13] tsc: Use the GUEST_TSC_FREQ MSR for discovering TSC frequency Nikunj A Dadhania
2024-12-16 16:31   ` Tom Lendacky
2024-12-17  6:27     ` Nikunj A Dadhania
2024-12-17  7:05       ` Tom Lendacky
2024-12-17  7:57         ` Nikunj A. Dadhania
2024-12-30 11:29   ` Borislav Petkov
2025-01-01  8:56     ` Nikunj A. Dadhania
2025-01-01 16:15       ` Borislav Petkov
2025-01-02  5:10         ` Nikunj A. Dadhania
2025-01-02  9:17           ` Borislav Petkov
2025-01-02 10:01             ` Nikunj A. Dadhania
2025-01-02 10:45               ` Borislav Petkov
2025-01-02 13:10                 ` Nikunj A. Dadhania [this message]
2025-01-03 12:04                   ` Borislav Petkov
2025-01-03 13:59                     ` Nikunj A. Dadhania
2025-01-04 10:28                       ` Borislav Petkov
2024-12-03  9:00 ` [PATCH v15 10/13] tsc: Upgrade TSC clocksource rating Nikunj A Dadhania
2024-12-30 11:36   ` Borislav Petkov
2025-01-02  5:20     ` Nikunj A. Dadhania
2025-01-02  9:32       ` Borislav Petkov
2025-01-03 10:09         ` Nikunj A. Dadhania
2025-01-03 12:06           ` Borislav Petkov
2025-01-03 14:03             ` Nikunj A. Dadhania
2024-12-03  9:00 ` [PATCH v15 11/13] tsc: Switch to native sched clock Nikunj A Dadhania
2024-12-03  9:00 ` [PATCH v15 12/13] x86/kvmclock: Abort SecureTSC enabled guest when kvmclock is selected Nikunj A Dadhania
2024-12-16 16:36   ` Tom Lendacky
2024-12-30 17:04   ` Borislav Petkov
2025-01-01  9:44     ` Nikunj A. Dadhania
2025-01-01 16:19       ` Borislav Petkov
2025-01-02  5:34         ` Nikunj A. Dadhania
2025-01-02  9:25           ` Borislav Petkov
2025-01-02 10:06             ` Nikunj A. Dadhania
2024-12-03  9:00 ` [PATCH v15 13/13] x86/sev: Allow Secure TSC feature for SNP guests 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=061b675d-529b-4175-93bc-67e4fa670cd3@amd.com \
    --to=nikunj@amd.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=pbonzini@redhat.com \
    --cc=pgonda@google.com \
    --cc=seanjc@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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox