aboutsummaryrefslogtreecommitdiffstats
path: root/arch/x86/mm/pat.c
diff options
context:
space:
mode:
authorAndreas Herrmann <andreas.herrmann3@amd.com>2008-06-10 10:05:18 -0400
committerIngo Molnar <mingo@elte.hu>2008-06-12 04:14:22 -0400
commit97cfab6ac4ddfda0d722393bbf46cc40bc332107 (patch)
tree699f95483b968bfad891bca59ad46f74949543bc /arch/x86/mm/pat.c
parentee863ba7ab3d3ed8a9585d378aae69d1e3e9f1b4 (diff)
x86: PAT: fix ambiguous paranoia check in pat_init()
Starting with commit 8d4a4300854f3971502e81dacd930704cb88f606 (x86: cleanup PAT cpu validation) the PAT CPU feature flag is not cleared anymore. Now the error message "PAT enabled, but CPU feature cleared" in pat_init() is misleading. Furthermore the current code does not check for existence of the PAT CPU feature flag if a CPU is whitelisted in validate_pat_support. This patch clears pat_wc_enabled if boot CPU has no PAT feature flag and adapts the paranoia check. Signed-off-by: Andreas Herrmann <andreas.herrmann3@amd.com> Signed-off-by: Ingo Molnar <mingo@elte.hu>
Diffstat (limited to 'arch/x86/mm/pat.c')
-rw-r--r--arch/x86/mm/pat.c11
1 files changed, 6 insertions, 5 deletions
diff --git a/arch/x86/mm/pat.c b/arch/x86/mm/pat.c
index 320d644a8107..65105b1195a3 100644
--- a/arch/x86/mm/pat.c
+++ b/arch/x86/mm/pat.c
@@ -76,14 +76,15 @@ void pat_init(void)
76 return; 76 return;
77 77
78 /* Paranoia check. */ 78 /* Paranoia check. */
79 if (!cpu_has_pat) { 79 if (!cpu_has_pat && boot_pat_state) {
80 printk(KERN_ERR "PAT enabled, but CPU feature cleared\n");
81 /* 80 /*
82 * Panic if this happens on the secondary CPU, and we 81 * If this happens we are on a secondary CPU, but
83 * switched to PAT on the boot CPU. We have no way to 82 * switched to PAT on the boot CPU. We have no way to
84 * undo PAT. 83 * undo PAT.
85 */ 84 */
86 BUG_ON(boot_pat_state); 85 printk(KERN_ERR "PAT enabled, "
86 "but not supported by secondary CPU\n");
87 BUG();
87 } 88 }
88 89
89 /* Set PWT to Write-Combining. All other bits stay the same */ 90 /* Set PWT to Write-Combining. All other bits stay the same */