From patchwork Mon Nov 23 03:03:39 2009 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: David Miller X-Patchwork-Id: 39029 X-Patchwork-Delegate: davem@davemloft.net Return-Path: X-Original-To: patchwork-incoming@ozlabs.org Delivered-To: patchwork-incoming@ozlabs.org Received: from vger.kernel.org (vger.kernel.org [209.132.176.167]) by ozlabs.org (Postfix) with ESMTP id 24C6B1007D3 for ; Mon, 23 Nov 2009 14:03:34 +1100 (EST) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1754065AbZKWDDW (ORCPT ); Sun, 22 Nov 2009 22:03:22 -0500 Received: (majordomo@vger.kernel.org) by vger.kernel.org id S1754223AbZKWDDW (ORCPT ); Sun, 22 Nov 2009 22:03:22 -0500 Received: from 74-93-104-97-Washington.hfc.comcastbusiness.net ([74.93.104.97]:51863 "EHLO sunset.davemloft.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1753002AbZKWDDV (ORCPT ); Sun, 22 Nov 2009 22:03:21 -0500 Received: from localhost (localhost [127.0.0.1]) by sunset.davemloft.net (Postfix) with ESMTP id 9C65D3647F1; Sun, 22 Nov 2009 19:03:39 -0800 (PST) Date: Sun, 22 Nov 2009 19:03:39 -0800 (PST) Message-Id: <20091122.190339.232644560.davem@davemloft.net> To: joy@entuzijast.net Cc: blue@aquarat.za.net, debian-sparc@lists.debian.org, sparclinux@vger.kernel.org Subject: Re: Sun fire V890 UltraSparc server kernel panic, offertoassist with fixing it and future ports From: David Miller In-Reply-To: <20091122220621.GA16620@orion.carnet.hr> References: <20091122200301.GA29244@orion.carnet.hr> <1258923808.24325.48.camel@thinkrat> <20091122220621.GA16620@orion.carnet.hr> X-Mailer: Mew version 6.2.51 on Emacs 22.1 / Mule 5.0 (SAKAKI) Mime-Version: 1.0 Sender: sparclinux-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: sparclinux@vger.kernel.org From: Josip Rodin 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: ... >> [ 82.800022] I7: ... >> [ 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. --- To unsubscribe from this list: send the line "unsubscribe sparclinux" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html 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