All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Joerg Roedel" <joerg.roedel@amd.com>
To: "Andi Kleen" <ak@suse.de>
Cc: linux-kernel@vger.kernel.org,
	"Joachim Deguara" <joachim.deguara@amd.com>,
	"Nagendra, Bhavana" <bhavana.nagendra@amd.com>
Subject: Re: [PATCH] x86_64: remove check for CONSTANT_TSC from time.c
Date: Mon, 4 Jun 2007 22:41:57 +0200	[thread overview]
Message-ID: <20070604204157.GB22013@amd.com> (raw)
In-Reply-To: <200706042002.41091.ak@suse.de>

[-- Attachment #1: Type: text/plain, Size: 1176 bytes --]

On Mon, Jun 04, 2007 at 08:02:40PM +0200, Andi Kleen wrote:
> On Monday 04 June 2007 19:49, Joerg Roedel wrote:
> > From: Joerg Roedel <joerg.roedel@amd.com>
> >
> > This patch removes the check for the CONSTANT_TSC cpu flag from time.c
> > on the x86_64 architecture. At the time this flag is checked at boot the
> > cpu init code was yet not executed and thus the check fails. At this
> > point the check for VENDOR_AMD and cpu family 0x10 is sufficient.
> 
> Wrong fix. The bit just needs to be set earlier in early cpu detect. Otherwise 
> there is a problem again with the next constant TSC AMD CPU.
> I will do that.
> 
> -Andi

Ok. But I assume you are meaning something like the attached diff?

Signed-off-by: Joerg Roedel <joerg.roedel@amd.com>

-- 
           |           AMD Saxony Limited Liability Company & Co. KG
 Operating |         Wilschdorfer Landstr. 101, 01109 Dresden, Germany
 System    |                  Register Court Dresden: HRA 4896
 Research  |              General Partner authorized to represent:
 Center    |             AMD Saxony LLC (Wilmington, Delaware, US)
           | General Manager of AMD Saxony LLC: Dr. Hans-R. Deppe, Thomas McCoy

[-- Attachment #2: gh-tsc-fix-fix.patch --]
[-- Type: text/plain, Size: 921 bytes --]

diff --git a/arch/x86_64/kernel/setup.c b/arch/x86_64/kernel/setup.c
index eb6524f..d16f7c2 100644
--- a/arch/x86_64/kernel/setup.c
+++ b/arch/x86_64/kernel/setup.c
@@ -806,6 +806,7 @@ void __cpuinit early_identify_cpu(struct cpuinfo_x86 *c)
 			c->x86_model += ((tfms >> 16) & 0xF) << 4;
 		if (c->x86_capability[0] & (1<<19)) 
 			c->x86_clflush_size = ((misc >> 8) & 0xff) * 8;
+		c->extended_cpuid_level = cpuid_eax(0x80000000);
 	} else {
 		/* Have CPUID level 0 only - unheard of */
 		c->x86 = 4;
@@ -814,6 +815,12 @@ void __cpuinit early_identify_cpu(struct cpuinfo_x86 *c)
 #ifdef CONFIG_SMP
 	c->phys_proc_id = (cpuid_ebx(1) >> 24) & 0xff;
 #endif
+
+	/* power flags are 8000_0007 edx. Bit 8 is constant TSC */
+	if ((c->x86_vendor == X86_VENDOR_AMD) &&
+	    (c->extended_cpuid_level >= 0x80000007) &&
+	    (cpuid_edx(0x80000007) & (1<<8)))
+		set_bit(X86_FEATURE_CONSTANT_TSC, &c->x86_capability);
 }
 
 /*

  reply	other threads:[~2007-06-04 20:42 UTC|newest]

Thread overview: 4+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2007-06-04 17:49 [PATCH] x86_64: remove check for CONSTANT_TSC from time.c Joerg Roedel
2007-06-04 18:02 ` Andi Kleen
2007-06-04 20:41   ` Joerg Roedel [this message]
2007-06-04 22:23     ` Nagendra, Bhavana

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=20070604204157.GB22013@amd.com \
    --to=joerg.roedel@amd.com \
    --cc=ak@suse.de \
    --cc=bhavana.nagendra@amd.com \
    --cc=joachim.deguara@amd.com \
    --cc=linux-kernel@vger.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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.