From: Nikunj A Dadhania <nikunj@amd.com>
To: <linux-kernel@vger.kernel.org>, <thomas.lendacky@amd.com>,
<bp@alien8.de>, <x86@kernel.org>, <kvm@vger.kernel.org>
Cc: <mingo@redhat.com>, <tglx@linutronix.de>,
<dave.hansen@linux.intel.com>, <pgonda@google.com>,
<seanjc@google.com>, <pbonzini@redhat.com>, <nikunj@amd.com>,
Alexey Makhalov <alexey.makhalov@broadcom.com>,
"Juergen Gross" <jgross@suse.com>,
Boris Ostrovsky <boris.ostrovsky@oracle.com>
Subject: [PATCH v13 10/13] tsc: Upgrade TSC clocksource rating
Date: Mon, 21 Oct 2024 11:21:53 +0530 [thread overview]
Message-ID: <20241021055156.2342564-11-nikunj@amd.com> (raw)
In-Reply-To: <20241021055156.2342564-1-nikunj@amd.com>
In virtualized environments running on modern CPUs, the underlying
platforms guarantees to have a stable, always running TSC, i.e. that the
TSC is a superior timesource as compared to other clock sources (such as
kvmclock, HPET, ACPI timer, APIC, etc.).
Upgrade the rating of the early and regular clock source to prefer TSC over
other clock sources when TSC is invariant, non-stop and stable.
Cc: Alexey Makhalov <alexey.makhalov@broadcom.com>
Cc: Juergen Gross <jgross@suse.com>
Cc: Boris Ostrovsky <boris.ostrovsky@oracle.com>
Suggested-by: Thomas Gleixner <tglx@linutronix.de>
Signed-off-by: Nikunj A Dadhania <nikunj@amd.com>
---
arch/x86/kernel/tsc.c | 17 +++++++++++++++++
1 file changed, 17 insertions(+)
diff --git a/arch/x86/kernel/tsc.c b/arch/x86/kernel/tsc.c
index c83f1091bb4f..27faf121fb78 100644
--- a/arch/x86/kernel/tsc.c
+++ b/arch/x86/kernel/tsc.c
@@ -1264,6 +1264,21 @@ static void __init check_system_tsc_reliable(void)
tsc_disable_clocksource_watchdog();
}
+static void __init upgrade_clock_rating(struct clocksource *tsc_early,
+ struct clocksource *tsc)
+{
+ /*
+ * Upgrade the clock rating for TSC early and regular clocksource when
+ * the underlying platform provides non-stop, invaraint and stable TSC.
+ */
+ if (boot_cpu_has(X86_FEATURE_CONSTANT_TSC) &&
+ boot_cpu_has(X86_FEATURE_NONSTOP_TSC) &&
+ !tsc_unstable) {
+ tsc_early->rating = 449;
+ tsc->rating = 450;
+ }
+}
+
/*
* Make an educated guess if the TSC is trustworthy and synchronized
* over all CPUs.
@@ -1565,6 +1580,8 @@ void __init tsc_init(void)
if (tsc_clocksource_reliable || no_tsc_watchdog)
tsc_disable_clocksource_watchdog();
+ upgrade_clock_rating(&clocksource_tsc_early, &clocksource_tsc);
+
clocksource_register_khz(&clocksource_tsc_early, tsc_khz);
detect_art();
}
--
2.34.1
next prev parent reply other threads:[~2024-10-21 5:59 UTC|newest]
Thread overview: 35+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-10-21 5:51 [PATCH v13 00/13] Add Secure TSC support for SNP guests Nikunj A Dadhania
2024-10-21 5:51 ` [PATCH v13 01/13] x86/sev: Carve out and export SNP guest messaging init routines Nikunj A Dadhania
2024-10-21 7:48 ` Christophe JAILLET
2024-10-22 4:12 ` Nikunj A. Dadhania
2024-10-21 5:51 ` [PATCH v13 02/13] x86/sev: Relocate SNP guest messaging routines to common code Nikunj A Dadhania
2024-10-21 5:51 ` [PATCH v13 03/13] x86/sev: Add Secure TSC support for SNP guests Nikunj A Dadhania
2024-10-21 8:12 ` Christophe JAILLET
2024-10-22 4:15 ` Nikunj A. Dadhania
2024-10-21 5:51 ` [PATCH v13 04/13] x86/sev: Change TSC MSR behavior for Secure TSC enabled guests Nikunj A Dadhania
2024-10-23 3:25 ` Xiaoyao Li
2024-10-24 6:24 ` Nikunj A. Dadhania
2024-10-24 7:31 ` Xiaoyao Li
2024-10-24 10:16 ` Nikunj A. Dadhania
2024-10-21 5:51 ` [PATCH v13 05/13] x86/sev: Prevent RDTSC/RDTSCP interception " Nikunj A Dadhania
2024-10-24 7:56 ` Xiaoyao Li
2024-10-24 8:44 ` Nikunj A. Dadhania
2024-10-24 15:34 ` Xiaoyao Li
2024-10-21 5:51 ` [PATCH v13 06/13] x86/sev: Prevent GUEST_TSC_FREQ MSR " Nikunj A Dadhania
2024-10-21 14:08 ` Tom Lendacky
2024-10-22 4:20 ` Nikunj A. Dadhania
2024-10-21 5:51 ` [PATCH v13 07/13] x86/sev: Mark Secure TSC as reliable clocksource Nikunj A Dadhania
2024-10-21 5:51 ` [PATCH v13 08/13] x86/cpu/amd: Do not print FW_BUG for Secure TSC Nikunj A Dadhania
2024-10-21 5:51 ` [PATCH v13 09/13] tsc: Use the GUEST_TSC_FREQ MSR for discovering TSC frequency Nikunj A Dadhania
2024-10-21 14:33 ` Tom Lendacky
2024-10-22 4:24 ` Nikunj A. Dadhania
2024-10-21 5:51 ` Nikunj A Dadhania [this message]
2024-10-21 5:51 ` [PATCH v13 11/13] tsc: Switch to native sched clock Nikunj A Dadhania
2024-10-21 14:37 ` Tom Lendacky
2024-10-22 4:26 ` Nikunj A. Dadhania
2024-10-21 21:30 ` kernel test robot
2024-10-21 23:03 ` kernel test robot
2024-10-21 5:51 ` [PATCH v13 12/13] x86/kvmclock: Abort SecureTSC enabled guest when kvmclock is selected Nikunj A Dadhania
2024-10-21 15:00 ` Tom Lendacky
2024-10-22 4:28 ` Nikunj A. Dadhania
2024-10-21 5:51 ` [PATCH v13 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=20241021055156.2342564-11-nikunj@amd.com \
--to=nikunj@amd.com \
--cc=alexey.makhalov@broadcom.com \
--cc=boris.ostrovsky@oracle.com \
--cc=bp@alien8.de \
--cc=dave.hansen@linux.intel.com \
--cc=jgross@suse.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