Re: [X86] Add recent Centaur CPUs to PAT whitelist

Previous thread: [X86] Remove unnecessary code in 64bit CPU identification. by Dave Jones on Monday, May 19, 2008 - 9:09 pm. (10 messages)

Next thread: [X86] Add a boot parameter to force-enable PAT by Dave Jones on Monday, May 19, 2008 - 9:09 pm. (11 messages)
From: Dave Jones
Date: Monday, May 19, 2008 - 9:09 pm

From conversation with Centaur engineers, both the newer generations
of the VIA C7, and their future CPUs support PAT, with no known errata.

Signed-off-by: Dave Jones <davej@redhat.com>

diff --git a/arch/x86/kernel/cpu/addon_cpuid_features.c b/arch/x86/kernel/cpu/addon_cpuid_features.c
index c2e1ce3..638a3a6 100644
--- a/arch/x86/kernel/cpu/addon_cpuid_features.c
+++ b/arch/x86/kernel/cpu/addon_cpuid_features.c
@@ -62,6 +81,10 @@ void __cpuinit validate_pat_support(struct cpuinfo_x86 *c)
 		if (c->x86 == 0xF || (c->x86 == 6 && c->x86_model >= 15))
 			return;
 		break;
+	case X86_VENDOR_CENTAUR:
+		if ((c->x86 > 6) || (c->x86 == 6 && c->x86_model >= 10))
+			set_cpu_cap(c, X86_FEATURE_PAT);
+		break;
 	}
 
 	pat_disable(cpu_has_pat ?
--

From: Yinghai Lu
Date: Monday, May 19, 2008 - 10:49 pm

From: Dave Jones
Date: Tuesday, May 20, 2008 - 6:19 am

On Mon, May 19, 2008 at 10:49:28PM -0700, Yinghai Lu wrote:

 > > +       case X86_VENDOR_CENTAUR:
 > > +               if ((c->x86 > 6) || (c->x86 == 6 && c->x86_model >= 10))
 > > +                       set_cpu_cap(c, X86_FEATURE_PAT);
 > > +               break;
 > >        }
 > >
 > >        pat_disable(cpu_has_pat ?
 > 
 > you may need to return early...

Argh, old version of the patch.  This one should be right.

	Dave

---


From conversation with Centaur engineers, both the newer generations
of the VIA C7, and their future CPUs support PAT, with no known errata.

Signed-off-by: Dave Jones <davej@redhat.com>

diff --git a/arch/x86/kernel/cpu/addon_cpuid_features.c b/arch/x86/kernel/cpu/addon_cpuid_features.c
index c2e1ce3..b9f14f9 100644
--- a/arch/x86/kernel/cpu/addon_cpuid_features.c
+++ b/arch/x86/kernel/cpu/addon_cpuid_features.c
@@ -62,6 +62,10 @@ void __cpuinit validate_pat_support(struct cpuinfo_x86 *c)
 		if (c->x86 == 0xF || (c->x86 == 6 && c->x86_model >= 15))
 			return;
 		break;
+	case X86_VENDOR_CENTAUR:
+		if ((c->x86 > 6) || (c->x86 == 6 && c->x86_model >= 10))
+			return;
+		break;
 	}
 
 	pat_disable(cpu_has_pat ?


-- 
http://www.codemonkey.org.uk
--

From: H. Peter Anvin
Date: Wednesday, May 21, 2008 - 4:56 pm

Question: are there any VIA CPUs that display the PAT CPUID flag that 
aren't covered by the above?

	-hpa
--

From: Dave Jones
Date: Thursday, May 22, 2008 - 7:07 am

On Wed, May 21, 2008 at 04:56:28PM -0700, H. Peter Anvin wrote:
 > Dave Jones wrote:
 > > 
 > > From conversation with Centaur engineers, both the newer generations
 > > of the VIA C7, and their future CPUs support PAT, with no known errata.
 > > 
 > > Signed-off-by: Dave Jones <davej@redhat.com>
 > > 
 > 
 > Question: are there any VIA CPUs that display the PAT CPUID flag that 
 > aren't covered by the above?

No.  They only added PAT support with the current Esther (C7) generation iirc.

	Dave

-- 
http://www.codemonkey.org.uk
--

From: H. Peter Anvin
Date: Thursday, May 22, 2008 - 9:48 am

OK, so we should just enable VIA unconditionally as long as PAT is 
displayed and not worry about generation numbers; same with Transmeta 
(only the Transmeta Efficeon supported PAT, and it had a 
strictly-coherent memory system.)

	-hpa
--

From: Dave Jones
Date: Thursday, May 22, 2008 - 10:02 am

On Thu, May 22, 2008 at 09:48:44AM -0700, H. Peter Anvin wrote:
 > Dave Jones wrote:
 > > On Wed, May 21, 2008 at 04:56:28PM -0700, H. Peter Anvin wrote:
 > >  > Dave Jones wrote:
 > >  > > 
 > >  > > From conversation with Centaur engineers, both the newer generations
 > >  > > of the VIA C7, and their future CPUs support PAT, with no known errata.
 > >  > > 
 > >  > > Signed-off-by: Dave Jones <davej@redhat.com>
 > >  > > 
 > >  > 
 > >  > Question: are there any VIA CPUs that display the PAT CPUID flag that 
 > >  > aren't covered by the above?
 > > 
 > > No.  They only added PAT support with the current Esther (C7) generation iirc.
 > > 
 > 
 > OK, so we should just enable VIA unconditionally as long as PAT is 
 > displayed and not worry about generation numbers; same with Transmeta 
 > (only the Transmeta Efficeon supported PAT, and it had a 
 > strictly-coherent memory system.)

Like so?

Unconditionally enable PAT support on Centaur and Transmeta CPUs.
All known models that advertise PAT have no known errata.

Signed-off-by: Dave Jones <davej@redhat.com>

--- linux-2.6/arch/x86/kernel/cpu/addon_cpuid_features.c~	2008-05-22 12:59:07.000000000 -0400
+++ linux-2.6/arch/x86/kernel/cpu/addon_cpuid_features.c	2008-05-22 12:59:36.000000000 -0400
@@ -62,6 +62,9 @@ void __cpuinit validate_pat_support(stru
 		if (c->x86 == 0xF || (c->x86 == 6 && c->x86_model >= 15))
 			return;
 		break;
+	case X86_VENDOR_CENTAUR:
+	case X86_VENDOR_TRANSMETA:
+		return;
 	}
 
 	pat_disable(cpu_has_pat ?

-- 
http://www.codemonkey.org.uk
--

From: H. Peter Anvin
Date: Thursday, May 22, 2008 - 1:23 pm

Acked-by: H. Peter Anvin <hpa@zytor.com>

Eventually the whitelist should decay into a blacklist.

	-hpa
--

Previous thread: [X86] Remove unnecessary code in 64bit CPU identification. by Dave Jones on Monday, May 19, 2008 - 9:09 pm. (10 messages)

Next thread: [X86] Add a boot parameter to force-enable PAT by Dave Jones on Monday, May 19, 2008 - 9:09 pm. (11 messages)