diff mbox

[v2,6/6] x86/pat: Document PAT initializations

Message ID 1458175619-32206-5-git-send-email-toshi.kani@hpe.com (mailing list archive)
State New, archived
Headers show

Commit Message

Kani, Toshi March 17, 2016, 12:46 a.m. UTC
Update PAT documentation to describe how PAT is initialized under
various configurations.

Signed-off-by: Toshi Kani <toshi.kani@hpe.com>
Cc: Borislav Petkov <bp@suse.de>
Cc: Luis R. Rodriguez <mcgrof@suse.com>
Cc: Juergen Gross <jgross@suse.com>
Cc: Ingo Molnar <mingo@kernel.org>
Cc: H. Peter Anvin <hpa@zytor.com>
Cc: Thomas Gleixner <tglx@linutronix.de>
---
 Documentation/x86/pat.txt |   32 ++++++++++++++++++++++++++++++++
 1 file changed, 32 insertions(+)

Comments

Borislav Petkov March 22, 2016, 5:02 p.m. UTC | #1
On Wed, Mar 16, 2016 at 06:46:59PM -0600, Toshi Kani wrote:
> Update PAT documentation to describe how PAT is initialized under
> various configurations.
> 
> Signed-off-by: Toshi Kani <toshi.kani@hpe.com>
> Cc: Borislav Petkov <bp@suse.de>
> Cc: Luis R. Rodriguez <mcgrof@suse.com>
> Cc: Juergen Gross <jgross@suse.com>
> Cc: Ingo Molnar <mingo@kernel.org>
> Cc: H. Peter Anvin <hpa@zytor.com>
> Cc: Thomas Gleixner <tglx@linutronix.de>
> ---
>  Documentation/x86/pat.txt |   32 ++++++++++++++++++++++++++++++++
>  1 file changed, 32 insertions(+)
> 
> diff --git a/Documentation/x86/pat.txt b/Documentation/x86/pat.txt
> index 54944c7..f619e1d 100644
> --- a/Documentation/x86/pat.txt
> +++ b/Documentation/x86/pat.txt
> @@ -196,3 +196,35 @@ Another, more verbose way of getting PAT related debug messages is with
>  "debugpat" boot parameter. With this parameter, various debug messages are
>  printed to dmesg log.
>  
> +PAT Initialization
> +------------------
> +
> +The following table describes how PAT is initialized under various
> +configurations. PAT must be set to enable to initialize PAT MSR in order

Err "PAT MSR must be updated by Linux in order to support WC and WT" ... or so?

> +to support WC and WT attributes. Otherwise, PAT keeps PAT MSR value set
> +by BIOS.

"Otherwise, the PAT MSR has the value programmed in it by the firmware."

> Note, Xen enables WC attribute in BIOS setup for guests.
> +
> + MTRR PAT   Call Sequence               PAT State  PAT MSR
> + =========================================================
> + E    E     MTRR -> pat_init()          Enable     OS

s/Enable/Enabled/

MTRR->pat_init() - either use function names for both or do pseudo like
so:

MTRR init -> PAT init

> + E    D     MTRR -> pat_init()          Disable    -

s/Disable/Disabled/. Ditto for the rest.

> + D    E     MTRR -> pat_disable()       Disable    BIOS
> + D    D     MTRR -> pat_disable()       Disable    -
> + -    np/E  nopat() -> pat_disable()    Disable    BIOS
> + -    np/D  nopat() -> pat_disable()    Disable    -
> + E    !P/E  MTRR -> pat_init()          Disable    BIOS
> + D    !P/E  MTRR -> pat_disable()       Disable    BIOS
> + !M   !P/E  MTRR stub -> pat_disable()  Disable    BIOS
> +
> + Legend
> + ------------------------------------------------
> + E        Feature enabled in CPU
> + D	  Feature disabled/unsupported in CPU
> + np	  "nopat" boot option specified
> + !P	  CONFIG_X86_PAT option unset
> + !M	  CONFIG_MTRR option unset
> + Enable   PAT state set to enable
> + Disable  PAT state set to disable
> + OS       PAT initializes PAT MSR with OS setup
> + BIOS     PAT keeps PAT MSR with BIOS setup
> +
Kani, Toshi March 22, 2016, 10:15 p.m. UTC | #2
On Tue, 2016-03-22 at 18:02 +0100, Borislav Petkov wrote:
> On Wed, Mar 16, 2016 at 06:46:59PM -0600, Toshi Kani wrote:
> > Update PAT documentation to describe how PAT is initialized under
> > various configurations.
> > 
 :
> >  
> > +PAT Initialization
> > +------------------
> > +
> > +The following table describes how PAT is initialized under various
> > +configurations. PAT must be set to enable to initialize PAT MSR in
> > order
> 
> Err "PAT MSR must be updated by Linux in order to support WC and WT" ...
> or so?

Right. Will do.

> > +to support WC and WT attributes. Otherwise, PAT keeps PAT MSR value
> > set
> > +by BIOS.
> 
> "Otherwise, the PAT MSR has the value programmed in it by the firmware."

Will do.

> > Note, Xen enables WC attribute in BIOS setup for guests.
> > +
> > + MTRR PAT   Call Sequence               PAT State  PAT MSR
> > + =========================================================
> > + E    E     MTRR -> pat_init()          Enable     OS
> 
> s/Enable/Enabled/

Will do.

> MTRR->pat_init() - either use function names for both or do pseudo like
> so:
> 
> MTRR init -> PAT init

OK, I will change all to pseudo.  MTRR has multiple caller functions, and
we do not have enough space to write them all.

> > + E    D     MTRR -> pat_init()          Disable    -
> 
> s/Disable/Disabled/. Ditto for the rest.

Will do.

> > + D    E     MTRR -> pat_disable()       Disable    BIOS
> > + D    D     MTRR -> pat_disable()       Disable    -
> > + -    np/E  nopat() -> pat_disable()    Disable    BIOS
> > + -    np/D  nopat() -> pat_disable()    Disable    -
> > + E    !P/E  MTRR -> pat_init()          Disable    BIOS
> > + D    !P/E  MTRR -> pat_disable()       Disable    BIOS
> > + !M   !P/E  MTRR stub -> pat_disable()  Disable    BIOS
> > +
> > + Legend
> > + ------------------------------------------------
> > + E        Feature enabled in CPU
> > + D	  Feature disabled/unsupported in CPU
> > + np	  "nopat" boot option specified
> > + !P	  CONFIG_X86_PAT option unset
> > + !M	  CONFIG_MTRR option unset
> > + Enable   PAT state set to enable
> > + Disable  PAT state set to disable
> > + OS       PAT initializes PAT MSR with OS setup
> > + BIOS     PAT keeps PAT MSR with BIOS setup
> > +

Thanks,
-Toshi
diff mbox

Patch

diff --git a/Documentation/x86/pat.txt b/Documentation/x86/pat.txt
index 54944c7..f619e1d 100644
--- a/Documentation/x86/pat.txt
+++ b/Documentation/x86/pat.txt
@@ -196,3 +196,35 @@  Another, more verbose way of getting PAT related debug messages is with
 "debugpat" boot parameter. With this parameter, various debug messages are
 printed to dmesg log.
 
+PAT Initialization
+------------------
+
+The following table describes how PAT is initialized under various
+configurations. PAT must be set to enable to initialize PAT MSR in order
+to support WC and WT attributes. Otherwise, PAT keeps PAT MSR value set
+by BIOS. Note, Xen enables WC attribute in BIOS setup for guests.
+
+ MTRR PAT   Call Sequence               PAT State  PAT MSR
+ =========================================================
+ E    E     MTRR -> pat_init()          Enable     OS
+ E    D     MTRR -> pat_init()          Disable    -
+ D    E     MTRR -> pat_disable()       Disable    BIOS
+ D    D     MTRR -> pat_disable()       Disable    -
+ -    np/E  nopat() -> pat_disable()    Disable    BIOS
+ -    np/D  nopat() -> pat_disable()    Disable    -
+ E    !P/E  MTRR -> pat_init()          Disable    BIOS
+ D    !P/E  MTRR -> pat_disable()       Disable    BIOS
+ !M   !P/E  MTRR stub -> pat_disable()  Disable    BIOS
+
+ Legend
+ ------------------------------------------------
+ E        Feature enabled in CPU
+ D	  Feature disabled/unsupported in CPU
+ np	  "nopat" boot option specified
+ !P	  CONFIG_X86_PAT option unset
+ !M	  CONFIG_MTRR option unset
+ Enable   PAT state set to enable
+ Disable  PAT state set to disable
+ OS       PAT initializes PAT MSR with OS setup
+ BIOS     PAT keeps PAT MSR with BIOS setup
+