x86: Support PAT bit in pagetable dump for lower levels
Dumping page table protection bits is not correct for entries on levels 2 and 3 regarding the PAT bit, which is at a different position as on level 4. Based-on-patch-by: Stefan Bader <stefan.bader@canonical.com> Signed-off-by: Juergen Gross <jgross@suse.com> Reviewed-by: Thomas Gleixner <tglx@linutronix.de> Cc: stefan.bader@canonical.com Cc: xen-devel@lists.xensource.com Cc: konrad.wilk@oracle.com Cc: ville.syrjala@linux.intel.com Cc: david.vrabel@citrix.com Cc: jbeulich@suse.com Cc: toshi.kani@hp.com Cc: plagnioj@jcrosoft.com Cc: tomi.valkeinen@ti.com Cc: bhelgaas@google.com Link: http://lkml.kernel.org/r/1415019724-4317-16-git-send-email-jgross@suse.com Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
This commit is contained in:
parent
87ad0b713b
commit
f439c429c3
1 changed files with 11 additions and 13 deletions
|
@ -126,7 +126,7 @@ static void printk_prot(struct seq_file *m, pgprot_t prot, int level, bool dmsg)
|
|||
|
||||
if (!pgprot_val(prot)) {
|
||||
/* Not present */
|
||||
pt_dump_cont_printf(m, dmsg, " ");
|
||||
pt_dump_cont_printf(m, dmsg, " ");
|
||||
} else {
|
||||
if (pr & _PAGE_USER)
|
||||
pt_dump_cont_printf(m, dmsg, "USR ");
|
||||
|
@ -145,18 +145,16 @@ static void printk_prot(struct seq_file *m, pgprot_t prot, int level, bool dmsg)
|
|||
else
|
||||
pt_dump_cont_printf(m, dmsg, " ");
|
||||
|
||||
/* Bit 9 has a different meaning on level 3 vs 4 */
|
||||
if (level <= 3) {
|
||||
if (pr & _PAGE_PSE)
|
||||
pt_dump_cont_printf(m, dmsg, "PSE ");
|
||||
else
|
||||
pt_dump_cont_printf(m, dmsg, " ");
|
||||
} else {
|
||||
if (pr & _PAGE_PAT)
|
||||
pt_dump_cont_printf(m, dmsg, "pat ");
|
||||
else
|
||||
pt_dump_cont_printf(m, dmsg, " ");
|
||||
}
|
||||
/* Bit 7 has a different meaning on level 3 vs 4 */
|
||||
if (level <= 3 && pr & _PAGE_PSE)
|
||||
pt_dump_cont_printf(m, dmsg, "PSE ");
|
||||
else
|
||||
pt_dump_cont_printf(m, dmsg, " ");
|
||||
if ((level == 4 && pr & _PAGE_PAT) ||
|
||||
((level == 3 || level == 2) && pr & _PAGE_PAT_LARGE))
|
||||
pt_dump_cont_printf(m, dmsg, "pat ");
|
||||
else
|
||||
pt_dump_cont_printf(m, dmsg, " ");
|
||||
if (pr & _PAGE_GLOBAL)
|
||||
pt_dump_cont_printf(m, dmsg, "GLB ");
|
||||
else
|
||||
|
|
Loading…
Add table
Reference in a new issue