Re: Sun fire V890 UltraSparc server kernel panic, offertoassist with fixing it and future ports
I don't know who's going to do this, but if it's me does anyone have a
guide lying around ? :P
...or some useful links.
Aaron
On Sun, 2009-11-22 at 19:03 -0800, David Miller wrote:
> From: Josip Rodin <joy@entuzijast.net>
> Date: Sun, 22 Nov 2009 23:06:21 +0100
>
> >> [ 82.663939] Kernel unaligned access at TPC[46d24c]
> >> notifier_chain_register+0x10/0x38
> >> [ 82.671606] Unable to handle kernel paging request in mna handler<1>
> >> at virtual address e00000a00b000046
>
> That address is not only unaligned, it's completely out of range
> for valid kernel virtual addresses.
>
> notifier_chain_register() and their ilk are pretty simply and
> take constant kernel symbol addresses rather than, for example,
> dynamically allocated memory or something else more easily
> corrupted. So this is even more mysterious.
>
> Backtrace is:
>
> >> [ 82.759812] RPC: <atomic_notifier_chain_register+0x1c/0x44>
> ...
> >> [ 82.800022] I7: <kernel_init+0x38/0x204>
> ...
> >> [ 82.803917] Caller[0000000000782128]: kernel_init+0x38/0x204
> >> [ 82.809549] Caller[0000000000426df8]: kernel_thread+0x38/0x48
> >> [ 82.815268] Caller[000000000067bae0]: rest_init+0x18/0x60
>
> And I can't see anything that registers notifiers from kernel_init().
>
> I suspect the real caller of atomic_notifier_chain_register() is
> being optimized out by tail-call optimizations so we can't see
> exactly what it is.
>
> Can you build a test kernel with something like the following
> patch applied and reproduce? Thanks.
>
> diff --git a/Makefile b/Makefile
> index aa3e13a..d953cd3 100644
> --- a/Makefile
> +++ b/Makefile
> @@ -537,6 +537,8 @@ ifndef CONFIG_CC_STACKPROTECTOR
> KBUILD_CFLAGS += $(call cc-option, -fno-stack-protector)
> endif
>
> +KBUILD_CFLAGS += -fno-optimize-sibling-calls
> +
> ifdef CONFIG_FRAME_POINTER
> KBUILD_CFLAGS += -fno-omit-frame-pointer -fno-optimize-sibling-calls
> else
>
>
Reply to: