lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <20080520225617.GA19002@redhat.com>
Date:	Tue, 20 May 2008 18:56:17 -0400
From:	Dave Jones <davej@...hat.com>
To:	"H. Peter Anvin" <hpa@...or.com>
Cc:	Rene Herman <rene.herman@...access.nl>,
	Mikael Pettersson <mikpe@...uu.se>,
	Yinghai Lu <yhlu.kernel@...il.com>,
	Linux Kernel <linux-kernel@...r.kernel.org>,
	Ingo Molnar <mingo@...e.hu>,
	Thomas Gleixner <tglx@...utronix.de>
Subject: Re: [X86] Add a boot parameter to force-enable PAT

On Tue, May 20, 2008 at 03:42:49PM -0700, H. Peter Anvin wrote:

 > > Yes, that would be nicer. As to the alias; "nopat" hasn't been in a 
 > > released kernel yet so should be okay to do away with? It's not like 
 > > it's in Documentation/kernel-parameters.txt or anything... ;-/
 > > 
 > 
 > OK, just double-checked... since it's not in Linus we can still change 
 > it, and as so I'd suggest the pat= option.

Not boot-tested, but it compiles for me..
I also folded in the 'debugpat' option.

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

diff --git a/Documentation/kernel-parameters.txt b/Documentation/kernel-parameters.txt
index e37f456..9f9c2c2 100644
--- a/Documentation/kernel-parameters.txt
+++ b/Documentation/kernel-parameters.txt
@@ -1478,6 +1478,12 @@ and is between 256 and 4096 characters. It is defined in the file
 			the specified number of seconds.  This is to be used if
 			your oopses keep scrolling off the screen.
 
+	pat=		[X86] Page attribute table support.
+			off	don't use page attribute tables.
+			force	enable use of page attribute tables, even if the
+				CPU isn't in the kernel's whitelist.
+			debug	output additional debugging information during setup.
+
 	pcbit=		[HW,ISDN]
 
 	pcd.		[PARIDE]
diff --git a/arch/x86/kernel/cpu/addon_cpuid_features.c b/arch/x86/kernel/cpu/addon_cpuid_features.c
index c2e1ce3..8b65f14 100644
--- a/arch/x86/kernel/cpu/addon_cpuid_features.c
+++ b/arch/x86/kernel/cpu/addon_cpuid_features.c
@@ -51,8 +51,15 @@ void __cpuinit init_scattered_cpuid_features(struct cpuinfo_x86 *c)
 }
 
 #ifdef CONFIG_X86_PAT
+int forcepat;
+
 void __cpuinit validate_pat_support(struct cpuinfo_x86 *c)
 {
+	if (forcepat == 1) {
+		printk(KERN_INFO "Force enabling PAT\n");
+		return;
+	}
+
 	switch (c->x86_vendor) {
 	case X86_VENDOR_AMD:
 		if (c->x86 >= 0xf && c->x86 <= 0x11)
diff --git a/arch/x86/mm/pat.c b/arch/x86/mm/pat.c
index e83b770..7429bee 100644
--- a/arch/x86/mm/pat.c
+++ b/arch/x86/mm/pat.c
@@ -25,8 +25,11 @@
 #include <asm/mtrr.h>
 #include <asm/io.h>
 
+static int debug_enable;
+
 #ifdef CONFIG_X86_PAT
 int __read_mostly pat_wc_enabled = 1;
+extern int forcepat;
 
 void __cpuinit pat_disable(char *reason)
 {
@@ -34,23 +37,22 @@ void __cpuinit pat_disable(char *reason)
 	printk(KERN_INFO "%s\n", reason);
 }
 
-static int nopat(char *str)
+static int __init patsetup(char *str)
 {
-	pat_disable("PAT support disabled.");
+	if (strcmp("force", str) == 0) {
+		forcepat = 1;
+		printk(KERN_INFO "Force enabling PAT\n");
+	}
+	if (strcmp("off", str) == 0)
+		pat_disable("PAT support disabled.");
+	if (strcmp("debug", str) == 0)
+		debug_enable = 1;
 	return 0;
 }
-early_param("nopat", nopat);
+early_param("pat=", patsetup);
 #endif
 
 
-static int debug_enable;
-static int __init pat_debug_setup(char *str)
-{
-	debug_enable = 1;
-	return 0;
-}
-__setup("debugpat", pat_debug_setup);
-
 #define dprintk(fmt, arg...) \
 	do { if (debug_enable) printk(KERN_INFO fmt, ##arg); } while (0)
 

-- 
http://www.codemonkey.org.uk
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ