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: Fri, 3 Jan 2025 19:29:10 +0530 [thread overview]
Message-ID: <8c3cc8a5-1b85-48b3-9361-523f27fb312a@amd.com> (raw)
In-Reply-To: <20250103120406.GBZ3fSNnQ5vnkvkHKo@fat_crate.local>
On 1/3/2025 5:34 PM, Borislav Petkov wrote:
> On Thu, Jan 02, 2025 at 06:40:38PM +0530, Nikunj A. Dadhania wrote:
>> ○ Modern CPU/VMs: VMs running on platforms supporting constant, non-stop and reliable TSC
>
> Modern?
Meaning platforms/CPU that support SNP/TDX, they have constant, non-stop and invariant TSC.
> What guarantees do you have on "modern" setups that the HV has no control over
> the TSC MSRs? None.
None.
But, non-secure guests uses the regular TSC when the guest is booted with
TscInvariant bit set, although it doesn't switch the sched clock and
tsc calibration. The guest initially picks up kvm-clock instead
of tsc-early as it was registered earlier and both the clocks have the same
clock rating(299). But at a later point in time clocksource switches to
regular TSC(clock rating 300) from kvm-clock
[ 0.000000] kvm-clock: Using msrs 4b564d01 and 4b564d00
[ 0.000001] kvm-clock: using sched offset of 1799357702246960 cycles
[ 0.001493] clocksource: kvm-clock: mask: 0xffffffffffffffff max_cycles: 0x1cd42e4dffb, max_idle_ns: 881590591483 ns
[ 0.006289] tsc: Detected 1996.249 MHz processor
[ 0.305123] clocksource: tsc-early: mask: 0xffffffffffffffff max_cycles: 0x398cadd9d93, max_idle_ns: 881590552906 ns
[ 1.045759] clocksource: Switched to clocksource kvm-clock
[ 1.141326] clocksource: tsc: mask: 0xffffffffffffffff max_cycles: 0x398cadd9d93, max_idle_ns: 881590552906 ns
[ 1.144634] clocksource: Switched to clocksource tsc
> The only guarantee you have is when the TSC MSRs are not intercepted - IOW,
> you're a STSC guest.
>
> So none of that modern stuff means anything - your only case is a STSC guest
> where you can somewhat reliably know in the guest that the host is not lying
> to you.
That was my understanding and implementation in v11, where Sean suggested that
VMs running on CPUs supporting stable and always running TSC, should switch over
to TSC properly[1] and [2], in a generic way.
>
> So the only configuration is a STSC guest - everything else should use
> kvm-clock.
That is not right, if non-secure guest is booted with TscInvariant bit set, guest
will start using TSC as the clocksource, unfortunately sched clock keeps on using
kvm-clock :(
>
> AFAIU.
>
>>> 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.
>
> Now, why aren't you merging patch 9 and 12 into one and calling it:
>
> "Switch Secure TSC guests away from kvm-clock"
>
> or so, where you switch a STSC guest to use the TSC MSRs and
> warn/taint/terminate the guest if the user chooses otherwise?
I am going to merge both the patches, but wanted your input on the commit
wordings.
Thanks,
Nikunj
1. https://lore.kernel.org/kvm/ZuR2t1QrBpPc1Sz2@google.com/
2. https://lore.kernel.org/kvm/ZurCbP7MesWXQbqZ@google.com/
next prev parent reply other threads:[~2025-01-03 13:59 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
2025-01-03 12:04 ` Borislav Petkov
2025-01-03 13:59 ` Nikunj A. Dadhania [this message]
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=8c3cc8a5-1b85-48b3-9361-523f27fb312a@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
all inboxes | Powered by JetHome®