aboutsummaryrefslogtreecommitdiffstats
path: root/arch/x86
diff options
context:
space:
mode:
authorIngo Molnar <mingo@elte.hu>2008-03-27 10:58:28 -0400
committerIngo Molnar <mingo@elte.hu>2008-03-27 11:08:44 -0400
commitbc713dcf35c427ae8377fb9a4d1b7f891054ce13 (patch)
treed129b92986076190576935d8ceb09062db58453e /arch/x86
parent08dcf29e01dcb786c13dc80045bd65f804117efb (diff)
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>
Diffstat (limited to 'arch/x86')
-rw-r--r--arch/x86/mm/fault.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/arch/x86/mm/fault.c b/arch/x86/mm/fault.c
index fdc667422df9..c0c82bc143c9 100644
--- a/arch/x86/mm/fault.c
+++ b/arch/x86/mm/fault.c
@@ -92,7 +92,8 @@ static int is_prefetch(struct pt_regs *regs, unsigned long addr,
92 unsigned char *max_instr; 92 unsigned char *max_instr;
93 93
94#ifdef CONFIG_X86_32 94#ifdef CONFIG_X86_32
95 if (!(__supported_pte_mask & _PAGE_NX)) 95 /* Catch an obscure case of prefetch inside an NX page: */
96 if ((__supported_pte_mask & _PAGE_NX) && (error_code & 16))
96 return 0; 97 return 0;
97#endif 98#endif
98 99