From mratin@cisco.com Tue Aug  1 00:42:00 2006
Received: with ECARTIS (v1.0.0; list linux-mips); Tue, 01 Aug 2006 00:42:14 +0100 (BST)
Received: from sj-iport-6.cisco.com ([171.71.176.117]:31628 "EHLO
	sj-iport-6.cisco.com") by ftp.linux-mips.org with ESMTP
	id S8126965AbWGaXmA convert rfc822-to-8bit (ORCPT
	<rfc822;linux-mips@linux-mips.org>); Tue, 1 Aug 2006 00:42:00 +0100
Received: from sj-dkim-3.cisco.com ([171.71.179.195])
  by sj-iport-6.cisco.com with ESMTP; 31 Jul 2006 16:41:52 -0700
Received: from sj-core-2.cisco.com (sj-core-2.cisco.com [171.71.177.254])
	by sj-dkim-3.cisco.com (8.12.11.20060308/8.12.11) with ESMTP id k6VNfp2A015217
	for <linux-mips@linux-mips.org>; Mon, 31 Jul 2006 16:41:51 -0700
Received: from xbh-sjc-221.amer.cisco.com (xbh-sjc-221.cisco.com [128.107.191.63])
	by sj-core-2.cisco.com (8.12.10/8.12.6) with ESMTP id k6VNfp2D001857
	for <linux-mips@linux-mips.org>; Mon, 31 Jul 2006 16:41:51 -0700 (PDT)
Received: from xmb-sjc-237.amer.cisco.com ([128.107.191.123]) by xbh-sjc-221.amer.cisco.com with Microsoft SMTPSVC(6.0.3790.1830);
	 Mon, 31 Jul 2006 16:41:50 -0700
X-MimeOLE: Produced By Microsoft Exchange V6.5
Content-class: urn:content-classes:message
MIME-Version: 1.0
Content-Type: text/plain;
	charset="us-ascii"
Content-Transfer-Encoding: 8BIT
Subject: gdb
Date:	Mon, 31 Jul 2006 16:41:50 -0700
Message-ID: <27801B4D04E7CA45825B0E0CE60FE10A023EE440@xmb-sjc-237.amer.cisco.com>
X-MS-Has-Attach: 
X-MS-TNEF-Correlator: 
Thread-Topic: gdb
thread-index: Aca0LvH2tOHteam8RhSZFHORKmWgVwAy4dmg
From:	"Ratin Rahman \(mratin\)" <mratin@cisco.com>
To:	<linux-mips@linux-mips.org>
X-OriginalArrivalTime: 31 Jul 2006 23:41:50.0929 (UTC) FILETIME=[E5593410:01C6B4FA]
DKIM-Signature:	a=rsa-sha1; q=dns; l=151; t=1154389311; x=1155253311;
	c=relaxed/simple; s=sjdkim3002; h=Content-Type:From:Subject:Content-Transfer-Encoding:MIME-Version;
	d=cisco.com; i=mratin@cisco.com; z=From:=22Ratin=20Rahman=20\(mratin\)=22=20<mratin@cisco.com>
	|Subject:gdb;
	X=v=3Dcisco.com=3B=20h=3DT4qBgmrSGp6447ZE6xNr+sPSHMU=3D; b=G0OvayJ0MKQ3/B8YQvo27eDAsqQC8MPBoySugAlCwDrtSwG8h8PGvxgYWK+x1SN7Hr0Jt3oZ
	gLd6Uil5thvoH1L4lFsc9k5MrWw/GapT6KRD1J2AFtEhhlgseL6YwT8X;
Authentication-Results:	sj-dkim-3.cisco.com; header.From=mratin@cisco.com; dkim=pass (
	sig from cisco.com verified; ); 
Return-Path: <mratin@cisco.com>
X-Envelope-To: <"|/home/ecartis/ecartis -s linux-mips"> (uid 0)
X-Orcpt: rfc822;linux-mips@linux-mips.org
Original-Recipient: rfc822;linux-mips@linux-mips.org
X-archive-position: 12138
X-ecartis-version: Ecartis v1.0.0
Sender: linux-mips-bounce@linux-mips.org
Errors-to: linux-mips-bounce@linux-mips.org
X-original-sender: mratin@cisco.com
Precedence: bulk
X-list: linux-mips

Anybody use gdb with mipsel? Is there something I need to know how to
compile gdb for mipsel
before I get my hands dirty with it :)

Ratin Rahman

From vagabon.xyz@gmail.com Tue Aug  1 09:38:46 2006
Received: with ECARTIS (v1.0.0; list linux-mips); Tue, 01 Aug 2006 09:38:55 +0100 (BST)
Received: from ug-out-1314.google.com ([66.249.92.170]:46450 "EHLO
	ug-out-1314.google.com") by ftp.linux-mips.org with ESMTP
	id S8133458AbWHAIiq (ORCPT <rfc822;linux-mips@linux-mips.org>);
	Tue, 1 Aug 2006 09:38:46 +0100
Received: by ug-out-1314.google.com with SMTP id m2so1361902ugc
        for <linux-mips@linux-mips.org>; Tue, 01 Aug 2006 01:38:46 -0700 (PDT)
DomainKey-Signature: a=rsa-sha1; q=dns; c=nofws;
        s=beta; d=gmail.com;
        h=received:message-id:date:reply-to:user-agent:mime-version:to:cc:subject:references:in-reply-to:content-type:content-transfer-encoding:from;
        b=SPD8GsOvpgwP9Yqh9BUahGkELItC+lGVGI2Plu9qQqJ82qIejXcjbOLhKacQlnEhc7hVRq4clSBGOJZYwFv62xiVMlBG/w7b48/qRHQaa5gPlixZ5gDScX/zIyWBCaV307NsuAePgElm95oskVbkxFEQvT3BKw5+tcZAUWasWRo=
Received: by 10.65.97.18 with SMTP id z18mr654644qbl;
        Tue, 01 Aug 2006 01:38:45 -0700 (PDT)
Received: from ?192.168.0.24? ( [194.3.162.233])
        by mx.gmail.com with ESMTP id f13sm1280312qba.2006.08.01.01.38.10;
        Tue, 01 Aug 2006 01:38:12 -0700 (PDT)
Message-ID: <44CF12BD.6010902@innova-card.com>
Date:	Tue, 01 Aug 2006 10:37:17 +0200
Reply-To: Franck <vagabon.xyz@gmail.com>
User-Agent: Thunderbird 1.5.0.4 (X11/20060614)
MIME-Version: 1.0
To:	Atsushi Nemoto <anemo@mba.ocn.ne.jp>
CC:	vagabon.xyz@gmail.com, linux-mips@linux-mips.org,
	ralf@linux-mips.org
Subject: Re: [PATCH] dump_stack() based on prologue code analysis (take 2)
References: <20060729.232720.108740310.anemo@mba.ocn.ne.jp>	<44CDC657.9090403@innova-card.com> <20060731.235626.86888625.anemo@mba.ocn.ne.jp>
In-Reply-To: <20060731.235626.86888625.anemo@mba.ocn.ne.jp>
Content-Type: text/plain; charset=us-ascii
Content-Transfer-Encoding: 7bit
From:	Franck Bui-Huu <vagabon.xyz@gmail.com>
Return-Path: <vagabon.xyz@gmail.com>
X-Envelope-To: <"|/home/ecartis/ecartis -s linux-mips"> (uid 0)
X-Orcpt: rfc822;linux-mips@linux-mips.org
Original-Recipient: rfc822;linux-mips@linux-mips.org
X-archive-position: 12139
X-ecartis-version: Ecartis v1.0.0
Sender: linux-mips-bounce@linux-mips.org
Errors-to: linux-mips-bounce@linux-mips.org
X-original-sender: vagabon.xyz@gmail.com
Precedence: bulk
X-list: linux-mips

Atsushi Nemoto wrote:
> On Mon, 31 Jul 2006 10:59:03 +0200, Franck Bui-Huu <vagabon.xyz@gmail.com> wrote:
>>
>> I pass regs to unwind_stack(), that simplify the caller because
>> it needn't to deal with leaf or nested case. Simply test for pc
>> is 0.
> 
> It seems a bit fragile.  The regs->regs[31] can be used for top of
> stack, but we should consider that get_frame_info() might return wrong
> result (again, get_frame_info() is not perfect).  If get_frame_info()
> returned 0 on middle level of the stack, taking regs->regs[31] leads
> wrong trace.  Maybe you can use NULL value as regs for non-toplevel.
> 

Yes get_frame_info() is not perfect in sense where it can't analyses
_all_ possible frames. But it should be able to detect these case at 
least.

		Franck

From vagabon.xyz@gmail.com Tue Aug  1 10:28:12 2006
Received: with ECARTIS (v1.0.0; list linux-mips); Tue, 01 Aug 2006 10:28:24 +0100 (BST)
Received: from nf-out-0910.google.com ([64.233.182.190]:5656 "EHLO
	nf-out-0910.google.com") by ftp.linux-mips.org with ESMTP
	id S8133520AbWHAJ2M (ORCPT <rfc822;linux-mips@linux-mips.org>);
	Tue, 1 Aug 2006 10:28:12 +0100
Received: by nf-out-0910.google.com with SMTP id q29so210810nfc
        for <linux-mips@linux-mips.org>; Tue, 01 Aug 2006 02:28:12 -0700 (PDT)
DomainKey-Signature: a=rsa-sha1; q=dns; c=nofws;
        s=beta; d=gmail.com;
        h=received:from:to:cc:subject:date:message-id:x-mailer:in-reply-to:references;
        b=rYzHTeHf3KbZcQIiBSxiuY1aFBpQv4O0vOZC5ydjXWSRGHSGAcl+6xMsNDIZU23SY0+pqnty+MSOigXm7i6rcVSUxEYXkzFTvhIMhcrisF0nabtqx1clmdQUNyjEjBVnI9H4xxNCE/Wm0egoD7zRSeXo4yJP5pbx2xgqanpd1Hs=
Received: by 10.49.10.3 with SMTP id n3mr391243nfi;
        Tue, 01 Aug 2006 02:28:11 -0700 (PDT)
Received: from spoutnik.innova-card.com ( [194.3.162.233])
        by mx.gmail.com with ESMTP id m16sm695230nfc.2006.08.01.02.28.11;
        Tue, 01 Aug 2006 02:28:11 -0700 (PDT)
Received: by spoutnik.innova-card.com (Postfix, from userid 500)
	id 4BE7A23F759; Tue,  1 Aug 2006 11:27:18 +0200 (CEST)
From:	Franck Bui-Huu <vagabon.xyz@gmail.com>
To:	anemo@mba.ocn.ne.jp
Cc:	ralf@linux-mips.org, linux-mips@linux-mips.org,
	Franck Bui-Huu <vagabon.xyz@gmail.com>
Subject: [PATCH 1/7] Make get_frame_info() more readable.
Date:	Tue,  1 Aug 2006 11:27:11 +0200
Message-Id: <11544244383201-git-send-email-vagabon.xyz@gmail.com>
X-Mailer: git-send-email 1.4.2.rc2
In-Reply-To: <11544244373398-git-send-email-vagabon.xyz@gmail.com>
References: <11544244373398-git-send-email-vagabon.xyz@gmail.com>
Return-Path: <vagabon.xyz@gmail.com>
X-Envelope-To: <"|/home/ecartis/ecartis -s linux-mips"> (uid 0)
X-Orcpt: rfc822;linux-mips@linux-mips.org
Original-Recipient: rfc822;linux-mips@linux-mips.org
X-archive-position: 12140
X-ecartis-version: Ecartis v1.0.0
Sender: linux-mips-bounce@linux-mips.org
Errors-to: linux-mips-bounce@linux-mips.org
X-original-sender: vagabon.xyz@gmail.com
Precedence: bulk
X-list: linux-mips

Signed-off-by: Atsushi Nemoto <anemo@mba.ocn.ne.jp>
Signed-off-by: Franck Bui-Huu <vagabon.xyz@gmail.com>
---
 arch/mips/kernel/process.c |   63 ++++++++++++++++++++++----------------------
 1 files changed, 32 insertions(+), 31 deletions(-)

diff --git a/arch/mips/kernel/process.c b/arch/mips/kernel/process.c
index 8709a46..8d0e4fa 100644
--- a/arch/mips/kernel/process.c
+++ b/arch/mips/kernel/process.c
@@ -281,48 +281,49 @@ static struct mips_frame_info {
 } *schedule_frame, mfinfo[64];
 static int mfinfo_num;
 
+static inline int is_ra_save_ins(union mips_instruction *pc)
+{
+	/* sw / sd $ra, offset($sp) */
+	return (pc->i_format.opcode == sw_op || pc->i_format.opcode == sd_op) &&
+		pc->i_format.rs == 29 &&
+		pc->i_format.rt == 31;
+}
+
+static inline int is_jal_jalr_jr_ins(union mips_instruction *pc)
+{
+	return pc->j_format.opcode == jal_op ||
+		(pc->r_format.opcode == spec_op &&
+			(pc->r_format.func == jalr_op || pc->r_format.func == jr_op));
+}
+
+static inline int is_sp_move_ins(union mips_instruction *pc)
+{
+	/* addiu/daddiu sp,sp,-imm */
+	return (pc->i_format.opcode == addiu_op || pc->i_format.opcode == daddiu_op) && \
+		pc->i_format.rs == 29 && \
+		pc->i_format.rt == 29;
+}
+
 static int get_frame_info(struct mips_frame_info *info)
 {
-	int i;
-	void *func = info->func;
-	union mips_instruction *ip = (union mips_instruction *)func;
+	union mips_instruction *ip = info->func;
+	int i, max_insns =
+		min(128UL, info->func_size / sizeof(union mips_instruction));
+
 	info->pc_offset = -1;
 	info->frame_size = 0;
-	for (i = 0; i < 128; i++, ip++) {
-		/* if jal, jalr, jr, stop. */
-		if (ip->j_format.opcode == jal_op ||
-		    (ip->r_format.opcode == spec_op &&
-		     (ip->r_format.func == jalr_op ||
-		      ip->r_format.func == jr_op)))
-			break;
 
-		if (info->func_size && i >= info->func_size / 4)
+	for (i = 0; i < max_insns; i++, ip++) {
+
+		if (is_jal_jalr_jr_ins(ip))
 			break;
-		if (
-#ifdef CONFIG_32BIT
-		    ip->i_format.opcode == addiu_op &&
-#endif
-#ifdef CONFIG_64BIT
-		    ip->i_format.opcode == daddiu_op &&
-#endif
-		    ip->i_format.rs == 29 &&
-		    ip->i_format.rt == 29) {
-			/* addiu/daddiu sp,sp,-imm */
+		if (is_sp_move_ins(ip)) {
 			if (info->frame_size)
 				continue;
 			info->frame_size = - ip->i_format.simmediate;
 		}
 
-		if (
-#ifdef CONFIG_32BIT
-		    ip->i_format.opcode == sw_op &&
-#endif
-#ifdef CONFIG_64BIT
-		    ip->i_format.opcode == sd_op &&
-#endif
-		    ip->i_format.rs == 29 &&
-		    ip->i_format.rt == 31) {
-			/* sw / sd $ra, offset($sp) */
+		if (is_ra_save_ins(ip)) {
 			if (info->pc_offset != -1)
 				continue;
 			info->pc_offset =
-- 
1.4.2.rc2


From vagabon.xyz@gmail.com Tue Aug  1 10:28:52 2006
Received: with ECARTIS (v1.0.0; list linux-mips); Tue, 01 Aug 2006 10:29:12 +0100 (BST)
Received: from nf-out-0910.google.com ([64.233.182.191]:24343 "EHLO
	nf-out-0910.google.com") by ftp.linux-mips.org with ESMTP
	id S8133447AbWHAJ2M (ORCPT <rfc822;linux-mips@linux-mips.org>);
	Tue, 1 Aug 2006 10:28:12 +0100
Received: by nf-out-0910.google.com with SMTP id q29so210807nfc
        for <linux-mips@linux-mips.org>; Tue, 01 Aug 2006 02:28:11 -0700 (PDT)
DomainKey-Signature: a=rsa-sha1; q=dns; c=nofws;
        s=beta; d=gmail.com;
        h=received:from:to:cc:subject:date:message-id:x-mailer;
        b=IEy+WEUhFkkzdlvwdsD0mJl0avUOYlI4xIBdlNGflyvzkr14pieU7vBAFMG2w/itY6WqvkSEQICmguFZfupjUOocNqBmWnKDwgCiIqB5+kReMGSQMb6QoVtCrjixlnJM5vpPAMG2V9DvGjYCu1wSvk0DCmc+z8KxornSfEn4KbQ=
Received: by 10.49.75.2 with SMTP id c2mr403220nfl;
        Tue, 01 Aug 2006 02:28:11 -0700 (PDT)
Received: from spoutnik.innova-card.com ( [194.3.162.233])
        by mx.gmail.com with ESMTP id c1sm688395nfe.2006.08.01.02.28.11;
        Tue, 01 Aug 2006 02:28:11 -0700 (PDT)
Received: by spoutnik.innova-card.com (Postfix, from userid 500)
	id 19AA923F76A; Tue,  1 Aug 2006 11:27:18 +0200 (CEST)
From:	Franck Bui-Huu <vagabon.xyz@gmail.com>
To:	anemo@mba.ocn.ne.jp
Cc:	ralf@linux-mips.org, linux-mips@linux-mips.org
Subject: [PATCH 0/7] Improve prologue analysis code
Date:	Tue,  1 Aug 2006 11:27:10 +0200
Message-Id: <11544244373398-git-send-email-vagabon.xyz@gmail.com>
X-Mailer: git-send-email 1.4.2.rc2
Return-Path: <vagabon.xyz@gmail.com>
X-Envelope-To: <"|/home/ecartis/ecartis -s linux-mips"> (uid 0)
X-Orcpt: rfc822;linux-mips@linux-mips.org
Original-Recipient: rfc822;linux-mips@linux-mips.org
X-archive-position: 12141
X-ecartis-version: Ecartis v1.0.0
Sender: linux-mips-bounce@linux-mips.org
Errors-to: linux-mips-bounce@linux-mips.org
X-original-sender: vagabon.xyz@gmail.com
Precedence: bulk
X-list: linux-mips

This patch serie clean up or improves this code. I splitted out
this into 7 patches to make the review easier.

		Franck

arch/mips/kernel/process.c |  111 +++++++++++++++++++++++---------------------
 arch/mips/kernel/traps.c   |   55 ++++++++--------------
 2 files changed, 76 insertions(+), 90 deletions(-)



From vagabon.xyz@gmail.com Tue Aug  1 10:29:40 2006
Received: with ECARTIS (v1.0.0; list linux-mips); Tue, 01 Aug 2006 10:30:00 +0100 (BST)
Received: from nf-out-0910.google.com ([64.233.182.190]:4888 "EHLO
	nf-out-0910.google.com") by ftp.linux-mips.org with ESMTP
	id S8133590AbWHAJ2M (ORCPT <rfc822;linux-mips@linux-mips.org>);
	Tue, 1 Aug 2006 10:28:12 +0100
Received: by nf-out-0910.google.com with SMTP id q29so210806nfc
        for <linux-mips@linux-mips.org>; Tue, 01 Aug 2006 02:28:12 -0700 (PDT)
DomainKey-Signature: a=rsa-sha1; q=dns; c=nofws;
        s=beta; d=gmail.com;
        h=received:from:to:cc:subject:date:message-id:x-mailer:in-reply-to:references;
        b=OWyOSYRjBkh7EaqqlYjLsWKRNSqrWoSk1+JiYscmaF7f+vj7ADqdlyTbsGvWXlzFAySazoumOtpqDaYgUBKa06/Grm7PU3KE8z840ydChlOtp2OoGR9G20R1LqvQSF3aJ4945CEduZJMA7bdTEGYiP+zVwSIQuhoYmIVIWNnZ/s=
Received: by 10.48.202.19 with SMTP id z19mr390784nff;
        Tue, 01 Aug 2006 02:28:12 -0700 (PDT)
Received: from spoutnik.innova-card.com ( [194.3.162.233])
        by mx.gmail.com with ESMTP id l32sm168916nfa.2006.08.01.02.28.11;
        Tue, 01 Aug 2006 02:28:12 -0700 (PDT)
Received: by spoutnik.innova-card.com (Postfix, from userid 500)
	id 79AF023F76F; Tue,  1 Aug 2006 11:27:18 +0200 (CEST)
From:	Franck Bui-Huu <vagabon.xyz@gmail.com>
To:	anemo@mba.ocn.ne.jp
Cc:	ralf@linux-mips.org, linux-mips@linux-mips.org,
	Franck Bui-Huu <vagabon.xyz@gmail.com>
Subject: [PATCH 2/7] Make get_frame_info() more robust
Date:	Tue,  1 Aug 2006 11:27:12 +0200
Message-Id: <11544244384089-git-send-email-vagabon.xyz@gmail.com>
X-Mailer: git-send-email 1.4.2.rc2
In-Reply-To: <11544244373398-git-send-email-vagabon.xyz@gmail.com>
References: <11544244373398-git-send-email-vagabon.xyz@gmail.com>
Return-Path: <vagabon.xyz@gmail.com>
X-Envelope-To: <"|/home/ecartis/ecartis -s linux-mips"> (uid 0)
X-Orcpt: rfc822;linux-mips@linux-mips.org
Original-Recipient: rfc822;linux-mips@linux-mips.org
X-archive-position: 12142
X-ecartis-version: Ecartis v1.0.0
Sender: linux-mips-bounce@linux-mips.org
Errors-to: linux-mips-bounce@linux-mips.org
X-original-sender: vagabon.xyz@gmail.com
Precedence: bulk
X-list: linux-mips

Now get_frame_info() wants to detect move sp instruction first. It
assumes that the save ra in the stack instruction can't happen
before allocating frame size space into the stack.

Signed-off-by: Franck Bui-Huu <vagabon.xyz@gmail.com>
---
 arch/mips/kernel/process.c |   14 ++++++--------
 1 files changed, 6 insertions(+), 8 deletions(-)

diff --git a/arch/mips/kernel/process.c b/arch/mips/kernel/process.c
index 8d0e4fa..333f0bb 100644
--- a/arch/mips/kernel/process.c
+++ b/arch/mips/kernel/process.c
@@ -317,17 +317,15 @@ static int get_frame_info(struct mips_fr
 
 		if (is_jal_jalr_jr_ins(ip))
 			break;
-		if (is_sp_move_ins(ip)) {
-			if (info->frame_size)
-				continue;
-			info->frame_size = - ip->i_format.simmediate;
+		if (!info->frame_size) {
+			if (is_sp_move_ins(ip))
+				info->frame_size = - ip->i_format.simmediate;
+			continue;
 		}
-
-		if (is_ra_save_ins(ip)) {
-			if (info->pc_offset != -1)
-				continue;
+		if (info->pc_offset == -1 && is_ra_save_ins(ip)) {
 			info->pc_offset =
 				ip->i_format.simmediate / sizeof(long);
+			break;
 		}
 	}
 	if (info->frame_size && info->pc_offset >= 0) /* nested */
-- 
1.4.2.rc2


From vagabon.xyz@gmail.com Tue Aug  1 10:30:26 2006
Received: with ECARTIS (v1.0.0; list linux-mips); Tue, 01 Aug 2006 10:30:47 +0100 (BST)
Received: from nf-out-0910.google.com ([64.233.182.185]:2584 "EHLO
	nf-out-0910.google.com") by ftp.linux-mips.org with ESMTP
	id S8133579AbWHAJ2M (ORCPT <rfc822;linux-mips@linux-mips.org>);
	Tue, 1 Aug 2006 10:28:12 +0100
Received: by nf-out-0910.google.com with SMTP id q29so210812nfc
        for <linux-mips@linux-mips.org>; Tue, 01 Aug 2006 02:28:12 -0700 (PDT)
DomainKey-Signature: a=rsa-sha1; q=dns; c=nofws;
        s=beta; d=gmail.com;
        h=received:from:to:cc:subject:date:message-id:x-mailer:in-reply-to:references;
        b=Ze+4QAX5xuVlquWRT1s77yhGl1iZPJ3IaWvFKkDfRXCCWoCcr3MNmwFO0NfT/ZGML4ng8DKtT2yJqkHSFU5b/apVM5irKSg1vkamoDIClyHzEV9F1Ii0nDHsTrB+C02ckaubhWHNpwcp6IAVW5UIwMKVnZYEbC2HIqymmv2r8So=
Received: by 10.49.8.10 with SMTP id l10mr408286nfi;
        Tue, 01 Aug 2006 02:28:12 -0700 (PDT)
Received: from spoutnik.innova-card.com ( [194.3.162.233])
        by mx.gmail.com with ESMTP id k24sm539561nfc.2006.08.01.02.28.11;
        Tue, 01 Aug 2006 02:28:12 -0700 (PDT)
Received: by spoutnik.innova-card.com (Postfix, from userid 500)
	id A982E23F770; Tue,  1 Aug 2006 11:27:18 +0200 (CEST)
From:	Franck Bui-Huu <vagabon.xyz@gmail.com>
To:	anemo@mba.ocn.ne.jp
Cc:	ralf@linux-mips.org, linux-mips@linux-mips.org,
	Franck Bui-Huu <vagabon.xyz@gmail.com>
Subject: [PATCH 3/7] Make frame_info_init() more readable.
Date:	Tue,  1 Aug 2006 11:27:13 +0200
Message-Id: <11544244381170-git-send-email-vagabon.xyz@gmail.com>
X-Mailer: git-send-email 1.4.2.rc2
In-Reply-To: <11544244373398-git-send-email-vagabon.xyz@gmail.com>
References: <11544244373398-git-send-email-vagabon.xyz@gmail.com>
Return-Path: <vagabon.xyz@gmail.com>
X-Envelope-To: <"|/home/ecartis/ecartis -s linux-mips"> (uid 0)
X-Orcpt: rfc822;linux-mips@linux-mips.org
Original-Recipient: rfc822;linux-mips@linux-mips.org
X-archive-position: 12143
X-ecartis-version: Ecartis v1.0.0
Sender: linux-mips-bounce@linux-mips.org
Errors-to: linux-mips-bounce@linux-mips.org
X-original-sender: vagabon.xyz@gmail.com
Precedence: bulk
X-list: linux-mips

Signed-off-by: Franck Bui-Huu <vagabon.xyz@gmail.com>
---
 arch/mips/kernel/process.c |   18 +++++++++---------
 1 files changed, 9 insertions(+), 9 deletions(-)

diff --git a/arch/mips/kernel/process.c b/arch/mips/kernel/process.c
index 333f0bb..539b23b 100644
--- a/arch/mips/kernel/process.c
+++ b/arch/mips/kernel/process.c
@@ -364,15 +364,15 @@ #else
 	mfinfo[0].func = schedule;
 	schedule_frame = &mfinfo[0];
 #endif
-	for (i = 0; i < ARRAY_SIZE(mfinfo) && mfinfo[i].func; i++) {
-		struct mips_frame_info *info = &mfinfo[i];
-		if (get_frame_info(info)) {
-			/* leaf or unknown */
-			if (info->func == schedule)
-				printk("Can't analyze prologue code at %p\n",
-				       info->func);
-		}
-	}
+	for (i = 0; i < ARRAY_SIZE(mfinfo) && mfinfo[i].func; i++)
+		get_frame_info(mfinfo + i);
+
+	/*
+	 * Without schedule() frame info, result given by
+	 * thread_saved_pc() and get_wchan() are not reliable.
+	 */
+	if (schedule_frame->pc_offset < 0)
+		printk("Can't analyze schedule() prologue at %p\n", schedule);
 
 	mfinfo_num = i;
 	return 0;
-- 
1.4.2.rc2


From vagabon.xyz@gmail.com Tue Aug  1 10:31:15 2006
Received: with ECARTIS (v1.0.0; list linux-mips); Tue, 01 Aug 2006 10:31:35 +0100 (BST)
Received: from nf-out-0910.google.com ([64.233.182.190]:5656 "EHLO
	nf-out-0910.google.com") by ftp.linux-mips.org with ESMTP
	id S8133606AbWHAJ2M (ORCPT <rfc822;linux-mips@linux-mips.org>);
	Tue, 1 Aug 2006 10:28:12 +0100
Received: by nf-out-0910.google.com with SMTP id q29so210810nfc
        for <linux-mips@linux-mips.org>; Tue, 01 Aug 2006 02:28:12 -0700 (PDT)
DomainKey-Signature: a=rsa-sha1; q=dns; c=nofws;
        s=beta; d=gmail.com;
        h=received:from:to:cc:subject:date:message-id:x-mailer:in-reply-to:references;
        b=JGKP7v/vpfeN/YctW7iD1o6G0vjUa4uF3k7prgerrl+9OUexfUrlMuZGA5l0FDhLkycxjQvje83iF1nbo8FFxqnOdYAX16fG7jBUXButKSSqUs0ou3cUlfUGIgL+D1UIW54pChtpZE+QF5+438BbpOLHLN+BcP2TkunN8QXU6pk=
Received: by 10.49.75.2 with SMTP id c2mr390280nfl;
        Tue, 01 Aug 2006 02:28:12 -0700 (PDT)
Received: from spoutnik.innova-card.com ( [194.3.162.233])
        by mx.gmail.com with ESMTP id g1sm159770nfe.2006.08.01.02.28.11;
        Tue, 01 Aug 2006 02:28:12 -0700 (PDT)
Received: by spoutnik.innova-card.com (Postfix, from userid 500)
	id D961723F772; Tue,  1 Aug 2006 11:27:18 +0200 (CEST)
From:	Franck Bui-Huu <vagabon.xyz@gmail.com>
To:	anemo@mba.ocn.ne.jp
Cc:	ralf@linux-mips.org, linux-mips@linux-mips.org,
	Franck Bui-Huu <vagabon.xyz@gmail.com>
Subject: [PATCH 4/7] Remove unused MODULE_RANGE macro.
Date:	Tue,  1 Aug 2006 11:27:14 +0200
Message-Id: <11544244381454-git-send-email-vagabon.xyz@gmail.com>
X-Mailer: git-send-email 1.4.2.rc2
In-Reply-To: <11544244373398-git-send-email-vagabon.xyz@gmail.com>
References: <11544244373398-git-send-email-vagabon.xyz@gmail.com>
Return-Path: <vagabon.xyz@gmail.com>
X-Envelope-To: <"|/home/ecartis/ecartis -s linux-mips"> (uid 0)
X-Orcpt: rfc822;linux-mips@linux-mips.org
Original-Recipient: rfc822;linux-mips@linux-mips.org
X-archive-position: 12144
X-ecartis-version: Ecartis v1.0.0
Sender: linux-mips-bounce@linux-mips.org
Errors-to: linux-mips-bounce@linux-mips.org
X-original-sender: vagabon.xyz@gmail.com
Precedence: bulk
X-list: linux-mips

Signed-off-by: Franck Bui-Huu <vagabon.xyz@gmail.com>
---
 arch/mips/kernel/traps.c |    5 -----
 1 files changed, 0 insertions(+), 5 deletions(-)

diff --git a/arch/mips/kernel/traps.c b/arch/mips/kernel/traps.c
index 7aa9dfc..4a11a3d 100644
--- a/arch/mips/kernel/traps.c
+++ b/arch/mips/kernel/traps.c
@@ -73,11 +73,6 @@ void (*board_nmi_handler_setup)(void);
 void (*board_ejtag_handler_setup)(void);
 void (*board_bind_eic_interrupt)(int irq, int regset);
 
-/*
- * These constant is for searching for possible module text segments.
- * MODULE_RANGE is a guess of how much space is likely to be vmalloced.
- */
-#define MODULE_RANGE (8*1024*1024)
 
 static void show_trace(unsigned long *stack)
 {
-- 
1.4.2.rc2


From vagabon.xyz@gmail.com Tue Aug  1 10:32:02 2006
Received: with ECARTIS (v1.0.0; list linux-mips); Tue, 01 Aug 2006 10:32:20 +0100 (BST)
Received: from nf-out-0910.google.com ([64.233.182.185]:2584 "EHLO
	nf-out-0910.google.com") by ftp.linux-mips.org with ESMTP
	id S8133621AbWHAJ2O (ORCPT <rfc822;linux-mips@linux-mips.org>);
	Tue, 1 Aug 2006 10:28:14 +0100
Received: by nf-out-0910.google.com with SMTP id q29so210812nfc
        for <linux-mips@linux-mips.org>; Tue, 01 Aug 2006 02:28:14 -0700 (PDT)
DomainKey-Signature: a=rsa-sha1; q=dns; c=nofws;
        s=beta; d=gmail.com;
        h=received:from:to:cc:subject:date:message-id:x-mailer:in-reply-to:references;
        b=kMov9A5uPO7hXlariBgNoChz+tDes9/Zp0WBaKlyL3eavJ/TLZH3U86m4M0mj8T/geVDbbOOM+p3fJ8/c3Ys+TQYYKv8FU2hYNhADnRAY3EBkdSHLvAx7/w48H7W9EUGETlAfe8NtpZZ9DIrTTKRKyg/Fw3kkmS4Ty+8WrzRE9w=
Received: by 10.49.93.13 with SMTP id v13mr389577nfl;
        Tue, 01 Aug 2006 02:28:13 -0700 (PDT)
Received: from spoutnik.innova-card.com ( [194.3.162.233])
        by mx.gmail.com with ESMTP id l21sm702657nfc.2006.08.01.02.28.13;
        Tue, 01 Aug 2006 02:28:13 -0700 (PDT)
Received: by spoutnik.innova-card.com (Postfix, from userid 500)
	id 151D623F76E; Tue,  1 Aug 2006 11:27:19 +0200 (CEST)
From:	Franck Bui-Huu <vagabon.xyz@gmail.com>
To:	anemo@mba.ocn.ne.jp
Cc:	ralf@linux-mips.org, linux-mips@linux-mips.org,
	Franck Bui-Huu <vagabon.xyz@gmail.com>
Subject: [PATCH 5/7] Miscellaneous cleanup in prologue analysis code
Date:	Tue,  1 Aug 2006 11:27:15 +0200
Message-Id: <1154424438145-git-send-email-vagabon.xyz@gmail.com>
X-Mailer: git-send-email 1.4.2.rc2
In-Reply-To: <11544244373398-git-send-email-vagabon.xyz@gmail.com>
References: <11544244373398-git-send-email-vagabon.xyz@gmail.com>
Return-Path: <vagabon.xyz@gmail.com>
X-Envelope-To: <"|/home/ecartis/ecartis -s linux-mips"> (uid 0)
X-Orcpt: rfc822;linux-mips@linux-mips.org
Original-Recipient: rfc822;linux-mips@linux-mips.org
X-archive-position: 12145
X-ecartis-version: Ecartis v1.0.0
Sender: linux-mips-bounce@linux-mips.org
Errors-to: linux-mips-bounce@linux-mips.org
X-original-sender: vagabon.xyz@gmail.com
Precedence: bulk
X-list: linux-mips

We usually use backtrace term for dumping a call tree during
debug. Therefore this patch renames show_frametrace() into
show_backtrace().

Signed-off-by: Franck Bui-Huu <vagabon.xyz@gmail.com>
---
 arch/mips/kernel/traps.c |   26 ++++++++++++--------------
 1 files changed, 12 insertions(+), 14 deletions(-)

diff --git a/arch/mips/kernel/traps.c b/arch/mips/kernel/traps.c
index 4a11a3d..15fa445 100644
--- a/arch/mips/kernel/traps.c
+++ b/arch/mips/kernel/traps.c
@@ -74,19 +74,18 @@ void (*board_ejtag_handler_setup)(void);
 void (*board_bind_eic_interrupt)(int irq, int regset);
 
 
-static void show_trace(unsigned long *stack)
+static void show_trace(unsigned long *sp)
 {
-	const int field = 2 * sizeof(unsigned long);
 	unsigned long addr;
 
 	printk("Call Trace:");
 #ifdef CONFIG_KALLSYMS
 	printk("\n");
 #endif
-	while (!kstack_end(stack)) {
-		addr = *stack++;
+	while (!kstack_end(sp)) {
+		addr = *sp++;
 		if (__kernel_text_address(addr)) {
-			printk(" [<%0*lx>] ", field, addr);
+			printk(" [<%0*lx>] ", 2 * sizeof(unsigned long), addr);
 			print_symbol("%s\n", addr);
 		}
 	}
@@ -104,22 +103,21 @@ __setup("raw_show_trace", set_raw_show_t
 
 extern unsigned long unwind_stack(struct task_struct *task,
 				  unsigned long **sp, unsigned long pc);
-static void show_frametrace(struct task_struct *task, struct pt_regs *regs)
+static void show_backtrace(struct task_struct *task, struct pt_regs *regs)
 {
-	const int field = 2 * sizeof(unsigned long);
-	unsigned long *stack = (long *)regs->regs[29];
+	unsigned long *sp = (long *)regs->regs[29];
 	unsigned long pc = regs->cp0_epc;
 	int top = 1;
 
 	if (raw_show_trace || !__kernel_text_address(pc)) {
-		show_trace(stack);
+		show_trace(sp);
 		return;
 	}
 	printk("Call Trace:\n");
 	while (__kernel_text_address(pc)) {
-		printk(" [<%0*lx>] ", field, pc);
+		printk(" [<%0*lx>] ", 2 * sizeof(unsigned long), pc);
 		print_symbol("%s\n", pc);
-		pc = unwind_stack(task, &stack, pc);
+		pc = unwind_stack(task, &sp, pc);
 		if (top && pc == 0)
 			pc = regs->regs[31];	/* leaf? */
 		top = 0;
@@ -127,7 +125,7 @@ static void show_frametrace(struct task_
 	printk("\n");
 }
 #else
-#define show_frametrace(task, r) show_trace((long *)(r)->regs[29]);
+#define show_backtrace(task, r) show_trace((long *)(r)->regs[29]);
 #endif
 
 /*
@@ -160,7 +158,7 @@ static void show_stacktrace(struct task_
 		i++;
 	}
 	printk("\n");
-	show_frametrace(task, regs);
+	show_backtrace(task, regs);
 }
 
 static noinline void prepare_frametrace(struct pt_regs *regs)
@@ -211,7 +209,7 @@ #ifdef CONFIG_KALLSYMS
 	if (!raw_show_trace) {
 		struct pt_regs regs;
 		prepare_frametrace(&regs);
-		show_frametrace(current, &regs);
+		show_backtrace(current, &regs);
 		return;
 	}
 #endif
-- 
1.4.2.rc2


From vagabon.xyz@gmail.com Tue Aug  1 10:32:47 2006
Received: with ECARTIS (v1.0.0; list linux-mips); Tue, 01 Aug 2006 10:33:10 +0100 (BST)
Received: from nf-out-0910.google.com ([64.233.182.191]:24343 "EHLO
	nf-out-0910.google.com") by ftp.linux-mips.org with ESMTP
	id S8133623AbWHAJ2O (ORCPT <rfc822;linux-mips@linux-mips.org>);
	Tue, 1 Aug 2006 10:28:14 +0100
Received: by nf-out-0910.google.com with SMTP id q29so210807nfc
        for <linux-mips@linux-mips.org>; Tue, 01 Aug 2006 02:28:14 -0700 (PDT)
DomainKey-Signature: a=rsa-sha1; q=dns; c=nofws;
        s=beta; d=gmail.com;
        h=received:from:to:cc:subject:date:message-id:x-mailer:in-reply-to:references;
        b=PDwvOdAg5EJLCVDJjq4rGJXjQT8s5W6ljylUggLkZ5dFg3oWLW2cuIwMuZ0nPHSEigWGOx1d8hccJXx+Yci5rMGTz4VA3fBVVIzZ7bwvfUxGicUMEkR9S4+dOSMIyutowxLcENnbEi1L4o+R7FITk2cHRJnmZ/XHHgk7mmbtUzc=
Received: by 10.49.21.8 with SMTP id y8mr399251nfi;
        Tue, 01 Aug 2006 02:28:14 -0700 (PDT)
Received: from spoutnik.innova-card.com ( [194.3.162.233])
        by mx.gmail.com with ESMTP id x24sm688777nfb.2006.08.01.02.28.13;
        Tue, 01 Aug 2006 02:28:13 -0700 (PDT)
Received: by spoutnik.innova-card.com (Postfix, from userid 500)
	id 345D523F774; Tue,  1 Aug 2006 11:27:19 +0200 (CEST)
From:	Franck Bui-Huu <vagabon.xyz@gmail.com>
To:	anemo@mba.ocn.ne.jp
Cc:	ralf@linux-mips.org, linux-mips@linux-mips.org,
	Franck Bui-Huu <vagabon.xyz@gmail.com>
Subject: [PATCH 6/7] Fix dump_stack()
Date:	Tue,  1 Aug 2006 11:27:16 +0200
Message-Id: <1154424439852-git-send-email-vagabon.xyz@gmail.com>
X-Mailer: git-send-email 1.4.2.rc2
In-Reply-To: <11544244373398-git-send-email-vagabon.xyz@gmail.com>
References: <11544244373398-git-send-email-vagabon.xyz@gmail.com>
Return-Path: <vagabon.xyz@gmail.com>
X-Envelope-To: <"|/home/ecartis/ecartis -s linux-mips"> (uid 0)
X-Orcpt: rfc822;linux-mips@linux-mips.org
Original-Recipient: rfc822;linux-mips@linux-mips.org
X-archive-position: 12146
X-ecartis-version: Ecartis v1.0.0
Sender: linux-mips-bounce@linux-mips.org
Errors-to: linux-mips-bounce@linux-mips.org
X-original-sender: vagabon.xyz@gmail.com
Precedence: bulk
X-list: linux-mips

When CONFIG_KALLSYMS is not set stack local is not initialized. Therefore
show_trace() won't display anything useful. This patch uses
prepare_frametrace() to setup the stack pointer before calling
show_trace().

Signed-off-by: Franck Bui-Huu <vagabon.xyz@gmail.com>
---
 arch/mips/kernel/traps.c |   13 +++----------
 1 files changed, 3 insertions(+), 10 deletions(-)

diff --git a/arch/mips/kernel/traps.c b/arch/mips/kernel/traps.c
index 15fa445..07191a6 100644
--- a/arch/mips/kernel/traps.c
+++ b/arch/mips/kernel/traps.c
@@ -203,17 +203,10 @@ void show_stack(struct task_struct *task
  */
 void dump_stack(void)
 {
-	unsigned long stack;
+	struct pt_regs regs;
 
-#ifdef CONFIG_KALLSYMS
-	if (!raw_show_trace) {
-		struct pt_regs regs;
-		prepare_frametrace(&regs);
-		show_backtrace(current, &regs);
-		return;
-	}
-#endif
-	show_trace(&stack);
+	prepare_frametrace(&regs);
+	show_backtrace(current, &regs);
 }
 
 EXPORT_SYMBOL(dump_stack);
-- 
1.4.2.rc2


From vagabon.xyz@gmail.com Tue Aug  1 10:33:39 2006
Received: with ECARTIS (v1.0.0; list linux-mips); Tue, 01 Aug 2006 10:34:03 +0100 (BST)
Received: from nf-out-0910.google.com ([64.233.182.190]:5656 "EHLO
	nf-out-0910.google.com") by ftp.linux-mips.org with ESMTP
	id S8133629AbWHAJ2O (ORCPT <rfc822;linux-mips@linux-mips.org>);
	Tue, 1 Aug 2006 10:28:14 +0100
Received: by nf-out-0910.google.com with SMTP id q29so210810nfc
        for <linux-mips@linux-mips.org>; Tue, 01 Aug 2006 02:28:14 -0700 (PDT)
DomainKey-Signature: a=rsa-sha1; q=dns; c=nofws;
        s=beta; d=gmail.com;
        h=received:from:to:cc:subject:date:message-id:x-mailer:in-reply-to:references;
        b=bK20ZVS+dvWUJO7MNprE21TP7cWoDPWCBpkfkqbN9fyZy5gnRYDtSWqXjy2hYGydRvNN5kmReAIP0jiB8qLYiYU5Lkuiv1ZNot00My/7mx7hWsEpXEdAOnqz0JWxedogm9/5MM471kc0eVAtKne03NBf6JsDJEcJH640WqEDn9g=
Received: by 10.49.29.3 with SMTP id g3mr416874nfj;
        Tue, 01 Aug 2006 02:28:14 -0700 (PDT)
Received: from spoutnik.innova-card.com ( [194.3.162.233])
        by mx.gmail.com with ESMTP id x27sm628564nfb.2006.08.01.02.28.13;
        Tue, 01 Aug 2006 02:28:14 -0700 (PDT)
Received: by spoutnik.innova-card.com (Postfix, from userid 500)
	id 549AC23F775; Tue,  1 Aug 2006 11:27:19 +0200 (CEST)
From:	Franck Bui-Huu <vagabon.xyz@gmail.com>
To:	anemo@mba.ocn.ne.jp
Cc:	ralf@linux-mips.org, linux-mips@linux-mips.org,
	Franck Bui-Huu <vagabon.xyz@gmail.com>
Subject: [PATCH 7/7] Allow unwind_stack() to return ra for leaf function
Date:	Tue,  1 Aug 2006 11:27:17 +0200
Message-Id: <1154424439969-git-send-email-vagabon.xyz@gmail.com>
X-Mailer: git-send-email 1.4.2.rc2
In-Reply-To: <11544244373398-git-send-email-vagabon.xyz@gmail.com>
References: <11544244373398-git-send-email-vagabon.xyz@gmail.com>
Return-Path: <vagabon.xyz@gmail.com>
X-Envelope-To: <"|/home/ecartis/ecartis -s linux-mips"> (uid 0)
X-Orcpt: rfc822;linux-mips@linux-mips.org
Original-Recipient: rfc822;linux-mips@linux-mips.org
X-archive-position: 12147
X-ecartis-version: Ecartis v1.0.0
Sender: linux-mips-bounce@linux-mips.org
Errors-to: linux-mips-bounce@linux-mips.org
X-original-sender: vagabon.xyz@gmail.com
Precedence: bulk
X-list: linux-mips

Since get_frame_info() is more robust, unwind_stack() can
returns ra value for leaf functions.

Signed-off-by: Franck Bui-Huu <vagabon.xyz@gmail.com>
---
 arch/mips/kernel/process.c |   20 ++++++++++++--------
 arch/mips/kernel/traps.c   |   15 ++++++---------
 2 files changed, 18 insertions(+), 17 deletions(-)

diff --git a/arch/mips/kernel/process.c b/arch/mips/kernel/process.c
index 539b23b..6377b17 100644
--- a/arch/mips/kernel/process.c
+++ b/arch/mips/kernel/process.c
@@ -445,14 +445,15 @@ #endif
 
 #ifdef CONFIG_KALLSYMS
 /* used by show_frametrace() */
-unsigned long unwind_stack(struct task_struct *task,
-			   unsigned long **sp, unsigned long pc)
+unsigned long unwind_stack(struct task_struct *task, unsigned long **sp,
+			   unsigned long pc, struct pt_regs *regs)
 {
 	unsigned long stack_page;
 	struct mips_frame_info info;
 	char *modname;
 	char namebuf[KSYM_NAME_LEN + 1];
 	unsigned long size, ofs;
+	int leaf;
 
 	stack_page = (unsigned long)task_stack_page(task);
 	if (!stack_page)
@@ -465,18 +466,21 @@ unsigned long unwind_stack(struct task_s
 
 	info.func = (void *)(pc - ofs);
 	info.func_size = ofs;	/* analyze from start to ofs */
-	if (get_frame_info(&info)) {
-		/* leaf or unknown */
-		*sp += info.frame_size / sizeof(long);
+	leaf = get_frame_info(&info);
+	if (leaf < 0)
 		return 0;
-	}
+
 	if ((unsigned long)*sp < stack_page ||
 	    (unsigned long)*sp + info.frame_size / sizeof(long) >
 	    stack_page + THREAD_SIZE - 32)
 		return 0;
 
-	pc = (*sp)[info.pc_offset];
+	if (leaf)
+		pc = regs->regs[31];
+	else
+		pc = (*sp)[info.pc_offset];
+
 	*sp += info.frame_size / sizeof(long);
-	return pc;
+	return __kernel_text_address(pc) ? pc : 0;
 }
 #endif
diff --git a/arch/mips/kernel/traps.c b/arch/mips/kernel/traps.c
index 07191a6..78aed61 100644
--- a/arch/mips/kernel/traps.c
+++ b/arch/mips/kernel/traps.c
@@ -101,8 +101,9 @@ static int __init set_raw_show_trace(cha
 }
 __setup("raw_show_trace", set_raw_show_trace);
 
-extern unsigned long unwind_stack(struct task_struct *task,
-				  unsigned long **sp, unsigned long pc);
+extern unsigned long unwind_stack(struct task_struct *task, unsigned long **sp,
+				  unsigned long pc, struct pt_regs *regs);
+
 static void show_backtrace(struct task_struct *task, struct pt_regs *regs)
 {
 	unsigned long *sp = (long *)regs->regs[29];
@@ -114,14 +115,10 @@ static void show_backtrace(struct task_s
 		return;
 	}
 	printk("Call Trace:\n");
-	while (__kernel_text_address(pc)) {
+	do {
 		printk(" [<%0*lx>] ", 2 * sizeof(unsigned long), pc);
-		print_symbol("%s\n", pc);
-		pc = unwind_stack(task, &sp, pc);
-		if (top && pc == 0)
-			pc = regs->regs[31];	/* leaf? */
-		top = 0;
-	}
+ 		print_symbol("%s\n", pc);
+	} while ((pc = unwind_stack(task, &sp, pc, regs)));
 	printk("\n");
 }
 #else
-- 
1.4.2.rc2


From anemo@mba.ocn.ne.jp Tue Aug  1 16:01:20 2006
Received: with ECARTIS (v1.0.0; list linux-mips); Tue, 01 Aug 2006 16:01:31 +0100 (BST)
Received: from mba.ocn.ne.jp ([210.190.142.172]:6865 "HELO smtp.mba.ocn.ne.jp")
	by ftp.linux-mips.org with SMTP id S8133655AbWHAPBU (ORCPT
	<rfc822;linux-mips@linux-mips.org>); Tue, 1 Aug 2006 16:01:20 +0100
Received: from localhost (p2112-ipad209funabasi.chiba.ocn.ne.jp [58.88.113.112])
	by smtp.mba.ocn.ne.jp (Postfix) with ESMTP
	id 8D046A616; Wed,  2 Aug 2006 00:01:16 +0900 (JST)
Date:	Wed, 02 Aug 2006 00:02:49 +0900 (JST)
Message-Id: <20060802.000249.41630533.anemo@mba.ocn.ne.jp>
To:	vagabon.xyz@gmail.com
Cc:	ralf@linux-mips.org, linux-mips@linux-mips.org
Subject: Re: [PATCH 1/7] Make get_frame_info() more readable.
From:	Atsushi Nemoto <anemo@mba.ocn.ne.jp>
In-Reply-To: <11544244383201-git-send-email-vagabon.xyz@gmail.com>
References: <11544244373398-git-send-email-vagabon.xyz@gmail.com>
	<11544244383201-git-send-email-vagabon.xyz@gmail.com>
X-Fingerprint: 6ACA 1623 39BD 9A94 9B1A  B746 CA77 FE94 2874 D52F
X-Pgp-Public-Key: http://wwwkeys.pgp.net/pks/lookup?op=get&search=0x2874D52F
X-Mailer: Mew version 3.3 on Emacs 21.4 / Mule 5.0 (SAKAKI)
Mime-Version: 1.0
Content-Type: Text/Plain; charset=us-ascii
Content-Transfer-Encoding: 7bit
Return-Path: <anemo@mba.ocn.ne.jp>
X-Envelope-To: <"|/home/ecartis/ecartis -s linux-mips"> (uid 0)
X-Orcpt: rfc822;linux-mips@linux-mips.org
Original-Recipient: rfc822;linux-mips@linux-mips.org
X-archive-position: 12148
X-ecartis-version: Ecartis v1.0.0
Sender: linux-mips-bounce@linux-mips.org
Errors-to: linux-mips-bounce@linux-mips.org
X-original-sender: anemo@mba.ocn.ne.jp
Precedence: bulk
X-list: linux-mips

On Tue,  1 Aug 2006 11:27:11 +0200, Franck Bui-Huu <vagabon.xyz@gmail.com> wrote:
> +static inline int is_ra_save_ins(union mips_instruction *pc)
> +{
> +	/* sw / sd $ra, offset($sp) */
> +	return (pc->i_format.opcode == sw_op || pc->i_format.opcode == sd_op) &&
> +		pc->i_format.rs == 29 &&
> +		pc->i_format.rt == 31;
> +}

Separating these function would be good, but let's play with 80
columns rule.

---
Atsushi Nemoto

From anemo@mba.ocn.ne.jp Tue Aug  1 16:07:08 2006
Received: with ECARTIS (v1.0.0; list linux-mips); Tue, 01 Aug 2006 16:07:19 +0100 (BST)
Received: from mba.ocn.ne.jp ([210.190.142.172]:30965 "HELO smtp.mba.ocn.ne.jp")
	by ftp.linux-mips.org with SMTP id S8133650AbWHAPHI (ORCPT
	<rfc822;linux-mips@linux-mips.org>); Tue, 1 Aug 2006 16:07:08 +0100
Received: from localhost (p2112-ipad209funabasi.chiba.ocn.ne.jp [58.88.113.112])
	by smtp.mba.ocn.ne.jp (Postfix) with ESMTP
	id 9FA2299A9; Wed,  2 Aug 2006 00:07:04 +0900 (JST)
Date:	Wed, 02 Aug 2006 00:08:37 +0900 (JST)
Message-Id: <20060802.000837.37531064.anemo@mba.ocn.ne.jp>
To:	vagabon.xyz@gmail.com
Cc:	ralf@linux-mips.org, linux-mips@linux-mips.org
Subject: Re: [PATCH 6/7] Fix dump_stack()
From:	Atsushi Nemoto <anemo@mba.ocn.ne.jp>
In-Reply-To: <1154424439852-git-send-email-vagabon.xyz@gmail.com>
References: <11544244373398-git-send-email-vagabon.xyz@gmail.com>
	<1154424439852-git-send-email-vagabon.xyz@gmail.com>
X-Fingerprint: 6ACA 1623 39BD 9A94 9B1A  B746 CA77 FE94 2874 D52F
X-Pgp-Public-Key: http://wwwkeys.pgp.net/pks/lookup?op=get&search=0x2874D52F
X-Mailer: Mew version 3.3 on Emacs 21.4 / Mule 5.0 (SAKAKI)
Mime-Version: 1.0
Content-Type: Text/Plain; charset=us-ascii
Content-Transfer-Encoding: 7bit
Return-Path: <anemo@mba.ocn.ne.jp>
X-Envelope-To: <"|/home/ecartis/ecartis -s linux-mips"> (uid 0)
X-Orcpt: rfc822;linux-mips@linux-mips.org
Original-Recipient: rfc822;linux-mips@linux-mips.org
X-archive-position: 12149
X-ecartis-version: Ecartis v1.0.0
Sender: linux-mips-bounce@linux-mips.org
Errors-to: linux-mips-bounce@linux-mips.org
X-original-sender: anemo@mba.ocn.ne.jp
Precedence: bulk
X-list: linux-mips

On Tue,  1 Aug 2006 11:27:16 +0200, Franck Bui-Huu <vagabon.xyz@gmail.com> wrote:
> When CONFIG_KALLSYMS is not set stack local is not initialized. Therefore
> show_trace() won't display anything useful. This patch uses
> prepare_frametrace() to setup the stack pointer before calling
> show_trace().

It's not a bug.  The original show_trace() needs an address on stack
and dump_stack() surely give it by taking an address of local
variable.

Eliminating the #ifdef itself looks good, but if you cleared contents
of the "regs" before prepare_frametrace, you will get less false
entries in the output.

---
Atsushi Nemoto

From vagabon.xyz@gmail.com Tue Aug  1 16:38:21 2006
Received: with ECARTIS (v1.0.0; list linux-mips); Tue, 01 Aug 2006 16:38:39 +0100 (BST)
Received: from nf-out-0910.google.com ([64.233.182.190]:39641 "EHLO
	nf-out-0910.google.com") by ftp.linux-mips.org with ESMTP
	id S8133655AbWHAPiV (ORCPT <rfc822;linux-mips@linux-mips.org>);
	Tue, 1 Aug 2006 16:38:21 +0100
Received: by nf-out-0910.google.com with SMTP id q29so312961nfc
        for <linux-mips@linux-mips.org>; Tue, 01 Aug 2006 08:38:14 -0700 (PDT)
DomainKey-Signature: a=rsa-sha1; q=dns; c=nofws;
        s=beta; d=gmail.com;
        h=received:message-id:date:reply-to:user-agent:mime-version:to:cc:subject:references:in-reply-to:content-type:content-transfer-encoding:from;
        b=sqfI4jGfmo6rqLPjAE9yv0pBuQqJWNwCsT1sZfnZ1H13gujjUnEvKcmXtkXLbJpaHl5CCKqfouDMO0s7aedUQ5d3EztheKC6Cm3gqgvBvsDrytWElNTkQiWNWg3SAQFADTC1XVEmEs727A6FAgIiaCjvJP0C1LCJunmEt8/fQXk=
Received: by 10.49.8.4 with SMTP id l4mr921209nfi;
        Tue, 01 Aug 2006 08:38:14 -0700 (PDT)
Received: from ?192.168.0.24? ( [194.3.162.233])
        by mx.gmail.com with ESMTP id r33sm471316nfc.2006.08.01.08.38.13;
        Tue, 01 Aug 2006 08:38:14 -0700 (PDT)
Message-ID: <44CF7506.70106@innova-card.com>
Date:	Tue, 01 Aug 2006 17:36:38 +0200
Reply-To: Franck <vagabon.xyz@gmail.com>
User-Agent: Thunderbird 1.5.0.4 (X11/20060614)
MIME-Version: 1.0
To:	Atsushi Nemoto <anemo@mba.ocn.ne.jp>
CC:	vagabon.xyz@gmail.com, ralf@linux-mips.org,
	linux-mips@linux-mips.org
Subject: Re: [PATCH 6/7] Fix dump_stack()
References: <11544244373398-git-send-email-vagabon.xyz@gmail.com>	<1154424439852-git-send-email-vagabon.xyz@gmail.com> <20060802.000837.37531064.anemo@mba.ocn.ne.jp>
In-Reply-To: <20060802.000837.37531064.anemo@mba.ocn.ne.jp>
Content-Type: text/plain; charset=ISO-8859-1
Content-Transfer-Encoding: 7bit
From:	Franck Bui-Huu <vagabon.xyz@gmail.com>
Return-Path: <vagabon.xyz@gmail.com>
X-Envelope-To: <"|/home/ecartis/ecartis -s linux-mips"> (uid 0)
X-Orcpt: rfc822;linux-mips@linux-mips.org
Original-Recipient: rfc822;linux-mips@linux-mips.org
X-archive-position: 12150
X-ecartis-version: Ecartis v1.0.0
Sender: linux-mips-bounce@linux-mips.org
Errors-to: linux-mips-bounce@linux-mips.org
X-original-sender: vagabon.xyz@gmail.com
Precedence: bulk
X-list: linux-mips

Atsushi Nemoto wrote:
> On Tue,  1 Aug 2006 11:27:16 +0200, Franck Bui-Huu <vagabon.xyz@gmail.com> wrote:
>> When CONFIG_KALLSYMS is not set stack local is not initialized. Therefore
>> show_trace() won't display anything useful. This patch uses
>> prepare_frametrace() to setup the stack pointer before calling
>> show_trace().
> 
> It's not a bug.  The original show_trace() needs an address on stack
> and dump_stack() surely give it by taking an address of local
> variable.
> 

sorry, was drunk when writing the commit message...

> Eliminating the #ifdef itself looks good, but if you cleared contents
> of the "regs" before prepare_frametrace, you will get less false
> entries in the output.
> 

well I don't see why...show_trace() is going to only use regs[29] which
is setup by prepare_frametrace()...

One other thing, why did you mark prepare_frametrace() as noinline ?
I would mark it as always_inline to get one less false entry in the
output.

		Franck

From anemo@mba.ocn.ne.jp Tue Aug  1 16:47:21 2006
Received: with ECARTIS (v1.0.0; list linux-mips); Tue, 01 Aug 2006 16:47:30 +0100 (BST)
Received: from mba.ocn.ne.jp ([210.190.142.172]:43735 "HELO smtp.mba.ocn.ne.jp")
	by ftp.linux-mips.org with SMTP id S8133655AbWHAPrV (ORCPT
	<rfc822;linux-mips@linux-mips.org>); Tue, 1 Aug 2006 16:47:21 +0100
Received: from localhost (p2112-ipad209funabasi.chiba.ocn.ne.jp [58.88.113.112])
	by smtp.mba.ocn.ne.jp (Postfix) with ESMTP
	id 83DA0A073; Wed,  2 Aug 2006 00:47:15 +0900 (JST)
Date:	Wed, 02 Aug 2006 00:48:48 +0900 (JST)
Message-Id: <20060802.004848.97296551.anemo@mba.ocn.ne.jp>
To:	vagabon.xyz@gmail.com
Cc:	ralf@linux-mips.org, linux-mips@linux-mips.org
Subject: Re: [PATCH 7/7] Allow unwind_stack() to return ra for leaf function
From:	Atsushi Nemoto <anemo@mba.ocn.ne.jp>
In-Reply-To: <1154424439969-git-send-email-vagabon.xyz@gmail.com>
References: <11544244373398-git-send-email-vagabon.xyz@gmail.com>
	<1154424439969-git-send-email-vagabon.xyz@gmail.com>
X-Fingerprint: 6ACA 1623 39BD 9A94 9B1A  B746 CA77 FE94 2874 D52F
X-Pgp-Public-Key: http://wwwkeys.pgp.net/pks/lookup?op=get&search=0x2874D52F
X-Mailer: Mew version 3.3 on Emacs 21.4 / Mule 5.0 (SAKAKI)
Mime-Version: 1.0
Content-Type: Text/Plain; charset=us-ascii
Content-Transfer-Encoding: 7bit
Return-Path: <anemo@mba.ocn.ne.jp>
X-Envelope-To: <"|/home/ecartis/ecartis -s linux-mips"> (uid 0)
X-Orcpt: rfc822;linux-mips@linux-mips.org
Original-Recipient: rfc822;linux-mips@linux-mips.org
X-archive-position: 12151
X-ecartis-version: Ecartis v1.0.0
Sender: linux-mips-bounce@linux-mips.org
Errors-to: linux-mips-bounce@linux-mips.org
X-original-sender: anemo@mba.ocn.ne.jp
Precedence: bulk
X-list: linux-mips

On Tue,  1 Aug 2006 11:27:17 +0200, Franck Bui-Huu <vagabon.xyz@gmail.com> wrote:
> Since get_frame_info() is more robust, unwind_stack() can
> returns ra value for leaf functions.

I think it is still fragile.  The get_frame_info() might misdetect
nested function as leaf.  For example, I can craft this code:

int nestfunc(int arg)
{
	if (arg)
		return 0;
	func();
	return 1;
}

	.set noreorder
nestfunc:
	beqz	a0, 1f
	 nop
	jr	ra
	 move	v0, zero
1:
	addiu	sp, sp, -24
	sw	ra, 16(sp)
	jal	func
	 nop
	lw	ra, 16(sp)
	li	v0, 1
	jr	ra
	 addiu	sp, sp, 24

(Though it seems a bit artificial, who believe gcc never do it same?)

The get_frame_info() will think this is a leaf.  With your patch,
unwind_stack() might fall into endless loop at worst (if the "func"
was leaf and an exception happened in the "func").

I think you should ensure unwind_stack() never use regs->regs[31]
elsewhere than top of the stack.

---
Atsushi Nemoto

From anemo@mba.ocn.ne.jp Tue Aug  1 17:03:52 2006
Received: with ECARTIS (v1.0.0; list linux-mips); Tue, 01 Aug 2006 17:04:03 +0100 (BST)
Received: from mba.ocn.ne.jp ([210.190.142.172]:18121 "HELO smtp.mba.ocn.ne.jp")
	by ftp.linux-mips.org with SMTP id S8133655AbWHAQDw (ORCPT
	<rfc822;linux-mips@linux-mips.org>); Tue, 1 Aug 2006 17:03:52 +0100
Received: from localhost (p2112-ipad209funabasi.chiba.ocn.ne.jp [58.88.113.112])
	by smtp.mba.ocn.ne.jp (Postfix) with ESMTP
	id 36AF8A6F2; Wed,  2 Aug 2006 01:03:49 +0900 (JST)
Date:	Wed, 02 Aug 2006 01:05:22 +0900 (JST)
Message-Id: <20060802.010522.11596989.anemo@mba.ocn.ne.jp>
To:	vagabon.xyz@gmail.com
Cc:	ralf@linux-mips.org, linux-mips@linux-mips.org
Subject: Re: [PATCH 6/7] Fix dump_stack()
From:	Atsushi Nemoto <anemo@mba.ocn.ne.jp>
In-Reply-To: <44CF7506.70106@innova-card.com>
References: <1154424439852-git-send-email-vagabon.xyz@gmail.com>
	<20060802.000837.37531064.anemo@mba.ocn.ne.jp>
	<44CF7506.70106@innova-card.com>
X-Fingerprint: 6ACA 1623 39BD 9A94 9B1A  B746 CA77 FE94 2874 D52F
X-Pgp-Public-Key: http://wwwkeys.pgp.net/pks/lookup?op=get&search=0x2874D52F
X-Mailer: Mew version 3.3 on Emacs 21.4 / Mule 5.0 (SAKAKI)
Mime-Version: 1.0
Content-Type: Text/Plain; charset=us-ascii
Content-Transfer-Encoding: 7bit
Return-Path: <anemo@mba.ocn.ne.jp>
X-Envelope-To: <"|/home/ecartis/ecartis -s linux-mips"> (uid 0)
X-Orcpt: rfc822;linux-mips@linux-mips.org
Original-Recipient: rfc822;linux-mips@linux-mips.org
X-archive-position: 12152
X-ecartis-version: Ecartis v1.0.0
Sender: linux-mips-bounce@linux-mips.org
Errors-to: linux-mips-bounce@linux-mips.org
X-original-sender: anemo@mba.ocn.ne.jp
Precedence: bulk
X-list: linux-mips

On Tue, 01 Aug 2006 17:36:38 +0200, Franck Bui-Huu <vagabon.xyz@gmail.com> wrote:
> > Eliminating the #ifdef itself looks good, but if you cleared contents
> > of the "regs" before prepare_frametrace, you will get less false
> > entries in the output.
> 
> well I don't see why...show_trace() is going to only use regs[29] which
> is setup by prepare_frametrace()...

If CONFIG_KALLSYMS was not set, show_trace() print all possible
entries starting from the sp.  The sp value stored in "regs" by
prepare_frametrace() will be little smaller one than the address of
the "regs" itself.  So if some values like function addresses were in
the "regs", show_trace() will report them.

> One other thing, why did you mark prepare_frametrace() as noinline ?
> I would mark it as always_inline to get one less false entry in the
> output.

Well, I tried some prepare_frametrace() implementations before the
final one.  I wanted to make sure that prepare_frametrace() does
really what desired, and noinline make it a bit easy.

But now I think current prepare_frametrace() is quite safe for
inlining.  So always_inline would be OK.

---
Atsushi Nemoto

From vagabon.xyz@gmail.com Tue Aug  1 18:43:40 2006
Received: with ECARTIS (v1.0.0; list linux-mips); Tue, 01 Aug 2006 18:43:49 +0100 (BST)
Received: from ug-out-1314.google.com ([66.249.92.173]:33736 "EHLO
	ug-out-1314.google.com") by ftp.linux-mips.org with ESMTP
	id S3458555AbWHARnj (ORCPT <rfc822;linux-mips@linux-mips.org>);
	Tue, 1 Aug 2006 18:43:39 +0100
Received: by ug-out-1314.google.com with SMTP id m2so1619359ugc
        for <linux-mips@linux-mips.org>; Tue, 01 Aug 2006 10:43:39 -0700 (PDT)
DomainKey-Signature: a=rsa-sha1; q=dns; c=nofws;
        s=beta; d=gmail.com;
        h=received:message-id:date:from:to:subject:cc:in-reply-to:mime-version:content-type:content-transfer-encoding:content-disposition:references;
        b=LgoUIPHcRAmlIy0wXzoWoi5pKe9EUc86BYShbz2eDS6vn99Yvu1nXU5FgIeoRv0WLpcBT0/x+FuOmF6HeyjVZwpqpocRNhzXZ0HcgEv/cxAhE4hxnYYhrwnf1RX8gv9HRFGBrfA5pAni0Dg/ffYVSde6Qr44iHBBIUDRiwDGslU=
Received: by 10.66.220.17 with SMTP id s17mr1310117ugg;
        Tue, 01 Aug 2006 10:43:39 -0700 (PDT)
Received: by 10.67.87.8 with HTTP; Tue, 1 Aug 2006 10:43:39 -0700 (PDT)
Message-ID: <cda58cb80608011043u19621bdev1a2d3e2745adac50@mail.gmail.com>
Date:	Tue, 1 Aug 2006 19:43:39 +0200
From:	"Franck Bui-Huu" <vagabon.xyz@gmail.com>
To:	"Atsushi Nemoto" <anemo@mba.ocn.ne.jp>
Subject: Re: [PATCH 6/7] Fix dump_stack()
Cc:	ralf@linux-mips.org, linux-mips@linux-mips.org
In-Reply-To: <20060802.010522.11596989.anemo@mba.ocn.ne.jp>
MIME-Version: 1.0
Content-Type: text/plain; charset=ISO-8859-1; format=flowed
Content-Transfer-Encoding: 7bit
Content-Disposition: inline
References: <1154424439852-git-send-email-vagabon.xyz@gmail.com>
	 <20060802.000837.37531064.anemo@mba.ocn.ne.jp>
	 <44CF7506.70106@innova-card.com>
	 <20060802.010522.11596989.anemo@mba.ocn.ne.jp>
Return-Path: <vagabon.xyz@gmail.com>
X-Envelope-To: <"|/home/ecartis/ecartis -s linux-mips"> (uid 0)
X-Orcpt: rfc822;linux-mips@linux-mips.org
Original-Recipient: rfc822;linux-mips@linux-mips.org
X-archive-position: 12153
X-ecartis-version: Ecartis v1.0.0
Sender: linux-mips-bounce@linux-mips.org
Errors-to: linux-mips-bounce@linux-mips.org
X-original-sender: vagabon.xyz@gmail.com
Precedence: bulk
X-list: linux-mips

2006/8/1, Atsushi Nemoto <anemo@mba.ocn.ne.jp>:
> On Tue, 01 Aug 2006 17:36:38 +0200, Franck Bui-Huu <vagabon.xyz@gmail.com> wrote:
> > > Eliminating the #ifdef itself looks good, but if you cleared contents
> > > of the "regs" before prepare_frametrace, you will get less false
> > > entries in the output.
> >
> > well I don't see why...show_trace() is going to only use regs[29] which
> > is setup by prepare_frametrace()...
>
> If CONFIG_KALLSYMS was not set, show_trace() print all possible
> entries starting from the sp.  The sp value stored in "regs" by
> prepare_frametrace() will be little smaller one than the address of
> the "regs" itself.  So if some values like function addresses were in
> the "regs", show_trace() will report them.
>

OK, I'll do that.

BTW what about rename show_trace() into show_raw_backtrace() ?

-- 
               Franck

From vagabon.xyz@gmail.com Tue Aug  1 20:38:19 2006
Received: with ECARTIS (v1.0.0; list linux-mips); Tue, 01 Aug 2006 20:38:28 +0100 (BST)
Received: from ug-out-1314.google.com ([66.249.92.172]:21514 "EHLO
	ug-out-1314.google.com") by ftp.linux-mips.org with ESMTP
	id S3465573AbWHATiT (ORCPT <rfc822;linux-mips@linux-mips.org>);
	Tue, 1 Aug 2006 20:38:19 +0100
Received: by ug-out-1314.google.com with SMTP id m2so1679618ugc
        for <linux-mips@linux-mips.org>; Tue, 01 Aug 2006 12:38:18 -0700 (PDT)
DomainKey-Signature: a=rsa-sha1; q=dns; c=nofws;
        s=beta; d=gmail.com;
        h=received:message-id:date:from:to:subject:cc:in-reply-to:mime-version:content-type:content-transfer-encoding:content-disposition:references;
        b=qDuQsE7GVQe4IP7uwh8gDnUO1Ml1OXvkMVSVMgcSK3w47rlrOk52ewgoAeAiPvrfPSMD8g02+Vm+7mOXAZ1kapCXRxy2r12Mjos0Qwpgo01JqklwvNLS1drA1ZpOoLhHJ4n6mMjMEeLlzGVzoduZckABvZEALqbsFbcJnfxqj1M=
Received: by 10.67.100.12 with SMTP id c12mr52445ugm;
        Tue, 01 Aug 2006 12:38:18 -0700 (PDT)
Received: by 10.67.87.8 with HTTP; Tue, 1 Aug 2006 12:38:18 -0700 (PDT)
Message-ID: <cda58cb80608011238q5b0e0eacje28f921d6e1c7700@mail.gmail.com>
Date:	Tue, 1 Aug 2006 21:38:18 +0200
From:	"Franck Bui-Huu" <vagabon.xyz@gmail.com>
To:	"Atsushi Nemoto" <anemo@mba.ocn.ne.jp>
Subject: Re: [PATCH 7/7] Allow unwind_stack() to return ra for leaf function
Cc:	ralf@linux-mips.org, linux-mips@linux-mips.org
In-Reply-To: <20060802.004848.97296551.anemo@mba.ocn.ne.jp>
MIME-Version: 1.0
Content-Type: text/plain; charset=ISO-8859-1; format=flowed
Content-Transfer-Encoding: 7bit
Content-Disposition: inline
References: <11544244373398-git-send-email-vagabon.xyz@gmail.com>
	 <1154424439969-git-send-email-vagabon.xyz@gmail.com>
	 <20060802.004848.97296551.anemo@mba.ocn.ne.jp>
Return-Path: <vagabon.xyz@gmail.com>
X-Envelope-To: <"|/home/ecartis/ecartis -s linux-mips"> (uid 0)
X-Orcpt: rfc822;linux-mips@linux-mips.org
Original-Recipient: rfc822;linux-mips@linux-mips.org
X-archive-position: 12154
X-ecartis-version: Ecartis v1.0.0
Sender: linux-mips-bounce@linux-mips.org
Errors-to: linux-mips-bounce@linux-mips.org
X-original-sender: vagabon.xyz@gmail.com
Precedence: bulk
X-list: linux-mips

2006/8/1, Atsushi Nemoto <anemo@mba.ocn.ne.jp>:
> On Tue,  1 Aug 2006 11:27:17 +0200, Franck Bui-Huu <vagabon.xyz@gmail.com> wrote:
> > Since get_frame_info() is more robust, unwind_stack() can
> > returns ra value for leaf functions.
>
> I think it is still fragile.  The get_frame_info() might misdetect
> nested function as leaf.  For example, I can craft this code:
>

Considering (wrongly) a nested function as a leaf one is not a big
issue. "ra" reg should _always_ store a valid address (nested or not).
The only (small) impact would be to skip an entry when showing the
backtrace.

-- 
               Franck

From anemo@mba.ocn.ne.jp Wed Aug  2 02:51:34 2006
Received: with ECARTIS (v1.0.0; list linux-mips); Wed, 02 Aug 2006 02:51:43 +0100 (BST)
Received: from topsns2.toshiba-tops.co.jp ([202.230.225.126]:14741 "EHLO
	topsns2.toshiba-tops.co.jp") by ftp.linux-mips.org with ESMTP
	id S3465625AbWHBBve (ORCPT <rfc822;linux-mips@linux-mips.org>);
	Wed, 2 Aug 2006 02:51:34 +0100
Received: from topsms.toshiba-tops.co.jp by topsns2.toshiba-tops.co.jp
          via smtpd (for ftp.linux-mips.org [194.74.144.162]) with ESMTP; Wed, 2 Aug 2006 10:51:33 +0900
Received: from topsms.toshiba-tops.co.jp (localhost.localdomain [127.0.0.1])
	by localhost.toshiba-tops.co.jp (Postfix) with ESMTP id 75A9A20458;
	Wed,  2 Aug 2006 10:51:27 +0900 (JST)
Received: from srd2sd.toshiba-tops.co.jp (srd2sd.toshiba-tops.co.jp [172.17.28.2])
	by topsms.toshiba-tops.co.jp (Postfix) with ESMTP id 68A6F203C2;
	Wed,  2 Aug 2006 10:51:27 +0900 (JST)
Received: from localhost (fragile [172.17.28.65])
	by srd2sd.toshiba-tops.co.jp (8.12.10/8.12.10) with ESMTP id k721pQW0018759;
	Wed, 2 Aug 2006 10:51:26 +0900 (JST)
	(envelope-from anemo@mba.ocn.ne.jp)
Date:	Wed, 02 Aug 2006 10:51:26 +0900 (JST)
Message-Id: <20060802.105126.88700874.nemoto@toshiba-tops.co.jp>
To:	vagabon.xyz@gmail.com
Cc:	ralf@linux-mips.org, linux-mips@linux-mips.org
Subject: Re: [PATCH 7/7] Allow unwind_stack() to return ra for leaf function
From:	Atsushi Nemoto <anemo@mba.ocn.ne.jp>
In-Reply-To: <cda58cb80608011238q5b0e0eacje28f921d6e1c7700@mail.gmail.com>
References: <1154424439969-git-send-email-vagabon.xyz@gmail.com>
	<20060802.004848.97296551.anemo@mba.ocn.ne.jp>
	<cda58cb80608011238q5b0e0eacje28f921d6e1c7700@mail.gmail.com>
X-Fingerprint: 6ACA 1623 39BD 9A94 9B1A  B746 CA77 FE94 2874 D52F
X-Pgp-Public-Key: http://wwwkeys.pgp.net/pks/lookup?op=get&search=0x2874D52F
X-Mailer: Mew version 3.3 on Emacs 21.3 / Mule 5.0 (SAKAKI)
Mime-Version: 1.0
Content-Type: Text/Plain; charset=us-ascii
Content-Transfer-Encoding: 7bit
Return-Path: <anemo@mba.ocn.ne.jp>
X-Envelope-To: <"|/home/ecartis/ecartis -s linux-mips"> (uid 0)
X-Orcpt: rfc822;linux-mips@linux-mips.org
Original-Recipient: rfc822;linux-mips@linux-mips.org
X-archive-position: 12155
X-ecartis-version: Ecartis v1.0.0
Sender: linux-mips-bounce@linux-mips.org
Errors-to: linux-mips-bounce@linux-mips.org
X-original-sender: anemo@mba.ocn.ne.jp
Precedence: bulk
X-list: linux-mips

On Tue, 1 Aug 2006 21:38:18 +0200, "Franck Bui-Huu" <vagabon.xyz@gmail.com> wrote:
> Considering (wrongly) a nested function as a leaf one is not a big
> issue. "ra" reg should _always_ store a valid address (nested or not).
> The only (small) impact would be to skip an entry when showing the
> backtrace.

The unwind_stack() uses regs->regs[31] for a leaf, and regs->regs[31]
always holds RA value of _top_ of the stack, not at that level.

---
Atsushi Nemoto

From anemo@mba.ocn.ne.jp Wed Aug  2 02:54:10 2006
Received: with ECARTIS (v1.0.0; list linux-mips); Wed, 02 Aug 2006 02:54:19 +0100 (BST)
Received: from topsns2.toshiba-tops.co.jp ([202.230.225.126]:19618 "EHLO
	topsns2.toshiba-tops.co.jp") by ftp.linux-mips.org with ESMTP
	id S3465625AbWHBByK (ORCPT <rfc822;linux-mips@linux-mips.org>);
	Wed, 2 Aug 2006 02:54:10 +0100
Received: from topsms.toshiba-tops.co.jp by topsns2.toshiba-tops.co.jp
          via smtpd (for ftp.linux-mips.org [194.74.144.162]) with ESMTP; Wed, 2 Aug 2006 10:54:09 +0900
Received: from topsms.toshiba-tops.co.jp (localhost.localdomain [127.0.0.1])
	by localhost.toshiba-tops.co.jp (Postfix) with ESMTP id 6F39520473;
	Wed,  2 Aug 2006 10:54:07 +0900 (JST)
Received: from srd2sd.toshiba-tops.co.jp (srd2sd.toshiba-tops.co.jp [172.17.28.2])
	by topsms.toshiba-tops.co.jp (Postfix) with ESMTP id 5A8DB20468;
	Wed,  2 Aug 2006 10:54:07 +0900 (JST)
Received: from localhost (fragile [172.17.28.65])
	by srd2sd.toshiba-tops.co.jp (8.12.10/8.12.10) with ESMTP id k721s6W0018775;
	Wed, 2 Aug 2006 10:54:06 +0900 (JST)
	(envelope-from anemo@mba.ocn.ne.jp)
Date:	Wed, 02 Aug 2006 10:54:06 +0900 (JST)
Message-Id: <20060802.105406.15248417.nemoto@toshiba-tops.co.jp>
To:	vagabon.xyz@gmail.com
Cc:	ralf@linux-mips.org, linux-mips@linux-mips.org
Subject: Re: [PATCH 6/7] Fix dump_stack()
From:	Atsushi Nemoto <anemo@mba.ocn.ne.jp>
In-Reply-To: <cda58cb80608011043u19621bdev1a2d3e2745adac50@mail.gmail.com>
References: <44CF7506.70106@innova-card.com>
	<20060802.010522.11596989.anemo@mba.ocn.ne.jp>
	<cda58cb80608011043u19621bdev1a2d3e2745adac50@mail.gmail.com>
X-Fingerprint: 6ACA 1623 39BD 9A94 9B1A  B746 CA77 FE94 2874 D52F
X-Pgp-Public-Key: http://wwwkeys.pgp.net/pks/lookup?op=get&search=0x2874D52F
X-Mailer: Mew version 3.3 on Emacs 21.3 / Mule 5.0 (SAKAKI)
Mime-Version: 1.0
Content-Type: Text/Plain; charset=us-ascii
Content-Transfer-Encoding: 7bit
Return-Path: <anemo@mba.ocn.ne.jp>
X-Envelope-To: <"|/home/ecartis/ecartis -s linux-mips"> (uid 0)
X-Orcpt: rfc822;linux-mips@linux-mips.org
Original-Recipient: rfc822;linux-mips@linux-mips.org
X-archive-position: 12156
X-ecartis-version: Ecartis v1.0.0
Sender: linux-mips-bounce@linux-mips.org
Errors-to: linux-mips-bounce@linux-mips.org
X-original-sender: anemo@mba.ocn.ne.jp
Precedence: bulk
X-list: linux-mips

On Tue, 1 Aug 2006 19:43:39 +0200, "Franck Bui-Huu" <vagabon.xyz@gmail.com> wrote:
> BTW what about rename show_trace() into show_raw_backtrace() ?

Looks good for me.
---
Atsushi Nemoto

From vagabon.xyz@gmail.com Wed Aug  2 11:22:03 2006
Received: with ECARTIS (v1.0.0; list linux-mips); Wed, 02 Aug 2006 11:22:16 +0100 (BST)
Received: from nf-out-0910.google.com ([64.233.182.188]:27954 "EHLO
	nf-out-0910.google.com") by ftp.linux-mips.org with ESMTP
	id S8133417AbWHBKWD (ORCPT <rfc822;linux-mips@linux-mips.org>);
	Wed, 2 Aug 2006 11:22:03 +0100
Received: by nf-out-0910.google.com with SMTP id q29so603147nfc
        for <linux-mips@linux-mips.org>; Wed, 02 Aug 2006 03:22:03 -0700 (PDT)
DomainKey-Signature: a=rsa-sha1; q=dns; c=nofws;
        s=beta; d=gmail.com;
        h=received:message-id:date:reply-to:user-agent:mime-version:to:cc:subject:references:in-reply-to:content-type:content-transfer-encoding:from;
        b=XsAcJHQED6JBztLobYbYiQhfxRVFG2cDUWnh3vPU71Ub8ljJMem+A+LSqv1za06LHyip/jxQDQo0Ax5BtPlSnq1ZwAXVj5GGDujb+dgvSeMWU1XNPvUp3v80eJHyq3lmN4PPKGKUcdm78xH6V4XSIHBb43qFCeVBfUEFOZfQ7+U=
Received: by 10.49.8.10 with SMTP id l10mr2000218nfi;
        Wed, 02 Aug 2006 03:22:03 -0700 (PDT)
Received: from ?192.168.0.24? ( [194.3.162.233])
        by mx.gmail.com with ESMTP id n23sm1333361nfc.2006.08.02.03.22.01;
        Wed, 02 Aug 2006 03:22:02 -0700 (PDT)
Message-ID: <44D07C97.2040008@innova-card.com>
Date:	Wed, 02 Aug 2006 12:21:11 +0200
Reply-To: Franck <vagabon.xyz@gmail.com>
User-Agent: Thunderbird 1.5.0.4 (X11/20060614)
MIME-Version: 1.0
To:	Atsushi Nemoto <anemo@mba.ocn.ne.jp>
CC:	vagabon.xyz@gmail.com, ralf@linux-mips.org,
	linux-mips@linux-mips.org
Subject: Re: [PATCH 7/7] Allow unwind_stack() to return ra for leaf function
References: <1154424439969-git-send-email-vagabon.xyz@gmail.com>	<20060802.004848.97296551.anemo@mba.ocn.ne.jp>	<cda58cb80608011238q5b0e0eacje28f921d6e1c7700@mail.gmail.com> <20060802.105126.88700874.nemoto@toshiba-tops.co.jp>
In-Reply-To: <20060802.105126.88700874.nemoto@toshiba-tops.co.jp>
Content-Type: text/plain; charset=ISO-8859-1
Content-Transfer-Encoding: 7bit
From:	Franck Bui-Huu <vagabon.xyz@gmail.com>
Return-Path: <vagabon.xyz@gmail.com>
X-Envelope-To: <"|/home/ecartis/ecartis -s linux-mips"> (uid 0)
X-Orcpt: rfc822;linux-mips@linux-mips.org
Original-Recipient: rfc822;linux-mips@linux-mips.org
X-archive-position: 12157
X-ecartis-version: Ecartis v1.0.0
Sender: linux-mips-bounce@linux-mips.org
Errors-to: linux-mips-bounce@linux-mips.org
X-original-sender: vagabon.xyz@gmail.com
Precedence: bulk
X-list: linux-mips

Atsushi Nemoto wrote:
> On Tue, 1 Aug 2006 21:38:18 +0200, "Franck Bui-Huu" <vagabon.xyz@gmail.com> wrote:
>> Considering (wrongly) a nested function as a leaf one is not a big
>> issue. "ra" reg should _always_ store a valid address (nested or not).
>> The only (small) impact would be to skip an entry when showing the
>> backtrace.
> 
> The unwind_stack() uses regs->regs[31] for a leaf, and regs->regs[31]
> always holds RA value of _top_ of the stack, not at that level.
> 

does something like this on top of this patch make you feel better ?

-- >8 --

diff --git a/arch/mips/kernel/process.c b/arch/mips/kernel/process.c
index 4ceddfa..8a9db45 100644
--- a/arch/mips/kernel/process.c
+++ b/arch/mips/kernel/process.c
@@ -480,7 +480,13 @@ unsigned long unwind_stack(struct task_s
 		return 0;
 
 	if (leaf)
-		pc = regs->regs[31];
+		/*
+		 * For some extreme cases, get_frame_info() can
+		 * consider wrongly a nested function as a leaf
+		 * one. In that cases avoid to return always the
+		 * same value.
+		 */
+		pc = pc != regs->regs[31] ? regs->regs[31] : 0;
 	else
 		pc = (*sp)[info.pc_offset];
 

From anemo@mba.ocn.ne.jp Wed Aug  2 12:25:46 2006
Received: with ECARTIS (v1.0.0; list linux-mips); Wed, 02 Aug 2006 12:25:58 +0100 (BST)
Received: from topsns2.toshiba-tops.co.jp ([202.230.225.126]:4641 "EHLO
	topsns2.toshiba-tops.co.jp") by ftp.linux-mips.org with ESMTP
	id S8133447AbWHBLZq (ORCPT <rfc822;linux-mips@linux-mips.org>);
	Wed, 2 Aug 2006 12:25:46 +0100
Received: from topsms.toshiba-tops.co.jp by topsns2.toshiba-tops.co.jp
          via smtpd (for ftp.linux-mips.org [194.74.144.162]) with ESMTP; Wed, 2 Aug 2006 20:25:43 +0900
Received: from topsms.toshiba-tops.co.jp (localhost.localdomain [127.0.0.1])
	by localhost.toshiba-tops.co.jp (Postfix) with ESMTP id 39A56203CA;
	Wed,  2 Aug 2006 20:25:41 +0900 (JST)
Received: from srd2sd.toshiba-tops.co.jp (srd2sd.toshiba-tops.co.jp [172.17.28.2])
	by topsms.toshiba-tops.co.jp (Postfix) with ESMTP id 2DBE81FF0A;
	Wed,  2 Aug 2006 20:25:41 +0900 (JST)
Received: from localhost (fragile [172.17.28.65])
	by srd2sd.toshiba-tops.co.jp (8.12.10/8.12.10) with ESMTP id k72BPeW0020897;
	Wed, 2 Aug 2006 20:25:40 +0900 (JST)
	(envelope-from anemo@mba.ocn.ne.jp)
Date:	Wed, 02 Aug 2006 20:25:40 +0900 (JST)
Message-Id: <20060802.202540.10544424.nemoto@toshiba-tops.co.jp>
To:	vagabon.xyz@gmail.com
Cc:	ralf@linux-mips.org, linux-mips@linux-mips.org
Subject: Re: [PATCH 7/7] Allow unwind_stack() to return ra for leaf function
From:	Atsushi Nemoto <anemo@mba.ocn.ne.jp>
In-Reply-To: <44D07C97.2040008@innova-card.com>
References: <cda58cb80608011238q5b0e0eacje28f921d6e1c7700@mail.gmail.com>
	<20060802.105126.88700874.nemoto@toshiba-tops.co.jp>
	<44D07C97.2040008@innova-card.com>
X-Fingerprint: 6ACA 1623 39BD 9A94 9B1A  B746 CA77 FE94 2874 D52F
X-Pgp-Public-Key: http://wwwkeys.pgp.net/pks/lookup?op=get&search=0x2874D52F
X-Mailer: Mew version 3.3 on Emacs 21.3 / Mule 5.0 (SAKAKI)
Mime-Version: 1.0
Content-Type: Text/Plain; charset=us-ascii
Content-Transfer-Encoding: 7bit
Return-Path: <anemo@mba.ocn.ne.jp>
X-Envelope-To: <"|/home/ecartis/ecartis -s linux-mips"> (uid 0)
X-Orcpt: rfc822;linux-mips@linux-mips.org
Original-Recipient: rfc822;linux-mips@linux-mips.org
X-archive-position: 12158
X-ecartis-version: Ecartis v1.0.0
Sender: linux-mips-bounce@linux-mips.org
Errors-to: linux-mips-bounce@linux-mips.org
X-original-sender: anemo@mba.ocn.ne.jp
Precedence: bulk
X-list: linux-mips

On Wed, 02 Aug 2006 12:21:11 +0200, Franck Bui-Huu <vagabon.xyz@gmail.com> wrote:
> does something like this on top of this patch make you feel better ?
> 
> -- >8 --
> 
> diff --git a/arch/mips/kernel/process.c b/arch/mips/kernel/process.c
> index 4ceddfa..8a9db45 100644
> --- a/arch/mips/kernel/process.c
> +++ b/arch/mips/kernel/process.c
> @@ -480,7 +480,13 @@ unsigned long unwind_stack(struct task_s
>  		return 0;
>  
>  	if (leaf)
> -		pc = regs->regs[31];
> +		/*
> +		 * For some extreme cases, get_frame_info() can
> +		 * consider wrongly a nested function as a leaf
> +		 * one. In that cases avoid to return always the
> +		 * same value.
> +		 */
> +		pc = pc != regs->regs[31] ? regs->regs[31] : 0;

Yes, it should be safe.  But still I'm not sure unwind_stack() should
take "regs" as its argument...

---
Atsushi Nemoto

From anemo@mba.ocn.ne.jp Wed Aug  2 12:52:35 2006
Received: with ECARTIS (v1.0.0; list linux-mips); Wed, 02 Aug 2006 12:52:44 +0100 (BST)
Received: from topsns2.toshiba-tops.co.jp ([202.230.225.126]:47689 "EHLO
	topsns2.toshiba-tops.co.jp") by ftp.linux-mips.org with ESMTP
	id S8133472AbWHBLwf (ORCPT <rfc822;linux-mips@linux-mips.org>);
	Wed, 2 Aug 2006 12:52:35 +0100
Received: from topsms.toshiba-tops.co.jp by topsns2.toshiba-tops.co.jp
          via smtpd (for ftp.linux-mips.org [194.74.144.162]) with ESMTP; Wed, 2 Aug 2006 20:52:34 +0900
Received: from topsms.toshiba-tops.co.jp (localhost.localdomain [127.0.0.1])
	by localhost.toshiba-tops.co.jp (Postfix) with ESMTP id 9DA7F20463;
	Wed,  2 Aug 2006 20:52:32 +0900 (JST)
Received: from srd2sd.toshiba-tops.co.jp (srd2sd.toshiba-tops.co.jp [172.17.28.2])
	by topsms.toshiba-tops.co.jp (Postfix) with ESMTP id 8A7A32040D;
	Wed,  2 Aug 2006 20:52:32 +0900 (JST)
Received: from localhost (fragile [172.17.28.65])
	by srd2sd.toshiba-tops.co.jp (8.12.10/8.12.10) with ESMTP id k72BqVW0020977;
	Wed, 2 Aug 2006 20:52:32 +0900 (JST)
	(envelope-from anemo@mba.ocn.ne.jp)
Date:	Wed, 02 Aug 2006 20:52:31 +0900 (JST)
Message-Id: <20060802.205231.02106717.nemoto@toshiba-tops.co.jp>
To:	linux-mips@linux-mips.org
Cc:	ralf@linux-mips.org, vagabon.xyz@gmail.com
Subject: [PATCH] fix stack range checking in unwind_stack()
From:	Atsushi Nemoto <anemo@mba.ocn.ne.jp>
X-Fingerprint: 6ACA 1623 39BD 9A94 9B1A  B746 CA77 FE94 2874 D52F
X-Pgp-Public-Key: http://wwwkeys.pgp.net/pks/lookup?op=get&search=0x2874D52F
X-Mailer: Mew version 3.3 on Emacs 21.3 / Mule 5.0 (SAKAKI)
Mime-Version: 1.0
Content-Type: Text/Plain; charset=us-ascii
Content-Transfer-Encoding: 7bit
Return-Path: <anemo@mba.ocn.ne.jp>
X-Envelope-To: <"|/home/ecartis/ecartis -s linux-mips"> (uid 0)
X-Orcpt: rfc822;linux-mips@linux-mips.org
Original-Recipient: rfc822;linux-mips@linux-mips.org
X-archive-position: 12159
X-ecartis-version: Ecartis v1.0.0
Sender: linux-mips-bounce@linux-mips.org
Errors-to: linux-mips-bounce@linux-mips.org
X-original-sender: anemo@mba.ocn.ne.jp
Precedence: bulk
X-list: linux-mips

Remove wrong division by sizeof(long).

Signed-off-by: Atsushi Nemoto <anemo@mba.ocn.ne.jp>

diff --git a/arch/mips/kernel/process.c b/arch/mips/kernel/process.c
index 8709a46..9f367a0 100644
--- a/arch/mips/kernel/process.c
+++ b/arch/mips/kernel/process.c
@@ -472,7 +472,7 @@ unsigned long unwind_stack(struct task_s
 		return 0;
 	}
 	if ((unsigned long)*sp < stack_page ||
-	    (unsigned long)*sp + info.frame_size / sizeof(long) >
+	    (unsigned long)*sp + info.frame_size >
 	    stack_page + THREAD_SIZE - 32)
 		return 0;
 

From vagabon.xyz@gmail.com Wed Aug  2 14:09:15 2006
Received: with ECARTIS (v1.0.0; list linux-mips); Wed, 02 Aug 2006 14:09:25 +0100 (BST)
Received: from nf-out-0910.google.com ([64.233.182.188]:17078 "EHLO
	nf-out-0910.google.com") by ftp.linux-mips.org with ESMTP
	id S8133453AbWHBNJP (ORCPT <rfc822;linux-mips@linux-mips.org>);
	Wed, 2 Aug 2006 14:09:15 +0100
Received: by nf-out-0910.google.com with SMTP id q29so648439nfc
        for <linux-mips@linux-mips.org>; Wed, 02 Aug 2006 06:08:52 -0700 (PDT)
DomainKey-Signature: a=rsa-sha1; q=dns; c=nofws;
        s=beta; d=gmail.com;
        h=received:message-id:date:reply-to:user-agent:mime-version:to:cc:subject:references:in-reply-to:content-type:content-transfer-encoding:from;
        b=KFNItiNCC85KpgX/cQJGIMMBNSlIk9VSU5sE1T2+nAItbeG2aiDlkwVkIdHCzFY/OaBBFPjFMX2+ME1ALZMOAr0mvzXs1VDBtf4CgF9mogEj59NtnERk2b6anhOBKLE9D0o8f1olPporLkxf65jWNcT/ZnOO2MLCKzlDTwNxPPs=
Received: by 10.49.21.8 with SMTP id y8mr2119831nfi;
        Wed, 02 Aug 2006 06:08:52 -0700 (PDT)
Received: from ?192.168.0.24? ( [194.3.162.233])
        by mx.gmail.com with ESMTP id n23sm1471470nfc.2006.08.02.06.08.51;
        Wed, 02 Aug 2006 06:08:52 -0700 (PDT)
Message-ID: <44D0A3B0.40601@innova-card.com>
Date:	Wed, 02 Aug 2006 15:08:00 +0200
Reply-To: Franck <vagabon.xyz@gmail.com>
User-Agent: Thunderbird 1.5.0.4 (X11/20060614)
MIME-Version: 1.0
To:	Atsushi Nemoto <anemo@mba.ocn.ne.jp>
CC:	vagabon.xyz@gmail.com, ralf@linux-mips.org,
	linux-mips@linux-mips.org
Subject: Re: [PATCH 7/7] Allow unwind_stack() to return ra for leaf function
References: <cda58cb80608011238q5b0e0eacje28f921d6e1c7700@mail.gmail.com>	<20060802.105126.88700874.nemoto@toshiba-tops.co.jp>	<44D07C97.2040008@innova-card.com> <20060802.202540.10544424.nemoto@toshiba-tops.co.jp>
In-Reply-To: <20060802.202540.10544424.nemoto@toshiba-tops.co.jp>
Content-Type: text/plain; charset=ISO-8859-1
Content-Transfer-Encoding: 7bit
From:	Franck Bui-Huu <vagabon.xyz@gmail.com>
Return-Path: <vagabon.xyz@gmail.com>
X-Envelope-To: <"|/home/ecartis/ecartis -s linux-mips"> (uid 0)
X-Orcpt: rfc822;linux-mips@linux-mips.org
Original-Recipient: rfc822;linux-mips@linux-mips.org
X-archive-position: 12160
X-ecartis-version: Ecartis v1.0.0
Sender: linux-mips-bounce@linux-mips.org
Errors-to: linux-mips-bounce@linux-mips.org
X-original-sender: vagabon.xyz@gmail.com
Precedence: bulk
X-list: linux-mips

Atsushi Nemoto wrote:
> On Wed, 02 Aug 2006 12:21:11 +0200, Franck Bui-Huu <vagabon.xyz@gmail.com> wrote:
>> does something like this on top of this patch make you feel better ?
>>
>> -- >8 --
>>
>> diff --git a/arch/mips/kernel/process.c b/arch/mips/kernel/process.c
>> index 4ceddfa..8a9db45 100644
>> --- a/arch/mips/kernel/process.c
>> +++ b/arch/mips/kernel/process.c
>> @@ -480,7 +480,13 @@ unsigned long unwind_stack(struct task_s
>>  		return 0;
>>  
>>  	if (leaf)
>> -		pc = regs->regs[31];
>> +		/*
>> +		 * For some extreme cases, get_frame_info() can
>> +		 * consider wrongly a nested function as a leaf
>> +		 * one. In that cases avoid to return always the
>> +		 * same value.
>> +		 */
>> +		pc = pc != regs->regs[31] ? regs->regs[31] : 0;
> 
> Yes, it should be safe.  But still I'm not sure unwind_stack() should
> take "regs" as its argument...
> 

does this updated patch make you really happy ? If so I'll resend the whole
updated patchset.

-- >8 --
Subject: Improve unwind_stack()

This patch allows unwind_stack() to return ra for leaf function.
But it tries to detects cases where get_frame_info() wrongly
consider nested function as a leaf one.

It also pass 'unsinged long *sp' instead of 'unsigned long **sp'
as second parameter. The code looks cleaner.

Signed-off-by: Franck Bui-Huu <vagabon.xyz@gmail.com>
---
 arch/mips/kernel/process.c |   35 ++++++++++++++++++++++-------------
 arch/mips/kernel/traps.c   |   24 ++++++++++++------------
 2 files changed, 34 insertions(+), 25 deletions(-)

diff --git a/arch/mips/kernel/process.c b/arch/mips/kernel/process.c
index 309bfa4..951bf9c 100644
--- a/arch/mips/kernel/process.c
+++ b/arch/mips/kernel/process.c
@@ -448,15 +448,16 @@ #endif
 }
 
 #ifdef CONFIG_KALLSYMS
-/* used by show_frametrace() */
-unsigned long unwind_stack(struct task_struct *task,
-			   unsigned long **sp, unsigned long pc)
+/* used by show_backtrace() */
+unsigned long unwind_stack(struct task_struct *task, unsigned long *sp,
+			   unsigned long pc, unsigned long ra)
 {
 	unsigned long stack_page;
 	struct mips_frame_info info;
 	char *modname;
 	char namebuf[KSYM_NAME_LEN + 1];
 	unsigned long size, ofs;
+	int leaf;
 
 	stack_page = (unsigned long)task_stack_page(task);
 	if (!stack_page)
@@ -469,18 +470,26 @@ unsigned long unwind_stack(struct task_s
 
 	info.func = (void *)(pc - ofs);
 	info.func_size = ofs;	/* analyze from start to ofs */
-	if (get_frame_info(&info)) {
-		/* leaf or unknown */
-		*sp += info.frame_size / sizeof(long);
+	leaf = get_frame_info(&info);
+	if (leaf < 0)
 		return 0;
-	}
-	if ((unsigned long)*sp < stack_page ||
-	    (unsigned long)*sp + info.frame_size / sizeof(long) >
-	    stack_page + THREAD_SIZE - 32)
+
+	if (*sp < stack_page ||
+	    *sp + info.frame_size > stack_page + THREAD_SIZE - 32)
 		return 0;
 
-	pc = (*sp)[info.pc_offset];
-	*sp += info.frame_size / sizeof(long);
-	return pc;
+	if (leaf)
+		/*
+		 * For some extreme cases, get_frame_info() can
+		 * consider wrongly a nested function as a leaf
+		 * one. In that cases avoid to return always the
+		 * same value.
+		 */
+		pc = pc != ra ? ra : 0;
+	else
+		pc = ((unsigned long *)(*sp))[info.pc_offset];
+
+	*sp += info.frame_size;
+	return __kernel_text_address(pc) ? pc : 0;
 }
 #endif
diff --git a/arch/mips/kernel/traps.c b/arch/mips/kernel/traps.c
index 303f008..ab77034 100644
--- a/arch/mips/kernel/traps.c
+++ b/arch/mips/kernel/traps.c
@@ -74,8 +74,9 @@ void (*board_ejtag_handler_setup)(void);
 void (*board_bind_eic_interrupt)(int irq, int regset);
 
 
-static void show_raw_backtrace(unsigned long *sp)
+static void show_raw_backtrace(unsigned long reg29)
 {
+	unsigned long *sp = (unsigned long *)reg29;
 	unsigned long addr;
 
 	printk("Call Trace:");
@@ -99,30 +100,29 @@ static int __init set_raw_show_trace(cha
 }
 __setup("raw_show_trace", set_raw_show_trace);
 
-extern unsigned long unwind_stack(struct task_struct *task,
-				  unsigned long **sp, unsigned long pc);
+extern unsigned long unwind_stack(struct task_struct *task, unsigned long *sp,
+				  unsigned long pc, unsigned long ra);
+
 static void show_backtrace(struct task_struct *task, struct pt_regs *regs)
 {
-	unsigned long *sp = (long *)regs->regs[29];
+	unsigned long sp = regs->regs[29];
+	unsigned long ra = regs->regs[31];
 	unsigned long pc = regs->cp0_epc;
-	int top = 1;
 
 	if (raw_show_trace || !__kernel_text_address(pc)) {
 		show_raw_backtrace(sp);
 		return;
 	}
 	printk("Call Trace:\n");
-	while (__kernel_text_address(pc)) {
+	do {
 		print_ip_sym(pc);
-		pc = unwind_stack(task, &sp, pc);
-		if (top && pc == 0)
-			pc = regs->regs[31];	/* leaf? */
-		top = 0;
-	}
+		pc = unwind_stack(task, &sp, pc, ra);
+		ra = 0;
+	} while (pc);
 	printk("\n");
 }
 #else
-#define show_backtrace(task, r) show_raw_backtrace((long *)(r)->regs[29]);
+#define show_backtrace(task, r) show_raw_backtrace((r)->regs[29]);
 #endif
 
 /*
-- 
1.4.2.rc2


From anemo@mba.ocn.ne.jp Wed Aug  2 17:18:36 2006
Received: with ECARTIS (v1.0.0; list linux-mips); Wed, 02 Aug 2006 17:18:52 +0100 (BST)
Received: from p549F69D5.dip.t-dialin.net ([84.159.105.213]:44511 "EHLO
	p549F69D5.dip.t-dialin.net") by ftp.linux-mips.org with ESMTP
	id S8133493AbWHBQSc (ORCPT <rfc822;linux-mips@linux-mips.org>);
	Wed, 2 Aug 2006 17:18:32 +0100
Received: from mba.ocn.ne.jp ([210.190.142.172]:60368 "HELO smtp.mba.ocn.ne.jp")
	by lappi.linux-mips.net with SMTP id S1099951AbWHBP6j (ORCPT
	<rfc822;linux-mips@linux-mips.org>); Wed, 2 Aug 2006 17:58:39 +0200
Received: from localhost (p8096-ipad213funabasi.chiba.ocn.ne.jp [124.85.73.96])
	by smtp.mba.ocn.ne.jp (Postfix) with ESMTP
	id 2F6F884EC; Thu,  3 Aug 2006 00:58:26 +0900 (JST)
Date:	Thu, 03 Aug 2006 01:00:00 +0900 (JST)
Message-Id: <20060803.010000.25909906.anemo@mba.ocn.ne.jp>
To:	vagabon.xyz@gmail.com
Cc:	ralf@linux-mips.org, linux-mips@linux-mips.org
Subject: Re: [PATCH 7/7] Allow unwind_stack() to return ra for leaf function
From:	Atsushi Nemoto <anemo@mba.ocn.ne.jp>
In-Reply-To: <44D0A3B0.40601@innova-card.com>
References: <44D07C97.2040008@innova-card.com>
	<20060802.202540.10544424.nemoto@toshiba-tops.co.jp>
	<44D0A3B0.40601@innova-card.com>
X-Fingerprint: 6ACA 1623 39BD 9A94 9B1A  B746 CA77 FE94 2874 D52F
X-Pgp-Public-Key: http://wwwkeys.pgp.net/pks/lookup?op=get&search=0x2874D52F
X-Mailer: Mew version 3.3 on Emacs 21.4 / Mule 5.0 (SAKAKI)
Mime-Version: 1.0
Content-Type: Text/Plain; charset=us-ascii
Content-Transfer-Encoding: 7bit
Return-Path: <anemo@mba.ocn.ne.jp>
X-Envelope-To: <"|/home/ecartis/ecartis -s linux-mips"> (uid 0)
X-Orcpt: rfc822;linux-mips@linux-mips.org
Original-Recipient: rfc822;linux-mips@linux-mips.org
X-archive-position: 12161
X-ecartis-version: Ecartis v1.0.0
Sender: linux-mips-bounce@linux-mips.org
Errors-to: linux-mips-bounce@linux-mips.org
X-original-sender: anemo@mba.ocn.ne.jp
Precedence: bulk
X-list: linux-mips

On Wed, 02 Aug 2006 15:08:00 +0200, Franck Bui-Huu <vagabon.xyz@gmail.com> wrote:
> does this updated patch make you really happy ? If so I'll resend the whole
> updated patchset.

Yes, looks good for me.

Just one comment: no need to do "pc = pc != ra ? ra : 0" anymore.
Just "pc = ra" is enough, isn't it?

---
Atsushi Nemoto

From vagabon.xyz@gmail.com Wed Aug  2 17:57:28 2006
Received: with ECARTIS (v1.0.0; list linux-mips); Wed, 02 Aug 2006 17:57:37 +0100 (BST)
Received: from nf-out-0910.google.com ([64.233.182.191]:60023 "EHLO
	nf-out-0910.google.com") by ftp.linux-mips.org with ESMTP
	id S8133453AbWHBQ51 (ORCPT <rfc822;linux-mips@linux-mips.org>);
	Wed, 2 Aug 2006 17:57:27 +0100
Received: by nf-out-0910.google.com with SMTP id q29so713901nfc
        for <linux-mips@linux-mips.org>; Wed, 02 Aug 2006 09:57:27 -0700 (PDT)
DomainKey-Signature: a=rsa-sha1; q=dns; c=nofws;
        s=beta; d=gmail.com;
        h=received:message-id:date:reply-to:user-agent:mime-version:to:cc:subject:references:in-reply-to:content-type:content-transfer-encoding:from;
        b=q8TrG9gFL+2C8ecMCVkwi4AUuA3yC6IoHL2PzVM8SAemhLvpeJSsPZgHvW6IZQ0s/OKdPoUz6+so/yHSwaZMIhJvEnxd2h/d+542JJWdWwOQqAD+RFGA07++6LvFt239BNZy/bquIypUwlndD0wFGSdouSFnfYQ/X71wH8wv5Cs=
Received: by 10.49.43.11 with SMTP id v11mr2527341nfj;
        Wed, 02 Aug 2006 09:57:26 -0700 (PDT)
Received: from ?192.168.0.24? ( [194.3.162.233])
        by mx.gmail.com with ESMTP id l27sm149030nfa.2006.08.02.09.57.25;
        Wed, 02 Aug 2006 09:57:26 -0700 (PDT)
Message-ID: <44D0D942.5050809@innova-card.com>
Date:	Wed, 02 Aug 2006 18:56:34 +0200
Reply-To: Franck <vagabon.xyz@gmail.com>
User-Agent: Thunderbird 1.5.0.4 (X11/20060614)
MIME-Version: 1.0
To:	Atsushi Nemoto <anemo@mba.ocn.ne.jp>
CC:	vagabon.xyz@gmail.com, ralf@linux-mips.org,
	linux-mips@linux-mips.org
Subject: Re: [PATCH 7/7] Allow unwind_stack() to return ra for leaf function
References: <44D07C97.2040008@innova-card.com>	<20060802.202540.10544424.nemoto@toshiba-tops.co.jp>	<44D0A3B0.40601@innova-card.com> <20060803.010000.25909906.anemo@mba.ocn.ne.jp>
In-Reply-To: <20060803.010000.25909906.anemo@mba.ocn.ne.jp>
Content-Type: text/plain; charset=ISO-8859-1
Content-Transfer-Encoding: 7bit
From:	Franck Bui-Huu <vagabon.xyz@gmail.com>
Return-Path: <vagabon.xyz@gmail.com>
X-Envelope-To: <"|/home/ecartis/ecartis -s linux-mips"> (uid 0)
X-Orcpt: rfc822;linux-mips@linux-mips.org
Original-Recipient: rfc822;linux-mips@linux-mips.org
X-archive-position: 12162
X-ecartis-version: Ecartis v1.0.0
Sender: linux-mips-bounce@linux-mips.org
Errors-to: linux-mips-bounce@linux-mips.org
X-original-sender: vagabon.xyz@gmail.com
Precedence: bulk
X-list: linux-mips

Atsushi Nemoto wrote:
> On Wed, 02 Aug 2006 15:08:00 +0200, Franck Bui-Huu <vagabon.xyz@gmail.com> wrote:
>> does this updated patch make you really happy ? If so I'll resend the whole
>> updated patchset.
> 
> Yes, looks good for me.
> 
> Just one comment: no need to do "pc = pc != ra ? ra : 0" anymore.
> Just "pc = ra" is enough, isn't it?
> 

Well I let it just for cases where the caller does not reset ra after the first
call. It should be safter. But I can remove it if you want.

		Franck

From kommu@hotmail.com Wed Aug  2 23:11:42 2006
Received: with ECARTIS (v1.0.0; list linux-mips); Wed, 02 Aug 2006 23:11:52 +0100 (BST)
Received: from sj-iport-6.cisco.com ([171.71.176.117]:49973 "EHLO
	sj-iport-6.cisco.com") by ftp.linux-mips.org with ESMTP
	id S8133677AbWHBWLm (ORCPT <rfc822;linux-mips@linux-mips.org>);
	Wed, 2 Aug 2006 23:11:42 +0100
Received: from sj-dkim-2.cisco.com ([171.71.179.186])
  by sj-iport-6.cisco.com with ESMTP; 02 Aug 2006 15:11:36 -0700
Received: from sj-core-1.cisco.com (sj-core-1.cisco.com [171.71.177.237])
	by sj-dkim-2.cisco.com (8.12.11.20060308/8.12.11) with ESMTP id k72MBaSC018138
	for <linux-mips@linux-mips.org>; Wed, 2 Aug 2006 15:11:36 -0700
Received: from xbh-sjc-211.amer.cisco.com (xbh-sjc-211.cisco.com [171.70.151.144])
	by sj-core-1.cisco.com (8.12.10/8.12.6) with ESMTP id k72MBZJi029223
	for <linux-mips@linux-mips.org>; Wed, 2 Aug 2006 15:11:36 -0700 (PDT)
Received: from xfe-sjc-212.amer.cisco.com ([171.70.151.187]) by xbh-sjc-211.amer.cisco.com with Microsoft SMTPSVC(6.0.3790.1830);
	 Wed, 2 Aug 2006 15:11:35 -0700
Received: from [171.69.51.42] ([171.69.51.42]) by xfe-sjc-212.amer.cisco.com with Microsoft SMTPSVC(6.0.3790.1830);
	 Wed, 2 Aug 2006 15:11:35 -0700
Message-ID: <44D12317.7090002@hotmail.com>
Date:	Wed, 02 Aug 2006 15:11:35 -0700
From:	Srinivas Kommu <kommu@hotmail.com>
User-Agent: Thunderbird 1.4 (Windows/20050908)
MIME-Version: 1.0
To:	linux-mips@linux-mips.org
Subject: highmem questions
Content-Type: text/plain; charset=ISO-8859-1; format=flowed
Content-Transfer-Encoding: 7bit
X-OriginalArrivalTime: 02 Aug 2006 22:11:35.0600 (UTC) FILETIME=[9E631300:01C6B680]
Authentication-Results:	sj-dkim-2.cisco.com; header.From=kommu@hotmail.com; dkim=neutral
Return-Path: <kommu@hotmail.com>
X-Envelope-To: <"|/home/ecartis/ecartis -s linux-mips"> (uid 0)
X-Orcpt: rfc822;linux-mips@linux-mips.org
Original-Recipient: rfc822;linux-mips@linux-mips.org
X-archive-position: 12163
X-ecartis-version: Ecartis v1.0.0
Sender: linux-mips-bounce@linux-mips.org
Errors-to: linux-mips-bounce@linux-mips.org
X-original-sender: kommu@hotmail.com
Precedence: bulk
X-list: linux-mips

1. If I have 1 gig physical memory and CONFIG_HIGHMEM disabled, would 
the user processes be able to see the high memory?
  Only 256 meg (this is on BCM1250; so 256 meg is expected) shows up in 
/proc/meminfo and I couldn't malloc more than that much from user processes.

2. With highmem enabled, is there a penalty to the user processes? From 
what I understood, highmem mappings are needed for the kernel to access 
that memory. For the pages belonging to user processes, does it still 
use pkmaps?

3. How do I measure the penalty of highmem on kernel modules? Since the 
code and data for modules resides in highmem, the kernel has to 
constantly map and unmap while running inside the modules? Is there a 
way to quantify the overhead of running with highmem enabled versus not?

thanks in advance!
Srini

--
kommu@hotmail.com

From deepak@microview-tech.com Thu Aug  3 04:23:27 2006
Received: with ECARTIS (v1.0.0; list linux-mips); Thu, 03 Aug 2006 04:23:36 +0100 (BST)
Received: from mail2.stigp.com ([203.126.82.109]:19776 "EHLO mail2.stigp.com")
	by ftp.linux-mips.org with ESMTP id S8133359AbWHCDX1 convert rfc822-to-8bit
	(ORCPT <rfc822;linux-mips@linux-mips.org>);
	Thu, 3 Aug 2006 04:23:27 +0100
Received: from unknown (HELO ASTIEXCHG.stigp.com) ([192.168.2.250])
  by mail2.stigp.com with ESMTP; 03 Aug 2006 11:24:18 +0800
X-BrightmailFiltered: true
X-Brightmail-Tracker: AAAAAQAAA+k=
X-IronPort-AV: i="4.07,206,1151856000"; 
   d="scan'208"; a="4054141:sNHT24366884"
Content-class: urn:content-classes:message
MIME-Version: 1.0
X-MimeOLE: Produced By Microsoft Exchange V6.5.7226.0
Subject: joining 
Date:	Thu, 3 Aug 2006 11:22:27 +0800
Message-ID: <532CBC607BEC4642A89BB3B9648A70961BEDDC@ASTIEXCHG.stigp.com>
X-MS-Has-Attach: 
X-MS-TNEF-Correlator: 
Thread-Topic: joining 
Thread-Index: Aca2rAwGddrzp9hBRV6nBiUNvgZGWg==
From:	"Deepak C.P" <deepak@microview-tech.com>
To:	<linux-mips@linux-mips.org>
Content-Type: text/plain; charset="iso-8859-1"
Content-Transfer-Encoding: 8BIT
Return-Path: <deepak@microview-tech.com>
X-Envelope-To: <"|/home/ecartis/ecartis -s linux-mips"> (uid 0)
X-Orcpt: rfc822;linux-mips@linux-mips.org
Original-Recipient: rfc822;linux-mips@linux-mips.org
X-archive-position: 12164
X-ecartis-version: Ecartis v1.0.0
Sender: linux-mips-bounce@linux-mips.org
Errors-to: linux-mips-bounce@linux-mips.org
X-original-sender: deepak@microview-tech.com
Precedence: bulk
X-list: linux-mips


sir i am working in Linux platform and interested to join in this group 
This email and all contents are subject to the following disclaimer:

"The information transmitted in this  message is intended only for the person or entity to 
which it is addressed and may contain confidential and/or privileged material.  Any review,
retransmission,dissemination or other use of,or taking of any action in reliance upon,this 
information by persons or entities other than the intended recipient is prohibited. If you 
received this in error, please contact the sender and destroy this message and all copies."


From anemo@mba.ocn.ne.jp Thu Aug  3 05:52:35 2006
Received: with ECARTIS (v1.0.0; list linux-mips); Thu, 03 Aug 2006 05:52:44 +0100 (BST)
Received: from topsns2.toshiba-tops.co.jp ([202.230.225.126]:50204 "EHLO
	topsns2.toshiba-tops.co.jp") by ftp.linux-mips.org with ESMTP
	id S8133359AbWHCEwf (ORCPT <rfc822;linux-mips@linux-mips.org>);
	Thu, 3 Aug 2006 05:52:35 +0100
Received: from topsms.toshiba-tops.co.jp by topsns2.toshiba-tops.co.jp
          via smtpd (for ftp.linux-mips.org [194.74.144.162]) with ESMTP; Thu, 3 Aug 2006 13:52:34 +0900
Received: from topsms.toshiba-tops.co.jp (localhost.localdomain [127.0.0.1])
	by localhost.toshiba-tops.co.jp (Postfix) with ESMTP id B2ECD20474;
	Thu,  3 Aug 2006 13:52:32 +0900 (JST)
Received: from srd2sd.toshiba-tops.co.jp (srd2sd.toshiba-tops.co.jp [172.17.28.2])
	by topsms.toshiba-tops.co.jp (Postfix) with ESMTP id 9EB402045A;
	Thu,  3 Aug 2006 13:52:32 +0900 (JST)
Received: from localhost (fragile [172.17.28.65])
	by srd2sd.toshiba-tops.co.jp (8.12.10/8.12.10) with ESMTP id k734qVW0024170;
	Thu, 3 Aug 2006 13:52:32 +0900 (JST)
	(envelope-from anemo@mba.ocn.ne.jp)
Date:	Thu, 03 Aug 2006 13:52:31 +0900 (JST)
Message-Id: <20060803.135231.130240551.nemoto@toshiba-tops.co.jp>
To:	vagabon.xyz@gmail.com
Cc:	ralf@linux-mips.org, linux-mips@linux-mips.org
Subject: Re: [PATCH 7/7] Allow unwind_stack() to return ra for leaf function
From:	Atsushi Nemoto <anemo@mba.ocn.ne.jp>
In-Reply-To: <44D0D942.5050809@innova-card.com>
References: <44D0A3B0.40601@innova-card.com>
	<20060803.010000.25909906.anemo@mba.ocn.ne.jp>
	<44D0D942.5050809@innova-card.com>
X-Fingerprint: 6ACA 1623 39BD 9A94 9B1A  B746 CA77 FE94 2874 D52F
X-Pgp-Public-Key: http://wwwkeys.pgp.net/pks/lookup?op=get&search=0x2874D52F
X-Mailer: Mew version 3.3 on Emacs 21.3 / Mule 5.0 (SAKAKI)
Mime-Version: 1.0
Content-Type: Text/Plain; charset=us-ascii
Content-Transfer-Encoding: 7bit
Return-Path: <anemo@mba.ocn.ne.jp>
X-Envelope-To: <"|/home/ecartis/ecartis -s linux-mips"> (uid 0)
X-Orcpt: rfc822;linux-mips@linux-mips.org
Original-Recipient: rfc822;linux-mips@linux-mips.org
X-archive-position: 12165
X-ecartis-version: Ecartis v1.0.0
Sender: linux-mips-bounce@linux-mips.org
Errors-to: linux-mips-bounce@linux-mips.org
X-original-sender: anemo@mba.ocn.ne.jp
Precedence: bulk
X-list: linux-mips

On Wed, 02 Aug 2006 18:56:34 +0200, Franck Bui-Huu <vagabon.xyz@gmail.com> wrote:
> > Just one comment: no need to do "pc = pc != ra ? ra : 0" anymore.
> > Just "pc = ra" is enough, isn't it?
> 
> Well I let it just for cases where the caller does not reset ra
> after the first call. It should be safter. But I can remove it if
> you want.

OK, I see.  No problem.

---
Atsushi Nemoto

From vagabon.xyz@gmail.com Thu Aug  3 08:30:12 2006
Received: with ECARTIS (v1.0.0; list linux-mips); Thu, 03 Aug 2006 08:30:22 +0100 (BST)
Received: from nf-out-0910.google.com ([64.233.182.186]:53373 "EHLO
	nf-out-0910.google.com") by ftp.linux-mips.org with ESMTP
	id S8133439AbWHCHaM (ORCPT <rfc822;linux-mips@linux-mips.org>);
	Thu, 3 Aug 2006 08:30:12 +0100
Received: by nf-out-0910.google.com with SMTP id q29so939686nfc
        for <linux-mips@linux-mips.org>; Thu, 03 Aug 2006 00:30:12 -0700 (PDT)
DomainKey-Signature: a=rsa-sha1; q=dns; c=nofws;
        s=beta; d=gmail.com;
        h=received:from:to:cc:subject:date:message-id:x-mailer;
        b=LlLEDb8Xt7D7Z70dXf4u6592iur0w1CrlIT9VvnL5wFPtiXj0mGBHVm160n1ROpRYgXv86aE1gG8bqfLgWclHUhk2LhzpqM9Q6MOoxaeFYAG2xRGW8y3iD/a5gsGDt97evIIsx5RafNlyBSBneitpSGIEvvBUt8Eu+M/5PRLT10=
Received: by 10.49.10.3 with SMTP id n3mr3362379nfi;
        Thu, 03 Aug 2006 00:30:12 -0700 (PDT)
Received: from spoutnik.innova-card.com ( [194.3.162.233])
        by mx.gmail.com with ESMTP id p72sm655993nfc.2006.08.03.00.30.11;
        Thu, 03 Aug 2006 00:30:11 -0700 (PDT)
Received: by spoutnik.innova-card.com (Postfix, from userid 500)
	id 1C5A223F76A; Thu,  3 Aug 2006 09:29:21 +0200 (CEST)
From:	Franck Bui-Huu <vagabon.xyz@gmail.com>
To:	anemo@mba.ocn.ne.jp
Cc:	ralf@linux-mips.org, linux-mips@linux-mips.org
Subject: [PATCH 0/7] Improve prologue analysis code (take #2)
Date:	Thu,  3 Aug 2006 09:29:14 +0200
Message-Id: <11545901611096-git-send-email-vagabon.xyz@gmail.com>
X-Mailer: git-send-email 1.4.2.rc2
Return-Path: <vagabon.xyz@gmail.com>
X-Envelope-To: <"|/home/ecartis/ecartis -s linux-mips"> (uid 0)
X-Orcpt: rfc822;linux-mips@linux-mips.org
Original-Recipient: rfc822;linux-mips@linux-mips.org
X-archive-position: 12166
X-ecartis-version: Ecartis v1.0.0
Sender: linux-mips-bounce@linux-mips.org
Errors-to: linux-mips-bounce@linux-mips.org
X-original-sender: vagabon.xyz@gmail.com
Precedence: bulk
X-list: linux-mips

This patch set clean up or improves this part of code. I splitted out
this into 7 patches to make the review easier.

This second try takes into account all feedbacks from Atsushi Nemoto.

		Franck

---
 arch/mips/kernel/process.c |  130 ++++++++++++++++++++++++--------------------
 arch/mips/kernel/traps.c   |   70 ++++++++++--------------
 2 files changed, 100 insertions(+), 100 deletions(-)



From vagabon.xyz@gmail.com Thu Aug  3 08:30:52 2006
Received: with ECARTIS (v1.0.0; list linux-mips); Thu, 03 Aug 2006 08:31:25 +0100 (BST)
Received: from nf-out-0910.google.com ([64.233.182.189]:59516 "EHLO
	nf-out-0910.google.com") by ftp.linux-mips.org with ESMTP
	id S8133467AbWHCHaM (ORCPT <rfc822;linux-mips@linux-mips.org>);
	Thu, 3 Aug 2006 08:30:12 +0100
Received: by nf-out-0910.google.com with SMTP id q29so939690nfc
        for <linux-mips@linux-mips.org>; Thu, 03 Aug 2006 00:30:12 -0700 (PDT)
DomainKey-Signature: a=rsa-sha1; q=dns; c=nofws;
        s=beta; d=gmail.com;
        h=received:from:to:cc:subject:date:message-id:x-mailer:in-reply-to:references;
        b=HrZEZiAVwBPyXLa7GKYEzr0Yv0lEt3KBkPOg1d/nNOnC+/OZhRDfyLPe81/lDKzC3kzL6EmQO9BpadFPdVgOFqSF7gxwFVL3+vhRm93egBVwppQtQ9w1cm1/tDtqSav6ekJwkREuY1DXSYlel+sq4Rccto4aHCF4uGY87xxRYzE=
Received: by 10.49.10.3 with SMTP id n3mr3367816nfi;
        Thu, 03 Aug 2006 00:30:12 -0700 (PDT)
Received: from spoutnik.innova-card.com ( [194.3.162.233])
        by mx.gmail.com with ESMTP id p43sm664044nfa.2006.08.03.00.30.11;
        Thu, 03 Aug 2006 00:30:12 -0700 (PDT)
Received: by spoutnik.innova-card.com (Postfix, from userid 500)
	id 6F51523F76F; Thu,  3 Aug 2006 09:29:21 +0200 (CEST)
From:	Franck Bui-Huu <vagabon.xyz@gmail.com>
To:	anemo@mba.ocn.ne.jp
Cc:	ralf@linux-mips.org, linux-mips@linux-mips.org,
	Franck Bui-Huu <vagabon.xyz@gmail.com>
Subject: [PATCH 2/7] Remove unused MODULE_RANGE macro.
Date:	Thu,  3 Aug 2006 09:29:16 +0200
Message-Id: <11545901612122-git-send-email-vagabon.xyz@gmail.com>
X-Mailer: git-send-email 1.4.2.rc2
In-Reply-To: <11545901611096-git-send-email-vagabon.xyz@gmail.com>
References: <11545901611096-git-send-email-vagabon.xyz@gmail.com>
Return-Path: <vagabon.xyz@gmail.com>
X-Envelope-To: <"|/home/ecartis/ecartis -s linux-mips"> (uid 0)
X-Orcpt: rfc822;linux-mips@linux-mips.org
Original-Recipient: rfc822;linux-mips@linux-mips.org
X-archive-position: 12167
X-ecartis-version: Ecartis v1.0.0
Sender: linux-mips-bounce@linux-mips.org
Errors-to: linux-mips-bounce@linux-mips.org
X-original-sender: vagabon.xyz@gmail.com
Precedence: bulk
X-list: linux-mips

Signed-off-by: Franck Bui-Huu <vagabon.xyz@gmail.com>
---
 arch/mips/kernel/traps.c |    5 -----
 1 files changed, 0 insertions(+), 5 deletions(-)

diff --git a/arch/mips/kernel/traps.c b/arch/mips/kernel/traps.c
index 7aa9dfc..4a11a3d 100644
--- a/arch/mips/kernel/traps.c
+++ b/arch/mips/kernel/traps.c
@@ -73,11 +73,6 @@ void (*board_nmi_handler_setup)(void);
 void (*board_ejtag_handler_setup)(void);
 void (*board_bind_eic_interrupt)(int irq, int regset);
 
-/*
- * These constant is for searching for possible module text segments.
- * MODULE_RANGE is a guess of how much space is likely to be vmalloced.
- */
-#define MODULE_RANGE (8*1024*1024)
 
 static void show_trace(unsigned long *stack)
 {
-- 
1.4.2.rc2


From vagabon.xyz@gmail.com Thu Aug  3 08:32:01 2006
Received: with ECARTIS (v1.0.0; list linux-mips); Thu, 03 Aug 2006 08:32:27 +0100 (BST)
Received: from nf-out-0910.google.com ([64.233.182.189]:61052 "EHLO
	nf-out-0910.google.com") by ftp.linux-mips.org with ESMTP
	id S8133779AbWHCHaN (ORCPT <rfc822;linux-mips@linux-mips.org>);
	Thu, 3 Aug 2006 08:30:13 +0100
Received: by nf-out-0910.google.com with SMTP id q29so939695nfc
        for <linux-mips@linux-mips.org>; Thu, 03 Aug 2006 00:30:13 -0700 (PDT)
DomainKey-Signature: a=rsa-sha1; q=dns; c=nofws;
        s=beta; d=gmail.com;
        h=received:from:to:cc:subject:date:message-id:x-mailer:in-reply-to:references;
        b=SJzNVPGFlD8h3+ehkGR0MOifxUKxzLC/w6ic+ZOhJzwpU8kelh+IX9ljw5+oDa7KIhMiR8vVO7WW2BFL7nvRCLYD9lk9hlo/RzFPnf3bHDA9dbsSLZ0jOSzqh2qlwF4mp7v6Ld8EFgHFPdWm0vOQTTRXCGF6yAUKfRD6mbTpdks=
Received: by 10.48.202.19 with SMTP id z19mr3367529nff;
        Thu, 03 Aug 2006 00:30:12 -0700 (PDT)
Received: from spoutnik.innova-card.com ( [194.3.162.233])
        by mx.gmail.com with ESMTP id k23sm661722nfc.2006.08.03.00.30.11;
        Thu, 03 Aug 2006 00:30:12 -0700 (PDT)
Received: by spoutnik.innova-card.com (Postfix, from userid 500)
	id 3251E23F759; Thu,  3 Aug 2006 09:29:21 +0200 (CEST)
From:	Franck Bui-Huu <vagabon.xyz@gmail.com>
To:	anemo@mba.ocn.ne.jp
Cc:	ralf@linux-mips.org, linux-mips@linux-mips.org,
	Franck Bui-Huu <vagabon.xyz@gmail.com>
Subject: [PATCH 1/7] Make get_frame_info() more readable.
Date:	Thu,  3 Aug 2006 09:29:15 +0200
Message-Id: <11545901611185-git-send-email-vagabon.xyz@gmail.com>
X-Mailer: git-send-email 1.4.2.rc2
In-Reply-To: <11545901611096-git-send-email-vagabon.xyz@gmail.com>
References: <11545901611096-git-send-email-vagabon.xyz@gmail.com>
Return-Path: <vagabon.xyz@gmail.com>
X-Envelope-To: <"|/home/ecartis/ecartis -s linux-mips"> (uid 0)
X-Orcpt: rfc822;linux-mips@linux-mips.org
Original-Recipient: rfc822;linux-mips@linux-mips.org
X-archive-position: 12168
X-ecartis-version: Ecartis v1.0.0
Sender: linux-mips-bounce@linux-mips.org
Errors-to: linux-mips-bounce@linux-mips.org
X-original-sender: vagabon.xyz@gmail.com
Precedence: bulk
X-list: linux-mips

Signed-off-by: Atsushi Nemoto <anemo@mba.ocn.ne.jp>
Signed-off-by: Franck Bui-Huu <vagabon.xyz@gmail.com>
---
 arch/mips/kernel/process.c |   67 ++++++++++++++++++++++++--------------------
 1 files changed, 36 insertions(+), 31 deletions(-)

diff --git a/arch/mips/kernel/process.c b/arch/mips/kernel/process.c
index 8709a46..93d5432 100644
--- a/arch/mips/kernel/process.c
+++ b/arch/mips/kernel/process.c
@@ -281,48 +281,53 @@ static struct mips_frame_info {
 } *schedule_frame, mfinfo[64];
 static int mfinfo_num;
 
+static inline int is_ra_save_ins(union mips_instruction *ip)
+{
+	/* sw / sd $ra, offset($sp) */
+	return (ip->i_format.opcode == sw_op || ip->i_format.opcode == sd_op) &&
+		ip->i_format.rs == 29 &&
+		ip->i_format.rt == 31;
+}
+
+static inline int is_jal_jalr_jr_ins(union mips_instruction *ip)
+{
+	if (ip->j_format.opcode == jal_op)
+		return 1;
+	if (ip->r_format.opcode != spec_op)
+		return 0;
+	return ip->r_format.func == jalr_op || ip->r_format.func == jr_op;
+}
+
+static inline int is_sp_move_ins(union mips_instruction *ip)
+{
+	/* addiu/daddiu sp,sp,-imm */
+	if (ip->i_format.rs != 29 || ip->i_format.rt != 29)
+		return 0;
+	if (ip->i_format.opcode == addiu_op || ip->i_format.opcode == daddiu_op)
+		return 1;
+	return 0;
+}
+
 static int get_frame_info(struct mips_frame_info *info)
 {
-	int i;
-	void *func = info->func;
-	union mips_instruction *ip = (union mips_instruction *)func;
+	union mips_instruction *ip = info->func;
+	int i, max_insns =
+		min(128UL, info->func_size / sizeof(union mips_instruction));
+
 	info->pc_offset = -1;
 	info->frame_size = 0;
-	for (i = 0; i < 128; i++, ip++) {
-		/* if jal, jalr, jr, stop. */
-		if (ip->j_format.opcode == jal_op ||
-		    (ip->r_format.opcode == spec_op &&
-		     (ip->r_format.func == jalr_op ||
-		      ip->r_format.func == jr_op)))
-			break;
 
-		if (info->func_size && i >= info->func_size / 4)
+	for (i = 0; i < max_insns; i++, ip++) {
+
+		if (is_jal_jalr_jr_ins(ip))
 			break;
-		if (
-#ifdef CONFIG_32BIT
-		    ip->i_format.opcode == addiu_op &&
-#endif
-#ifdef CONFIG_64BIT
-		    ip->i_format.opcode == daddiu_op &&
-#endif
-		    ip->i_format.rs == 29 &&
-		    ip->i_format.rt == 29) {
-			/* addiu/daddiu sp,sp,-imm */
+		if (is_sp_move_ins(ip)) {
 			if (info->frame_size)
 				continue;
 			info->frame_size = - ip->i_format.simmediate;
 		}
 
-		if (
-#ifdef CONFIG_32BIT
-		    ip->i_format.opcode == sw_op &&
-#endif
-#ifdef CONFIG_64BIT
-		    ip->i_format.opcode == sd_op &&
-#endif
-		    ip->i_format.rs == 29 &&
-		    ip->i_format.rt == 31) {
-			/* sw / sd $ra, offset($sp) */
+		if (is_ra_save_ins(ip)) {
 			if (info->pc_offset != -1)
 				continue;
 			info->pc_offset =
-- 
1.4.2.rc2


From vagabon.xyz@gmail.com Thu Aug  3 08:33:01 2006
Received: with ECARTIS (v1.0.0; list linux-mips); Thu, 03 Aug 2006 08:33:23 +0100 (BST)
Received: from nf-out-0910.google.com ([64.233.182.187]:2430 "EHLO
	nf-out-0910.google.com") by ftp.linux-mips.org with ESMTP
	id S8133786AbWHCHaN (ORCPT <rfc822;linux-mips@linux-mips.org>);
	Thu, 3 Aug 2006 08:30:13 +0100
Received: by nf-out-0910.google.com with SMTP id q29so939687nfc
        for <linux-mips@linux-mips.org>; Thu, 03 Aug 2006 00:30:13 -0700 (PDT)
DomainKey-Signature: a=rsa-sha1; q=dns; c=nofws;
        s=beta; d=gmail.com;
        h=received:from:to:cc:subject:date:message-id:x-mailer:in-reply-to:references;
        b=cC3xrHybvTFz6JhqS+dtP78kON+t16/shqtHcDCWiR1ekvZ44jKuZYhOZ+sDGHX0ML0/GVHMIdJ5TzGZaauKT6LFQ0Vlns5xE4M5fAWsWAlRyNIL7eWoxfO3v2279Tr3Vwf+uABr8vZApy7ECwxKiK+rkIweI5I9TcbSoZRu/Zk=
Received: by 10.48.48.18 with SMTP id v18mr3365424nfv;
        Thu, 03 Aug 2006 00:30:13 -0700 (PDT)
Received: from spoutnik.innova-card.com ( [194.3.162.233])
        by mx.gmail.com with ESMTP id l22sm658408nfc.2006.08.03.00.30.11;
        Thu, 03 Aug 2006 00:30:12 -0700 (PDT)
Received: by spoutnik.innova-card.com (Postfix, from userid 500)
	id AA40B23F772; Thu,  3 Aug 2006 09:29:21 +0200 (CEST)
From:	Franck Bui-Huu <vagabon.xyz@gmail.com>
To:	anemo@mba.ocn.ne.jp
Cc:	ralf@linux-mips.org, linux-mips@linux-mips.org,
	Franck Bui-Huu <vagabon.xyz@gmail.com>
Subject: [PATCH 4/7] Make frame_info_init() more readable.
Date:	Thu,  3 Aug 2006 09:29:18 +0200
Message-Id: <11545901612879-git-send-email-vagabon.xyz@gmail.com>
X-Mailer: git-send-email 1.4.2.rc2
In-Reply-To: <11545901611096-git-send-email-vagabon.xyz@gmail.com>
References: <11545901611096-git-send-email-vagabon.xyz@gmail.com>
Return-Path: <vagabon.xyz@gmail.com>
X-Envelope-To: <"|/home/ecartis/ecartis -s linux-mips"> (uid 0)
X-Orcpt: rfc822;linux-mips@linux-mips.org
Original-Recipient: rfc822;linux-mips@linux-mips.org
X-archive-position: 12169
X-ecartis-version: Ecartis v1.0.0
Sender: linux-mips-bounce@linux-mips.org
Errors-to: linux-mips-bounce@linux-mips.org
X-original-sender: vagabon.xyz@gmail.com
Precedence: bulk
X-list: linux-mips

Signed-off-by: Franck Bui-Huu <vagabon.xyz@gmail.com>
---
 arch/mips/kernel/process.c |   18 +++++++++---------
 1 files changed, 9 insertions(+), 9 deletions(-)

diff --git a/arch/mips/kernel/process.c b/arch/mips/kernel/process.c
index 93d5432..da332d7 100644
--- a/arch/mips/kernel/process.c
+++ b/arch/mips/kernel/process.c
@@ -370,15 +370,15 @@ #else
 	mfinfo[0].func = schedule;
 	schedule_frame = &mfinfo[0];
 #endif
-	for (i = 0; i < ARRAY_SIZE(mfinfo) && mfinfo[i].func; i++) {
-		struct mips_frame_info *info = &mfinfo[i];
-		if (get_frame_info(info)) {
-			/* leaf or unknown */
-			if (info->func == schedule)
-				printk("Can't analyze prologue code at %p\n",
-				       info->func);
-		}
-	}
+	for (i = 0; i < ARRAY_SIZE(mfinfo) && mfinfo[i].func; i++)
+		get_frame_info(mfinfo + i);
+
+	/*
+	 * Without schedule() frame info, result given by
+	 * thread_saved_pc() and get_wchan() are not reliable.
+	 */
+	if (schedule_frame->pc_offset < 0)
+		printk("Can't analyze schedule() prologue at %p\n", schedule);
 
 	mfinfo_num = i;
 	return 0;
-- 
1.4.2.rc2


From vagabon.xyz@gmail.com Thu Aug  3 08:33:57 2006
Received: with ECARTIS (v1.0.0; list linux-mips); Thu, 03 Aug 2006 08:34:21 +0100 (BST)
Received: from nf-out-0910.google.com ([64.233.182.189]:59516 "EHLO
	nf-out-0910.google.com") by ftp.linux-mips.org with ESMTP
	id S8133788AbWHCHaN (ORCPT <rfc822;linux-mips@linux-mips.org>);
	Thu, 3 Aug 2006 08:30:13 +0100
Received: by nf-out-0910.google.com with SMTP id q29so939690nfc
        for <linux-mips@linux-mips.org>; Thu, 03 Aug 2006 00:30:14 -0700 (PDT)
DomainKey-Signature: a=rsa-sha1; q=dns; c=nofws;
        s=beta; d=gmail.com;
        h=received:from:to:cc:subject:date:message-id:x-mailer:in-reply-to:references;
        b=g6Azc9dqZ0YZ2B0zdaDxvX8rOnH2Ox+V5leCmHTsBeOXLGdARMfT+C+zLjFCsRhwx3wyO78z+4T8pJSc7GE+us3fvBK2d0/ihUnh2FgB7P5ZI2BMhIiO66VJk3WEh+oSL3OuHRnLIPFK4nKzpok9ZtJ4fLKKQ11TOAIRs71v4AQ=
Received: by 10.49.93.13 with SMTP id v13mr2073808nfl;
        Thu, 03 Aug 2006 00:30:13 -0700 (PDT)
Received: from spoutnik.innova-card.com ( [194.3.162.233])
        by mx.gmail.com with ESMTP id k9sm661790nfc.2006.08.03.00.30.12;
        Thu, 03 Aug 2006 00:30:13 -0700 (PDT)
Received: by spoutnik.innova-card.com (Postfix, from userid 500)
	id 8232A23F76E; Thu,  3 Aug 2006 09:29:21 +0200 (CEST)
From:	Franck Bui-Huu <vagabon.xyz@gmail.com>
To:	anemo@mba.ocn.ne.jp
Cc:	ralf@linux-mips.org, linux-mips@linux-mips.org,
	Franck Bui-Huu <vagabon.xyz@gmail.com>
Subject: [PATCH 3/7] Miscellaneous cleanup in prologue analysis code
Date:	Thu,  3 Aug 2006 09:29:17 +0200
Message-Id: <11545901613315-git-send-email-vagabon.xyz@gmail.com>
X-Mailer: git-send-email 1.4.2.rc2
In-Reply-To: <11545901611096-git-send-email-vagabon.xyz@gmail.com>
References: <11545901611096-git-send-email-vagabon.xyz@gmail.com>
Return-Path: <vagabon.xyz@gmail.com>
X-Envelope-To: <"|/home/ecartis/ecartis -s linux-mips"> (uid 0)
X-Orcpt: rfc822;linux-mips@linux-mips.org
Original-Recipient: rfc822;linux-mips@linux-mips.org
X-archive-position: 12170
X-ecartis-version: Ecartis v1.0.0
Sender: linux-mips-bounce@linux-mips.org
Errors-to: linux-mips-bounce@linux-mips.org
X-original-sender: vagabon.xyz@gmail.com
Precedence: bulk
X-list: linux-mips

We usually use backtrace term for dumping a call tree during
debug. Therefore this patch renames show_frametrace() into
show_backtrace() and show_trace() into show_raw_backtrace().

It also uses the new function print_ip_sym().

Signed-off-by: Franck Bui-Huu <vagabon.xyz@gmail.com>
---
 arch/mips/kernel/traps.c |   33 ++++++++++++++-------------------
 1 files changed, 14 insertions(+), 19 deletions(-)

diff --git a/arch/mips/kernel/traps.c b/arch/mips/kernel/traps.c
index 4a11a3d..549cbb8 100644
--- a/arch/mips/kernel/traps.c
+++ b/arch/mips/kernel/traps.c
@@ -74,21 +74,18 @@ void (*board_ejtag_handler_setup)(void);
 void (*board_bind_eic_interrupt)(int irq, int regset);
 
 
-static void show_trace(unsigned long *stack)
+static void show_raw_backtrace(unsigned long *sp)
 {
-	const int field = 2 * sizeof(unsigned long);
 	unsigned long addr;
 
 	printk("Call Trace:");
 #ifdef CONFIG_KALLSYMS
 	printk("\n");
 #endif
-	while (!kstack_end(stack)) {
-		addr = *stack++;
-		if (__kernel_text_address(addr)) {
-			printk(" [<%0*lx>] ", field, addr);
-			print_symbol("%s\n", addr);
-		}
+	while (!kstack_end(sp)) {
+		addr = *sp++;
+		if (__kernel_text_address(addr))
+			print_ip_sym(addr);
 	}
 	printk("\n");
 }
@@ -104,22 +101,20 @@ __setup("raw_show_trace", set_raw_show_t
 
 extern unsigned long unwind_stack(struct task_struct *task,
 				  unsigned long **sp, unsigned long pc);
-static void show_frametrace(struct task_struct *task, struct pt_regs *regs)
+static void show_backtrace(struct task_struct *task, struct pt_regs *regs)
 {
-	const int field = 2 * sizeof(unsigned long);
-	unsigned long *stack = (long *)regs->regs[29];
+	unsigned long *sp = (long *)regs->regs[29];
 	unsigned long pc = regs->cp0_epc;
 	int top = 1;
 
 	if (raw_show_trace || !__kernel_text_address(pc)) {
-		show_trace(stack);
+		show_raw_backtrace(sp);
 		return;
 	}
 	printk("Call Trace:\n");
 	while (__kernel_text_address(pc)) {
-		printk(" [<%0*lx>] ", field, pc);
-		print_symbol("%s\n", pc);
-		pc = unwind_stack(task, &stack, pc);
+		print_ip_sym(pc);
+		pc = unwind_stack(task, &sp, pc);
 		if (top && pc == 0)
 			pc = regs->regs[31];	/* leaf? */
 		top = 0;
@@ -127,7 +122,7 @@ static void show_frametrace(struct task_
 	printk("\n");
 }
 #else
-#define show_frametrace(task, r) show_trace((long *)(r)->regs[29]);
+#define show_backtrace(task, r) show_raw_backtrace((long *)(r)->regs[29]);
 #endif
 
 /*
@@ -160,7 +155,7 @@ static void show_stacktrace(struct task_
 		i++;
 	}
 	printk("\n");
-	show_frametrace(task, regs);
+	show_backtrace(task, regs);
 }
 
 static noinline void prepare_frametrace(struct pt_regs *regs)
@@ -211,11 +206,11 @@ #ifdef CONFIG_KALLSYMS
 	if (!raw_show_trace) {
 		struct pt_regs regs;
 		prepare_frametrace(&regs);
-		show_frametrace(current, &regs);
+		show_backtrace(current, &regs);
 		return;
 	}
 #endif
-	show_trace(&stack);
+	show_raw_backtrace(&stack);
 }
 
 EXPORT_SYMBOL(dump_stack);
-- 
1.4.2.rc2


From vagabon.xyz@gmail.com Thu Aug  3 08:34:58 2006
Received: with ECARTIS (v1.0.0; list linux-mips); Thu, 03 Aug 2006 08:35:24 +0100 (BST)
Received: from nf-out-0910.google.com ([64.233.182.189]:61052 "EHLO
	nf-out-0910.google.com") by ftp.linux-mips.org with ESMTP
	id S8133794AbWHCHaO (ORCPT <rfc822;linux-mips@linux-mips.org>);
	Thu, 3 Aug 2006 08:30:14 +0100
Received: by nf-out-0910.google.com with SMTP id q29so939695nfc
        for <linux-mips@linux-mips.org>; Thu, 03 Aug 2006 00:30:14 -0700 (PDT)
DomainKey-Signature: a=rsa-sha1; q=dns; c=nofws;
        s=beta; d=gmail.com;
        h=received:from:to:cc:subject:date:message-id:x-mailer:in-reply-to:references;
        b=H515uSuTIr4+ErLSjYXkPkBr3pMSl34zdUtWwJv6hHDKnPHiH3kN/+PTQUcpEi4FhCx7OY6I36PYGp65cG0uSBs1jSfdIAodIp26JlDlzEQ4a8TcV0jeEri9AO/kYVpLq3X2p02VYUDdGtT99vKbmDqA38o0+j+BroHGyP7Y/RA=
Received: by 10.49.8.1 with SMTP id l1mr3373636nfi;
        Thu, 03 Aug 2006 00:30:14 -0700 (PDT)
Received: from spoutnik.innova-card.com ( [194.3.162.233])
        by mx.gmail.com with ESMTP id a23sm656291nfc.2006.08.03.00.30.13;
        Thu, 03 Aug 2006 00:30:14 -0700 (PDT)
Received: by spoutnik.innova-card.com (Postfix, from userid 500)
	id 0951D23F773; Thu,  3 Aug 2006 09:29:21 +0200 (CEST)
From:	Franck Bui-Huu <vagabon.xyz@gmail.com>
To:	anemo@mba.ocn.ne.jp
Cc:	ralf@linux-mips.org, linux-mips@linux-mips.org,
	Franck Bui-Huu <vagabon.xyz@gmail.com>
Subject: [PATCH 5/7] Simplify dump_stack()
Date:	Thu,  3 Aug 2006 09:29:19 +0200
Message-Id: <11545901613246-git-send-email-vagabon.xyz@gmail.com>
X-Mailer: git-send-email 1.4.2.rc2
In-Reply-To: <11545901611096-git-send-email-vagabon.xyz@gmail.com>
References: <11545901611096-git-send-email-vagabon.xyz@gmail.com>
Return-Path: <vagabon.xyz@gmail.com>
X-Envelope-To: <"|/home/ecartis/ecartis -s linux-mips"> (uid 0)
X-Orcpt: rfc822;linux-mips@linux-mips.org
Original-Recipient: rfc822;linux-mips@linux-mips.org
X-archive-position: 12171
X-ecartis-version: Ecartis v1.0.0
Sender: linux-mips-bounce@linux-mips.org
Errors-to: linux-mips-bounce@linux-mips.org
X-original-sender: vagabon.xyz@gmail.com
Precedence: bulk
X-list: linux-mips

Make dump_stack() code not depend on CONFIG_KALLSYMS.

It also make prepare_frametrace() always inlined to get
less false entries reported by show_raw_backtrace().

Signed-off-by: Franck Bui-Huu <vagabon.xyz@gmail.com>
---
 arch/mips/kernel/traps.c |   20 +++++++++-----------
 1 files changed, 9 insertions(+), 11 deletions(-)

diff --git a/arch/mips/kernel/traps.c b/arch/mips/kernel/traps.c
index 549cbb8..303f008 100644
--- a/arch/mips/kernel/traps.c
+++ b/arch/mips/kernel/traps.c
@@ -158,7 +158,7 @@ static void show_stacktrace(struct task_
 	show_backtrace(task, regs);
 }
 
-static noinline void prepare_frametrace(struct pt_regs *regs)
+static __always_inline void prepare_frametrace(struct pt_regs *regs)
 {
 	__asm__ __volatile__(
 		"1: la $2, 1b\n\t"
@@ -200,17 +200,15 @@ void show_stack(struct task_struct *task
  */
 void dump_stack(void)
 {
-	unsigned long stack;
+	struct pt_regs regs;
 
-#ifdef CONFIG_KALLSYMS
-	if (!raw_show_trace) {
-		struct pt_regs regs;
-		prepare_frametrace(&regs);
-		show_backtrace(current, &regs);
-		return;
-	}
-#endif
-	show_raw_backtrace(&stack);
+	/*
+	 * Remove any garbage that may be in regs (specially func
+	 * addresses) to avoid show_raw_backtrace() to report them
+	 */
+	memset(&regs, 0, sizeof(regs));
+	prepare_frametrace(&regs);
+	show_backtrace(current, &regs);
 }
 
 EXPORT_SYMBOL(dump_stack);
-- 
1.4.2.rc2


From vagabon.xyz@gmail.com Thu Aug  3 08:35:55 2006
Received: with ECARTIS (v1.0.0; list linux-mips); Thu, 03 Aug 2006 08:36:25 +0100 (BST)
Received: from nf-out-0910.google.com ([64.233.182.186]:53373 "EHLO
	nf-out-0910.google.com") by ftp.linux-mips.org with ESMTP
	id S8133801AbWHCHaO (ORCPT <rfc822;linux-mips@linux-mips.org>);
	Thu, 3 Aug 2006 08:30:14 +0100
Received: by nf-out-0910.google.com with SMTP id q29so939686nfc
        for <linux-mips@linux-mips.org>; Thu, 03 Aug 2006 00:30:14 -0700 (PDT)
DomainKey-Signature: a=rsa-sha1; q=dns; c=nofws;
        s=beta; d=gmail.com;
        h=received:from:to:cc:subject:date:message-id:x-mailer:in-reply-to:references;
        b=NzQkUYf9YwnCKnSATBFUv8E8nW2IBx1bZF+OKiNNWn1pLlmx95Cwd5HKjGHK+01sY1s3rMd6/kZrxG9o+ISMy+DN0Gz156Fnd8WqgnOKZJD0xCO2tGFH72BXcBGtYTwgNYKsJodwdgUN7SrT7VnCsZA8pXS+1yq47sJg4Mql2IY=
Received: by 10.49.75.2 with SMTP id c2mr3355672nfl;
        Thu, 03 Aug 2006 00:30:14 -0700 (PDT)
Received: from spoutnik.innova-card.com ( [194.3.162.233])
        by mx.gmail.com with ESMTP id g1sm655182nfe.2006.08.03.00.30.13;
        Thu, 03 Aug 2006 00:30:14 -0700 (PDT)
Received: by spoutnik.innova-card.com (Postfix, from userid 500)
	id 4439A23F775; Thu,  3 Aug 2006 09:29:22 +0200 (CEST)
From:	Franck Bui-Huu <vagabon.xyz@gmail.com>
To:	anemo@mba.ocn.ne.jp
Cc:	ralf@linux-mips.org, linux-mips@linux-mips.org,
	Franck Bui-Huu <vagabon.xyz@gmail.com>
Subject: [PATCH 7/7] Improve unwind_stack()
Date:	Thu,  3 Aug 2006 09:29:21 +0200
Message-Id: <11545901621525-git-send-email-vagabon.xyz@gmail.com>
X-Mailer: git-send-email 1.4.2.rc2
In-Reply-To: <11545901611096-git-send-email-vagabon.xyz@gmail.com>
References: <11545901611096-git-send-email-vagabon.xyz@gmail.com>
Return-Path: <vagabon.xyz@gmail.com>
X-Envelope-To: <"|/home/ecartis/ecartis -s linux-mips"> (uid 0)
X-Orcpt: rfc822;linux-mips@linux-mips.org
Original-Recipient: rfc822;linux-mips@linux-mips.org
X-archive-position: 12172
X-ecartis-version: Ecartis v1.0.0
Sender: linux-mips-bounce@linux-mips.org
Errors-to: linux-mips-bounce@linux-mips.org
X-original-sender: vagabon.xyz@gmail.com
Precedence: bulk
X-list: linux-mips

This patch allows unwind_stack() to return ra for leaf function.
But it tries to detects cases where get_frame_info() wrongly
consider nested function as a leaf one.

It also pass 'unsinged long *sp' instead of 'unsigned long **sp'
as second parameter. The code looks cleaner.

Signed-off-by: Franck Bui-Huu <vagabon.xyz@gmail.com>
---
 arch/mips/kernel/process.c |   35 ++++++++++++++++++++++-------------
 arch/mips/kernel/traps.c   |   24 ++++++++++++------------
 2 files changed, 34 insertions(+), 25 deletions(-)

diff --git a/arch/mips/kernel/process.c b/arch/mips/kernel/process.c
index 309bfa4..951bf9c 100644
--- a/arch/mips/kernel/process.c
+++ b/arch/mips/kernel/process.c
@@ -448,15 +448,16 @@ #endif
 }
 
 #ifdef CONFIG_KALLSYMS
-/* used by show_frametrace() */
-unsigned long unwind_stack(struct task_struct *task,
-			   unsigned long **sp, unsigned long pc)
+/* used by show_backtrace() */
+unsigned long unwind_stack(struct task_struct *task, unsigned long *sp,
+			   unsigned long pc, unsigned long ra)
 {
 	unsigned long stack_page;
 	struct mips_frame_info info;
 	char *modname;
 	char namebuf[KSYM_NAME_LEN + 1];
 	unsigned long size, ofs;
+	int leaf;
 
 	stack_page = (unsigned long)task_stack_page(task);
 	if (!stack_page)
@@ -469,18 +470,26 @@ unsigned long unwind_stack(struct task_s
 
 	info.func = (void *)(pc - ofs);
 	info.func_size = ofs;	/* analyze from start to ofs */
-	if (get_frame_info(&info)) {
-		/* leaf or unknown */
-		*sp += info.frame_size / sizeof(long);
+	leaf = get_frame_info(&info);
+	if (leaf < 0)
 		return 0;
-	}
-	if ((unsigned long)*sp < stack_page ||
-	    (unsigned long)*sp + info.frame_size / sizeof(long) >
-	    stack_page + THREAD_SIZE - 32)
+
+	if (*sp < stack_page ||
+	    *sp + info.frame_size > stack_page + THREAD_SIZE - 32)
 		return 0;
 
-	pc = (*sp)[info.pc_offset];
-	*sp += info.frame_size / sizeof(long);
-	return pc;
+	if (leaf)
+		/*
+		 * For some extreme cases, get_frame_info() can
+		 * consider wrongly a nested function as a leaf
+		 * one. In that cases avoid to return always the
+		 * same value.
+		 */
+		pc = pc != ra ? ra : 0;
+	else
+		pc = ((unsigned long *)(*sp))[info.pc_offset];
+
+	*sp += info.frame_size;
+	return __kernel_text_address(pc) ? pc : 0;
 }
 #endif
diff --git a/arch/mips/kernel/traps.c b/arch/mips/kernel/traps.c
index 303f008..ab77034 100644
--- a/arch/mips/kernel/traps.c
+++ b/arch/mips/kernel/traps.c
@@ -74,8 +74,9 @@ void (*board_ejtag_handler_setup)(void);
 void (*board_bind_eic_interrupt)(int irq, int regset);
 
 
-static void show_raw_backtrace(unsigned long *sp)
+static void show_raw_backtrace(unsigned long reg29)
 {
+	unsigned long *sp = (unsigned long *)reg29;
 	unsigned long addr;
 
 	printk("Call Trace:");
@@ -99,30 +100,29 @@ static int __init set_raw_show_trace(cha
 }
 __setup("raw_show_trace", set_raw_show_trace);
 
-extern unsigned long unwind_stack(struct task_struct *task,
-				  unsigned long **sp, unsigned long pc);
+extern unsigned long unwind_stack(struct task_struct *task, unsigned long *sp,
+				  unsigned long pc, unsigned long ra);
+
 static void show_backtrace(struct task_struct *task, struct pt_regs *regs)
 {
-	unsigned long *sp = (long *)regs->regs[29];
+	unsigned long sp = regs->regs[29];
+	unsigned long ra = regs->regs[31];
 	unsigned long pc = regs->cp0_epc;
-	int top = 1;
 
 	if (raw_show_trace || !__kernel_text_address(pc)) {
 		show_raw_backtrace(sp);
 		return;
 	}
 	printk("Call Trace:\n");
-	while (__kernel_text_address(pc)) {
+	do {
 		print_ip_sym(pc);
-		pc = unwind_stack(task, &sp, pc);
-		if (top && pc == 0)
-			pc = regs->regs[31];	/* leaf? */
-		top = 0;
-	}
+		pc = unwind_stack(task, &sp, pc, ra);
+		ra = 0;
+	} while (pc);
 	printk("\n");
 }
 #else
-#define show_backtrace(task, r) show_raw_backtrace((long *)(r)->regs[29]);
+#define show_backtrace(task, r) show_raw_backtrace((r)->regs[29]);
 #endif
 
 /*
-- 
1.4.2.rc2


From vagabon.xyz@gmail.com Thu Aug  3 08:36:56 2006
Received: with ECARTIS (v1.0.0; list linux-mips); Thu, 03 Aug 2006 08:37:26 +0100 (BST)
Received: from nf-out-0910.google.com ([64.233.182.191]:38269 "EHLO
	nf-out-0910.google.com") by ftp.linux-mips.org with ESMTP
	id S8133809AbWHCHaP (ORCPT <rfc822;linux-mips@linux-mips.org>);
	Thu, 3 Aug 2006 08:30:15 +0100
Received: by nf-out-0910.google.com with SMTP id q29so939691nfc
        for <linux-mips@linux-mips.org>; Thu, 03 Aug 2006 00:30:15 -0700 (PDT)
DomainKey-Signature: a=rsa-sha1; q=dns; c=nofws;
        s=beta; d=gmail.com;
        h=received:from:to:cc:subject:date:message-id:x-mailer:in-reply-to:references;
        b=E9wOh2qzG5p/ItjTYsVq6dEiPkkX7q64YH+vxY7yj6MgtkOns2Ea5AuqOCmEEHEeyh1F6XquoU+kM1Y9HBLY8yAfEEV8vMTSpKuNrBzF9VID524Tx3KTML0Q+ahH3tVQoL7ZS7yvvKqlrDISm450YQzfrZXLDiu0C554EIik89I=
Received: by 10.49.90.4 with SMTP id s4mr3358607nfl;
        Thu, 03 Aug 2006 00:30:15 -0700 (PDT)
Received: from spoutnik.innova-card.com ( [194.3.162.233])
        by mx.gmail.com with ESMTP id k9sm661837nfc.2006.08.03.00.30.14;
        Thu, 03 Aug 2006 00:30:15 -0700 (PDT)
Received: by spoutnik.innova-card.com (Postfix, from userid 500)
	id 19EE823F770; Thu,  3 Aug 2006 09:29:22 +0200 (CEST)
From:	Franck Bui-Huu <vagabon.xyz@gmail.com>
To:	anemo@mba.ocn.ne.jp
Cc:	ralf@linux-mips.org, linux-mips@linux-mips.org,
	Franck Bui-Huu <vagabon.xyz@gmail.com>
Subject: [PATCH 6/7] Make get_frame_info() more robust
Date:	Thu,  3 Aug 2006 09:29:20 +0200
Message-Id: <11545901628-git-send-email-vagabon.xyz@gmail.com>
X-Mailer: git-send-email 1.4.2.rc2
In-Reply-To: <11545901611096-git-send-email-vagabon.xyz@gmail.com>
References: <11545901611096-git-send-email-vagabon.xyz@gmail.com>
Return-Path: <vagabon.xyz@gmail.com>
X-Envelope-To: <"|/home/ecartis/ecartis -s linux-mips"> (uid 0)
X-Orcpt: rfc822;linux-mips@linux-mips.org
Original-Recipient: rfc822;linux-mips@linux-mips.org
X-archive-position: 12173
X-ecartis-version: Ecartis v1.0.0
Sender: linux-mips-bounce@linux-mips.org
Errors-to: linux-mips-bounce@linux-mips.org
X-original-sender: vagabon.xyz@gmail.com
Precedence: bulk
X-list: linux-mips

Now get_frame_info() wants to detect move sp instruction first. It
assumes that the save ra in the stack instruction can't happen
before allocating frame size space into the stack.

Signed-off-by: Franck Bui-Huu <vagabon.xyz@gmail.com>
---
 arch/mips/kernel/process.c |   14 ++++++--------
 1 files changed, 6 insertions(+), 8 deletions(-)

diff --git a/arch/mips/kernel/process.c b/arch/mips/kernel/process.c
index da332d7..309bfa4 100644
--- a/arch/mips/kernel/process.c
+++ b/arch/mips/kernel/process.c
@@ -321,17 +321,15 @@ static int get_frame_info(struct mips_fr
 
 		if (is_jal_jalr_jr_ins(ip))
 			break;
-		if (is_sp_move_ins(ip)) {
-			if (info->frame_size)
-				continue;
-			info->frame_size = - ip->i_format.simmediate;
+		if (!info->frame_size) {
+			if (is_sp_move_ins(ip))
+				info->frame_size = - ip->i_format.simmediate;
+			continue;
 		}
-
-		if (is_ra_save_ins(ip)) {
-			if (info->pc_offset != -1)
-				continue;
+		if (info->pc_offset == -1 && is_ra_save_ins(ip)) {
 			info->pc_offset =
 				ip->i_format.simmediate / sizeof(long);
+			break;
 		}
 	}
 	if (info->frame_size && info->pc_offset >= 0) /* nested */
-- 
1.4.2.rc2


From giometti@enneenne.com Thu Aug  3 14:54:07 2006
Received: with ECARTIS (v1.0.0; list linux-mips); Thu, 03 Aug 2006 14:54:17 +0100 (BST)
Received: from 81-174-11-161.f5.ngi.it ([81.174.11.161]:35026 "EHLO
	mail.enneenne.com") by ftp.linux-mips.org with ESMTP
	id S8133828AbWHCNyH (ORCPT <rfc822;linux-mips@linux-mips.org>);
	Thu, 3 Aug 2006 14:54:07 +0100
Received: from zaigor.enneenne.com ([192.168.32.1])
	by mail.enneenne.com with esmtp (Exim 4.50)
	id 1G8cf8-000591-9W
	for linux-mips@linux-mips.org; Thu, 03 Aug 2006 14:50:54 +0200
Received: from giometti by zaigor.enneenne.com with local (Exim 4.60)
	(envelope-from <giometti@enneenne.com>)
	id 1G8df1-0005cC-OY
	for linux-mips@linux-mips.org; Thu, 03 Aug 2006 15:54:51 +0200
Date:	Thu, 3 Aug 2006 15:54:51 +0200
From:	Rodolfo Giometti <giometti@linux.it>
To:	linux-mips@linux-mips.org
Message-ID: <20060803135451.GC24940@enneenne.com>
MIME-Version: 1.0
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline
Organization: GNU/Linux Device Drivers, Embedded Systems and Courses
X-PGP-Key: gpg --keyserver keyserver.linux.it --recv-keys D25A5633
User-Agent: Mutt/1.5.11+cvs20060403
X-SA-Exim-Connect-IP: 192.168.32.1
X-SA-Exim-Mail-From: giometti@enneenne.com
Subject: Understanding PCMCIA layer
X-SA-Exim-Version: 4.2 (built Thu, 03 Mar 2005 10:44:12 +0100)
X-SA-Exim-Scanned: Yes (on mail.enneenne.com)
Return-Path: <giometti@enneenne.com>
X-Envelope-To: <"|/home/ecartis/ecartis -s linux-mips"> (uid 0)
X-Orcpt: rfc822;linux-mips@linux-mips.org
Original-Recipient: rfc822;linux-mips@linux-mips.org
X-archive-position: 12174
X-ecartis-version: Ecartis v1.0.0
Sender: linux-mips-bounce@linux-mips.org
Errors-to: linux-mips-bounce@linux-mips.org
X-original-sender: giometti@linux.it
Precedence: bulk
X-list: linux-mips

Hello,

I'm just playing with the PCMCIA layer in order to manage a WiFi
module.

I notice that giving the suspend/resume command sequence I get:

   hostname:~# pccardctl suspend
   WWPC-PCMCIA: config_skt 0 Vcc 0V Vpp 0V, flags 0 (reset 0)
   WWPC-PCMCIA: suspend_skt 0                                                      
   hostname:~# pccardctl resume
   WWPC-PCMCIA: init_skt 0
   WWPC-PCMCIA: config_skt 0 Vcc 0V Vpp 0V, flags 0 (reset 0)
   WWPC-PCMCIA: config_skt 0 Vcc 33V Vpp 33V, flags 0 (reset 0)
   WWPC-PCMCIA: config_skt 0 Vcc 33V Vpp 0V, flags 240 (reset 1)
   WWPC-PCMCIA: config_skt 0 Vcc 33V Vpp 0V, flags 200 (reset 0)                   

and giving the eject/insert one I get:

   hostname:~# pccardctl eject
   pccard: card ejected from slot 0
   WWPC-PCMCIA: init_skt 0
   WWPC-PCMCIA: config_skt 0 Vcc 0V Vpp 0V, flags 0 (reset 0)
   hostname:~# pccardctl insert
   WWPC-PCMCIA: config_skt 0 Vcc 33V Vpp 33V, flags 0 (reset 0)
   WWPC-PCMCIA: config_skt 0 Vcc 33V Vpp 0V, flags 240 (reset 1)
   WWPC-PCMCIA: config_skt 0 Vcc 33V Vpp 0V, flags 200 (reset 0)
   pccard: PCMCIA card inserted into slot 0
   pcmcia: registering new device pcmcia0.0                                        

My module support a "sleep" mode, so I shouldn't remove power supply
nor giving to it a reset impulse during suspend/resume stages but, on
the other hands, I'd like to reset it when I give the "insert" command
and turning it off when I give the "eject" command.

How I can resolve the problem? =:-o

Thanks in advance,

Rodolfo

-- 

GNU/Linux Solutions                  e-mail:    giometti@enneenne.com
Linux Device Driver                             giometti@gnudd.com
Embedded Systems                     		giometti@linux.it
UNIX programming                     phone:     +39 349 2432127

From anemo@mba.ocn.ne.jp Thu Aug  3 15:13:23 2006
Received: with ECARTIS (v1.0.0; list linux-mips); Thu, 03 Aug 2006 15:13:37 +0100 (BST)
Received: from mba.ocn.ne.jp ([210.190.142.172]:4607 "HELO smtp.mba.ocn.ne.jp")
	by ftp.linux-mips.org with SMTP id S8133870AbWHCONX (ORCPT
	<rfc822;linux-mips@linux-mips.org>); Thu, 3 Aug 2006 15:13:23 +0100
Received: from localhost (p5142-ipad210funabasi.chiba.ocn.ne.jp [58.88.124.142])
	by smtp.mba.ocn.ne.jp (Postfix) with ESMTP
	id 271C4120B; Thu,  3 Aug 2006 23:13:18 +0900 (JST)
Date:	Thu, 03 Aug 2006 23:14:52 +0900 (JST)
Message-Id: <20060803.231452.89066856.anemo@mba.ocn.ne.jp>
To:	vagabon.xyz@gmail.com
Cc:	ralf@linux-mips.org, linux-mips@linux-mips.org
Subject: Re: [PATCH 0/7] Improve prologue analysis code (take #2)
From:	Atsushi Nemoto <anemo@mba.ocn.ne.jp>
In-Reply-To: <11545901611096-git-send-email-vagabon.xyz@gmail.com>
References: <11545901611096-git-send-email-vagabon.xyz@gmail.com>
X-Fingerprint: 6ACA 1623 39BD 9A94 9B1A  B746 CA77 FE94 2874 D52F
X-Pgp-Public-Key: http://wwwkeys.pgp.net/pks/lookup?op=get&search=0x2874D52F
X-Mailer: Mew version 3.3 on Emacs 21.4 / Mule 5.0 (SAKAKI)
Mime-Version: 1.0
Content-Type: Text/Plain; charset=us-ascii
Content-Transfer-Encoding: 7bit
Return-Path: <anemo@mba.ocn.ne.jp>
X-Envelope-To: <"|/home/ecartis/ecartis -s linux-mips"> (uid 0)
X-Orcpt: rfc822;linux-mips@linux-mips.org
Original-Recipient: rfc822;linux-mips@linux-mips.org
X-archive-position: 12175
X-ecartis-version: Ecartis v1.0.0
Sender: linux-mips-bounce@linux-mips.org
Errors-to: linux-mips-bounce@linux-mips.org
X-original-sender: anemo@mba.ocn.ne.jp
Precedence: bulk
X-list: linux-mips

On Thu,  3 Aug 2006 09:29:14 +0200, Franck Bui-Huu <vagabon.xyz@gmail.com> wrote:
> This patch set clean up or improves this part of code. I splitted out
> this into 7 patches to make the review easier.
> 
> This second try takes into account all feedbacks from Atsushi Nemoto.

Thanks for your good job.  All good for me.

Ralf, this patchset includes all floating patches from me.  Please
take this and drop mine.

---
Atsushi Nemoto

From ralf@linux-mips.org Thu Aug  3 16:58:26 2006
Received: with ECARTIS (v1.0.0; list linux-mips); Thu, 03 Aug 2006 16:58:35 +0100 (BST)
Received: from localhost.localdomain ([127.0.0.1]:56471 "EHLO bacchus.dhis.org")
	by ftp.linux-mips.org with ESMTP id S8133884AbWHCP60 (ORCPT
	<rfc822;linux-mips@linux-mips.org>); Thu, 3 Aug 2006 16:58:26 +0100
Received: from denk.linux-mips.net (denk.linux-mips.net [127.0.0.1])
	by bacchus.dhis.org (8.13.7/8.13.4) with ESMTP id k73FwTu8009876;
	Thu, 3 Aug 2006 16:58:29 +0100
Received: (from ralf@localhost)
	by denk.linux-mips.net (8.13.7/8.13.7/Submit) id k73FwSVB009875;
	Thu, 3 Aug 2006 16:58:28 +0100
Date:	Thu, 3 Aug 2006 16:58:28 +0100
From:	Ralf Baechle <ralf@linux-mips.org>
To:	Franck Bui-Huu <vagabon.xyz@gmail.com>
Cc:	anemo@mba.ocn.ne.jp, linux-mips@linux-mips.org
Subject: Re: [PATCH 0/7] Improve prologue analysis code (take #2)
Message-ID: <20060803155828.GA9448@linux-mips.org>
References: <11545901611096-git-send-email-vagabon.xyz@gmail.com>
Mime-Version: 1.0
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline
In-Reply-To: <11545901611096-git-send-email-vagabon.xyz@gmail.com>
User-Agent: Mutt/1.4.2.1i
Return-Path: <ralf@linux-mips.org>
X-Envelope-To: <"|/home/ecartis/ecartis -s linux-mips"> (uid 0)
X-Orcpt: rfc822;linux-mips@linux-mips.org
Original-Recipient: rfc822;linux-mips@linux-mips.org
X-archive-position: 12176
X-ecartis-version: Ecartis v1.0.0
Sender: linux-mips-bounce@linux-mips.org
Errors-to: linux-mips-bounce@linux-mips.org
X-original-sender: ralf@linux-mips.org
Precedence: bulk
X-list: linux-mips

On Thu, Aug 03, 2006 at 09:29:14AM +0200, Franck Bui-Huu wrote:

> This patch set clean up or improves this part of code. I splitted out
> this into 7 patches to make the review easier.
> 
> This second try takes into account all feedbacks from Atsushi Nemoto.

Thanks, whole series queued.

  Ralf

From jbglaw@lug-owl.de Thu Aug  3 18:52:27 2006
Received: with ECARTIS (v1.0.0; list linux-mips); Thu, 03 Aug 2006 18:52:36 +0100 (BST)
Received: from lug-owl.de ([195.71.106.12]:54684 "EHLO lug-owl.de")
	by ftp.linux-mips.org with ESMTP id S8133881AbWHCRw1 (ORCPT
	<rfc822;linux-mips@linux-mips.org>); Thu, 3 Aug 2006 18:52:27 +0100
Received: by lug-owl.de (Postfix, from userid 1001)
	id ACD8FF0291; Thu,  3 Aug 2006 19:52:26 +0200 (CEST)
Date:	Thu, 3 Aug 2006 19:52:26 +0200
From:	Jan-Benedict Glaw <jbglaw@lug-owl.de>
To:	linux-mips@linux-mips.org
Subject: Re: Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6
Message-ID: <20060803175226.GA20586@lug-owl.de>
Mail-Followup-To: linux-mips@linux-mips.org
References: <S8133924AbWHCQmm/20060803164242Z+747@ftp.linux-mips.org>
Mime-Version: 1.0
Content-Type: multipart/signed; micalg=pgp-sha1;
	protocol="application/pgp-signature"; boundary="UugvWAfsgieZRqgk"
Content-Disposition: inline
In-Reply-To: <S8133924AbWHCQmm/20060803164242Z+747@ftp.linux-mips.org>
X-Operating-System: Linux mail 2.6.12.3lug-owl
X-gpg-fingerprint: 250D 3BCF 7127 0D8C A444  A961 1DBD 5E75 8399 E1BB
X-gpg-key: wwwkeys.de.pgp.net
X-Echelon-Enable: howto poison arsenous mail psychological biological nuclear warfare test the bombastical terror of flooding the spy listeners explosion sex drugs and rock'n'roll
X-TKUeV: howto poison arsenous mail psychological biological nuclear warfare test the bombastical terror of flooding the spy listeners explosion sex drugs and rock'n'roll
User-Agent: Mutt/1.5.9i
Return-Path: <jbglaw@lug-owl.de>
X-Envelope-To: <"|/home/ecartis/ecartis -s linux-mips"> (uid 0)
X-Orcpt: rfc822;linux-mips@linux-mips.org
Original-Recipient: rfc822;linux-mips@linux-mips.org
X-archive-position: 12177
X-ecartis-version: Ecartis v1.0.0
Sender: linux-mips-bounce@linux-mips.org
Errors-to: linux-mips-bounce@linux-mips.org
X-original-sender: jbglaw@lug-owl.de
Precedence: bulk
X-list: linux-mips


--UugvWAfsgieZRqgk
Content-Type: text/plain; charset=utf-8
Content-Disposition: inline
Content-Transfer-Encoding: quoted-printable

On Thu, 2006-08-03 17:42:34 +0100, linux-mips@linux-mips.org