x86: fix prefetch workaround
some early Athlon XP's and Opterons generate bogus faults on prefetch
instructions. The workaround for this regressed over .24 - reinstate it.
Signed-off-by: Ingo Molnar <mingo@elte.hu>
diff --git a/arch/x86/mm/fault.c b/arch/x86/mm/fault.c
index fdc6674..c0c82bc 100644
--- a/arch/x86/mm/fault.c
+++ b/arch/x86/mm/fault.c
@@ -92,7 +92,8 @@
unsigned char *max_instr;
#ifdef CONFIG_X86_32
- if (!(__supported_pte_mask & _PAGE_NX))
+ /* Catch an obscure case of prefetch inside an NX page: */
+ if ((__supported_pte_mask & _PAGE_NX) && (error_code & 16))
return 0;
#endif