diff options
author | Ingo Molnar <mingo@elte.hu> | 2008-03-27 10:58:28 -0400 |
---|---|---|
committer | Ingo Molnar <mingo@elte.hu> | 2008-03-27 11:08:44 -0400 |
commit | bc713dcf35c427ae8377fb9a4d1b7f891054ce13 (patch) | |
tree | d129b92986076190576935d8ceb09062db58453e | |
parent | 08dcf29e01dcb786c13dc80045bd65f804117efb (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>
-rw-r--r-- | arch/x86/mm/fault.c | 3 |
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 | ||