Re: Possible dcache BUG

From: Andi Kleen
Date: Fri Aug 06 2004 - 06:36:53 EST


On Fri, 6 Aug 2004 09:37:39 +0200
Ingo Molnar <mingo@xxxxxxx> wrote:


>
> ebx is 00000008, it came in from (%esi), which is (0xc20a7b30) - that
> looks like a valid pointer.
>
> to me this crash seems to imply prefetch.


Can you add the following patch and see if it triggers at all?

Maybe it is just the software prefetch fault handler that is somehow buggy.
There was a change there recently to handle NX, maybe that broke something.

Also testing with prefetch disabled (see my earlier patch) may also be useful
just to see if it triggers then too.

-Andi

diff -u linux-2.6.8rc2-update/arch/i386/mm/fault.c-o linux-2.6.8rc2-update/arch/i386/mm/fault.c
--- linux-2.6.8rc2-update/arch/i386/mm/fault.c-o 2004-07-28 02:23:24.000000000 +0200
+++ linux-2.6.8rc2-update/arch/i386/mm/fault.c 2004-08-05 22:20:02.000000000 +0200
@@ -21,6 +21,7 @@
#include <linux/vt_kern.h> /* For unblank_screen() */
#include <linux/highmem.h>
#include <linux/module.h>
+#include <linux/kallsyms.h>

#include <asm/system.h>
#include <asm/uaccess.h>
@@ -185,6 +186,12 @@
break;
}
}
+
+ if (prefetch) {
+ printk("corrected prefetch fault at %lx ", addr);
+ print_symbol("eip %s\n", regs->eip);
+ }
+
return prefetch;
}

@@ -193,6 +200,9 @@
{
if (unlikely(boot_cpu_data.x86_vendor == X86_VENDOR_AMD &&
boot_cpu_data.x86 >= 6)) {
+ printk("possible prefetch fault at %lx ", addr);
+ print_symbol("eip %s\n", regs->eip);
+
/* Catch an obscure case of prefetch inside an NX page. */
if (nx_enabled && (error_code & 16))
return 0;




-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/