[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[PATCH] x86: Limit the non-architectural constant TSC model checks


  • To: xen-devel@xxxxxxxxxxxxxxxxxxxx
  • From: Kevin Lampis <kevin.lampis@xxxxxxxxxx>
  • Date: Wed, 3 Dec 2025 16:06:18 +0000
  • Arc-authentication-results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=citrix.com; dmarc=pass action=none header.from=citrix.com; dkim=pass header.d=citrix.com; arc=none
  • Arc-message-signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=REWVNpdysv7KaSa1XUg6pNxY7LrRMxapyE56yZ5LTjY=; b=fC4lp4SJ63LG63w2rSL5+n/zHA9YFrlqKCy6k8A6SAZhhPwnx236f7Qx5wZ0YoZVRdq4VF4GjzZEeyjdj+pyo+xrOXI0jZE4hQD+kD55x3eKjWyma9L200Hdn6EdzzteOFcO2rD7bzzZqYVk6szG3Ji3YEzo4t0Kf6YktdSdvbVbIOHfC+fDeSo5byNmOi4E29pM4PQ92MVDQ27O3U0useZWS6yMHAZQkDSOX87H3Z/jR+qyuMMVKO84VfV1N1nnWgZdKu2aXkshCGFk+EDSUGXgm3pbFBBaiYJIQDTnwfPoI4KmGYjxrLPQDIfA16F4nYncRhuh/eAiHrNIlCi3bQ==
  • Arc-seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=Vo7bGGq71+Lpw5gyBCe78cOUb0WVmC5ffMN9MZwp0YYYl7TE1I9grROW/oI8OIOy49zAlp8vSUdfwrqwZjk0/PD4fvlzh5ivmYjqOZtzfrpH2mcYejlyLtVmvA8DiygGpvKMJ5PMsy8holqGGmEKObPH9zZcmOOe6occ+bURsHmT5uVzCtjdmANLIcSPIrdpV1Mx3agrHYBHaWozXtk1Gfp7Ix3xnb3aMRuVXqFl8HVjNoIzEBI4V+uLdoqsElWcbYe3aP+6X0M0N3lKhYSBkAVKwx6nplO4iRJH3SYBPafjrFXJjrnZ4o6R8iL2unVZonWD6qvuV275q5FLoGYKUA==
  • Authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=citrix.com;
  • Cc: jbeulich@xxxxxxxx, andrew.cooper3@xxxxxxxxxx, roger.pau@xxxxxxxxxx, Kevin Lampis <kevin.lampis@xxxxxxxxxx>
  • Delivery-date: Wed, 03 Dec 2025 16:07:16 +0000
  • List-id: Xen developer discussion <xen-devel.lists.xenproject.org>

There are some older Intel CPUs which have CONSTANT_TSC behavior but
don't advertise it through CPUID. This change replaces the previous
open-ended check with a definitive range to make it clear that this only
applies to a specific set of CPUs and that later CPUs like Family 18+
won't need to be included.

Signed-off-by: Kevin Lampis <kevin.lampis@xxxxxxxxxx>
---
 xen/arch/x86/cpu/intel.c | 10 +++++-----
 1 file changed, 5 insertions(+), 5 deletions(-)

diff --git a/xen/arch/x86/cpu/intel.c b/xen/arch/x86/cpu/intel.c
index 2bb9956a79..1c37179bc5 100644
--- a/xen/arch/x86/cpu/intel.c
+++ b/xen/arch/x86/cpu/intel.c
@@ -673,15 +673,15 @@ static void cf_check init_intel(struct cpuinfo_x86 *c)
        /* Work around errata */
        Intel_errata_workarounds(c);
 
-       if ( ( c->family == 15 && c->model >= 0x03 ) ||
-            ( c->family == 6 && c->model >= 0x0e ) )
-               __set_bit(X86_FEATURE_CONSTANT_TSC, c->x86_capability);
-
+       /* Use a model specific check for some older CPUs that have
+        * constant TSC but may not report it via CPUID. */
        if (cpu_has(c, X86_FEATURE_ITSC)) {
                __set_bit(X86_FEATURE_CONSTANT_TSC, c->x86_capability);
                __set_bit(X86_FEATURE_NONSTOP_TSC, c->x86_capability);
                __set_bit(X86_FEATURE_TSC_RELIABLE, c->x86_capability);
-       }
+       } else if ( ( c->vfm >= INTEL_P4_PRESCOTT && c->vfm <= 
INTEL_P4_CEDARMILL ) ||
+                   ( c->vfm >= INTEL_CORE_YONAH && c->vfm <= INTEL_IVYBRIDGE ) 
)
+               __set_bit(X86_FEATURE_CONSTANT_TSC, c->x86_capability);
 
        if ( opt_arat &&
             ( c->cpuid_level >= 0x00000006 ) &&
-- 
2.51.1




 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.