public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
From: Mario Limonciello <superm1@kernel.org>
To: Bjorn Helgaas <bhelgaas@google.com>,
	Mathias Nyman <mathias.nyman@intel.com>,
	Mika Westerberg <mika.westerberg@linux.intel.com>
Cc: "open list : PCI SUBSYSTEM" <linux-pci@vger.kernel.org>,
	"open list" <linux-kernel@vger.kernel.org>,
	"open list : USB XHCI DRIVER" <linux-usb@vger.kernel.org>,
	"Daniel Drake" <drake@endlessos.org>, "Gary Li" <Gary.Li@amd.com>,
	"Greg Kroah-Hartman" <gregkh@linuxfoundation.org>,
	"Ilpo Järvinen" <ilpo.jarvinen@linux.intel.com>,
	"Mario Limonciello" <mario.limonciello@amd.com>
Subject: [PATCH] x86/tsc: Use rdtsc_ordered() when RDTSCP or LFENCE_RDTSC are supported
Date: Thu, 22 Aug 2024 23:25:04 -0500	[thread overview]
Message-ID: <20240823042508.1057791-3-superm1@kernel.org> (raw)
In-Reply-To: <20240823042508.1057791-1-superm1@kernel.org>

From: Mario Limonciello <mario.limonciello@amd.com>

On AMD processors the TSC has been reported drifting on and off for
various platforms.  This has been root caused to becaused by out of order
TSC and HPET counter values.  When the SoC supports RDTSCP or LFENCE_RDTSC
use ordered tsc reads instead.

Signed-off-by: Mario Limonciello <mario.limonciello@amd.com>
---
 arch/x86/include/asm/tsc.h | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/arch/x86/include/asm/tsc.h b/arch/x86/include/asm/tsc.h
index 94408a784c8e7..1c0cda1702bec 100644
--- a/arch/x86/include/asm/tsc.h
+++ b/arch/x86/include/asm/tsc.h
@@ -24,6 +24,9 @@ static inline cycles_t get_cycles(void)
 	if (!IS_ENABLED(CONFIG_X86_TSC) &&
 	    !cpu_feature_enabled(X86_FEATURE_TSC))
 		return 0;
+	if (cpu_feature_enabled(X86_FEATURE_LFENCE_RDTSC) ||
+	    cpu_feature_enabled(X86_FEATURE_RDTSCP))
+		return rdtsc_ordered();
 	return rdtsc();
 }
 #define get_cycles get_cycles
-- 
2.43.0


  parent reply	other threads:[~2024-08-23  4:25 UTC|newest]

Thread overview: 14+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-08-23  4:25 [PATCH v4 0/5] Verify devices transition from D3cold to D0 Mario Limonciello
2024-08-23  4:25 ` [PATCH v4 1/5] PCI: Use an enum for reset type in pci_dev_wait() Mario Limonciello
2024-08-23 11:56   ` Ilpo Järvinen
2024-08-23  4:25 ` Mario Limonciello [this message]
2024-08-23  4:29   ` [PATCH] x86/tsc: Use rdtsc_ordered() when RDTSCP or LFENCE_RDTSC are supported Mario Limonciello
2024-08-25 12:22   ` Thomas Gleixner
2024-08-25 12:37     ` Mario Limonciello
2024-08-23  4:25 ` [PATCH v4 2/5] PCI: Check PCI_PM_CTRL instead of PCI_COMMAND in pci_dev_wait() Mario Limonciello
2024-08-23 12:13   ` Ilpo Järvinen
2024-08-23  4:25 ` [PATCH v4 3/5] PCI: Verify functions currently in D3cold have entered D0 Mario Limonciello
2024-08-23 12:07   ` Ilpo Järvinen
2024-08-23  4:25 ` [PATCH v4 4/5] PCI: Allow Ryzen XHCI controllers into D3cold and drop delays Mario Limonciello
2024-08-24  1:55   ` Greg Kroah-Hartman
2024-08-23  4:25 ` [PATCH v4 5/5] PCI: Drop Radeon quirk for Macbook Pro 8.2 Mario Limonciello

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=20240823042508.1057791-3-superm1@kernel.org \
    --to=superm1@kernel.org \
    --cc=Gary.Li@amd.com \
    --cc=bhelgaas@google.com \
    --cc=drake@endlessos.org \
    --cc=gregkh@linuxfoundation.org \
    --cc=ilpo.jarvinen@linux.intel.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-pci@vger.kernel.org \
    --cc=linux-usb@vger.kernel.org \
    --cc=mario.limonciello@amd.com \
    --cc=mathias.nyman@intel.com \
    --cc=mika.westerberg@linux.intel.com \
    /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