diff options
author | Ingo Molnar <mingo@elte.hu> | 2008-03-27 15:58:28 +0100 |
---|---|---|
committer | Ingo Molnar <mingo@elte.hu> | 2008-03-27 16:08:44 +0100 |
commit | bc713dcf35c427ae8377fb9a4d1b7f891054ce13 (patch) | |
tree | d129b92986076190576935d8ceb09062db58453e | |
parent | 08dcf29e01dcb786c13dc80045bd65f804117efb (diff) | |
download | op-kernel-dev-bc713dcf35c427ae8377fb9a4d1b7f891054ce13.zip op-kernel-dev-bc713dcf35c427ae8377fb9a4d1b7f891054ce13.tar.gz |
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 fdc6674..c0c82bc 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, 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 |