Re: [PATCH] X86: don't report PAT on CPUs that don't support it

From: Mikulas Patocka
Date: Tue May 16 2017 - 11:49:36 EST




On Tue, 16 May 2017, H. Peter Anvin wrote:

> On 04/18/17 12:07, Mikulas Patocka wrote:
> >
> > However, on AMD K6-3 CPU, the processor initialization code never calls
> > pat_init() and so __pat_enabled stays 1 and the function pat_enabled()
> > returns true, even though the K6-3 CPU doesn't support PAT.
> >
>
> OK, now I'm wondering: are you actually *using* said K6-3 machine, and

I use it for playing music, browsing with the links browser and connecting
to other machines with ssh. That machine is slow but it is completely
quiet.

It is also good to run my own software on a slow CPU to make sure that
there are no obvious inefficiencies.

> if so, are you actually dependent on write combining on it? The reason

Those K6-3 MTRRs improve framebuffer write throughput by 33%.

> I'm asking is because I would personally like to completely remove the
> support for using MTRRs to create WC mappings, as it only affects a
> handful of ancient CPUs: Pentium Pro, Pentium II, K6-*, and possibly
> some Cyrix/Centaur part. Earlier CPUs didn't have WC, but could set WB,
> WT or UC via the page tables without needing the PAT MSR, and newer CPUs
> have PAT.

MTRRs are also needed on Pentium 3, Core Solo and Core Duo due to an
erratum that makes it not possible to set WC with PAT. See the comment
before "clear_cpu_cap(c, X86_FEATURE_PAT)" in early_init_intel().

Mikulas

> -hpa
>