From: Vivek Goyal <vgoyal@in.ibm.com>
To: Andrew Morton <akpm@osdl.org>
Cc: Adrian Bunk <bunk@stusta.de>,
fastboot@lists.osdl.org, linux-kernel@vger.kernel.org,
gdb@sources.redhat.com
Subject: Re: [Fastboot] Re: [-mm patch] i386: enable REGPARM by default
Date: Mon, 27 Jun 2005 18:59:41 +0530 [thread overview]
Message-ID: <20050627132941.GD3764@in.ibm.com> (raw)
In-Reply-To: <20050624132826.4cdfb63c.akpm@osdl.org>
On Fri, Jun 24, 2005 at 01:28:26PM -0700, Andrew Morton wrote:
> Adrian Bunk <bunk@stusta.de> wrote:
> >
> > This patch:
> > - removes the dependency of REGPARM on EXPERIMENTAL
> > - let REGPARM default to y
>
> hm, a compromise.
>
> One other concern I have with this is that I expect -mregparm will make
> kgdb (and now crashdump) less useful. When incoming args are on the stack
> you have a good chance of being able to see what their value is by walking
> the stack slots.
>
> When the incoming args are in registers I'd expect that it would be a lot
> harder (or impossible) to work out their value.
>
> Have the kdump guys thought about (or encountered) this?
>
[copying to gdb@sources.redhat.com]
I too played a little bit with this (gdb stack trace outputs without REGPARM
and with REGPARM). Following are stack traces of both the cases.
REGPARM Disabled
----------------
(gdb) bt
#0 0xc0113d22 in crash_get_current_regs (regs=0xedf33e6c)
at arch/i386/kernel/crash.c:102
#1 0xc0113d9d in crash_save_self (saved_regs=0xedf33e6c)
at arch/i386/kernel/crash.c:134
#2 0xc013d19a in crash_kexec (regs=0x2) at kernel/kexec.c:1059
#3 0xc011c999 in panic (fmt=0x2 <Address 0x2 out of bounds>)
at kernel/panic.c:86
#4 0xc014086a in func2 (a=2, b=0x2, c=100 'd') at kernel/ksysfs.c:36
#5 0xc01408a5 in func1 (a=20, b=0xc044cae8, c=100 'd') at kernel/ksysfs.c:42
#6 0xc01408f8 in stack_debug_show (subsys=0xc044cb00,
page=0x2 <Address 0x2 out of bounds>) at kernel/ksysfs.c:59
#7 0xc0198e3f in subsys_attr_show (kobj=0xc044cb18, attr=0x2,
page=0x2 <Address 0x2 out of bounds>) at fs/sysfs/file.c:30
#8 0xc0198ed8 in fill_read_buffer (dentry=0x1, buffer=0xee33db20)
at fs/sysfs/file.c:86
#9 0xc0198fe7 in sysfs_read_file (file=0x1,
buf=0x2 <Address 0x2 out of bounds>, count=2, ppos=0x2)
at fs/sysfs/file.c:153
#10 0xc0160599 in vfs_read (file=0xef3d8880,
buf=0x804d858 <Address 0x804d858 out of bounds>, count=4096,
pos=0xedf33fa4) at fs/read_write.c:238
#11 0xc0160871 in sys_read (fd=2, buf=0x2 <Address 0x2 out of bounds>,
count=2)
at fs/read_write.c:321
Here all the function arguments does not seem to be right. I introduced
func1 and func2 and value of parameters is partially correct. (Right values
are a=20, b=0xecab5f18,, c='d').
Time to talk to gdb folks.
With REGPARM Enabled
--------------------
(gdb) bt
#0 0xc0112a20 in crash_get_current_regs (regs=0xee661e94)
at arch/i386/kernel/crash.c:102
#1 0xc0112a89 in crash_save_self (saved_regs=0x0)
at arch/i386/kernel/crash.c:134
#2 0xc0138be2 in crash_kexec (regs=0x5400) at kernel/kexec.c:1059
#3 0xc011adeb in panic (fmt=0xc03b7499 "Vivek: Invoked panic\n")
at kernel/panic.c:86
#4 0xc013beab in func2 (a=-295297388, b=0x5400, c=-108 '\224')
at kernel/ksysfs.c:36
#5 0xc013bedb in func1 (a=-1069483288, b=0x14, c=-108 '\224')
at kernel/ksysfs.c:42
#6 0xc013bf36 in stack_debug_show (subsys=0xee661e94, page=0xede0f000 "")
at kernel/ksysfs.c:60
#7 0xc018d31c in subsys_attr_show (kobj=0xee661e94, attr=0x5400,
page=0xede0f000 "") at fs/sysfs/file.c:30
#8 0xc018d38e in fill_read_buffer (dentry=0xee661e94, buffer=0xefd32360)
at fs/sysfs/file.c:86
#9 0xc018d481 in sysfs_read_file (file=0xee0909c0,
buf=0x804d858 <Address 0x804d858 out of bounds>, count=4096,
ppos=0xee661e94) at fs/sysfs/file.c:153
#10 0xc0159260 in vfs_read (file=0xee0909c0,
buf=0x804d858 <Address 0x804d858 out of bounds>, count=4096,
pos=0xee661fa4) at fs/read_write.c:238
#11 0xc01594e9 in sys_read (fd=3999669908,
buf=0x804d858 <Address 0x804d858 out of bounds>, count=4096)
at fs/read_write.c:321
Here all the arguments of func1 and func2 are bad. Looks like REGPARM might
worsen the output.
Will look more into this.
Thanks
Vivek
next prev parent reply other threads:[~2005-06-27 15:02 UTC|newest]
Thread overview: 13+ messages / expand[flat|nested] mbox.gz Atom feed top
2005-06-24 20:09 [-mm patch] i386: enable REGPARM by default Adrian Bunk
2005-06-24 20:28 ` Andrew Morton
2005-06-24 23:08 ` [Fastboot] " Alexander Nyberg
2005-06-27 13:29 ` Vivek Goyal [this message]
2005-06-27 14:00 ` Daniel Jacobowitz
2005-06-28 4:51 ` Vivek Goyal
2005-06-28 11:24 ` Vivek Goyal
2005-06-28 19:59 ` Mark Kettenis
2005-06-29 8:34 ` Vivek Goyal
2005-06-29 10:06 ` Mark Kettenis
2005-06-29 11:47 ` Vivek Goyal
2005-06-25 7:46 ` Denis Vlasenko
2005-06-28 12:16 ` Jens Axboe
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20050627132941.GD3764@in.ibm.com \
--to=vgoyal@in.ibm.com \
--cc=akpm@osdl.org \
--cc=bunk@stusta.de \
--cc=fastboot@lists.osdl.org \
--cc=gdb@sources.redhat.com \
--cc=linux-kernel@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox