* [PATCH] powerpc/kernel: Make syscall_exit a local label
@ 2014-12-05 10:16 Michael Ellerman
2014-12-05 10:27 ` David Laight
0 siblings, 1 reply; 3+ messages in thread
From: Michael Ellerman @ 2014-12-05 10:16 UTC (permalink / raw)
To: linuxppc-dev
Currently when we back trace something that is in a syscall we see
something like this:
[c000000000000000] [c000000000000000] SyS_read+0x6c/0x110
[c000000000000000] [c000000000000000] syscall_exit+0x0/0x98
Although it's entirely correct, seeing syscall_exit at the bottom can be
confusing - we were exiting from a syscall and then called SyS_read() ?
If we instead change syscall_exit to be a local label we get something
more intuitive:
[c0000001fa46fde0] [c00000000026719c] SyS_read+0x6c/0x110
[c0000001fa46fe30] [c000000000009264] system_call+0x38/0xd0
ie. we were handling a system call, and it was SyS_read().
Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
---
arch/powerpc/kernel/entry_64.S | 18 +++++++++---------
1 file changed, 9 insertions(+), 9 deletions(-)
diff --git a/arch/powerpc/kernel/entry_64.S b/arch/powerpc/kernel/entry_64.S
index 0905c8da90f1..d8828e50dbef 100644
--- a/arch/powerpc/kernel/entry_64.S
+++ b/arch/powerpc/kernel/entry_64.S
@@ -178,7 +178,7 @@ system_call: /* label this so stack traces look sane */
mtctr r12
bctrl /* Call handler */
-syscall_exit:
+.Lsyscall_exit:
std r3,RESULT(r1)
#ifdef SHOW_SYSCALLS
bl do_show_syscall_exit
@@ -270,7 +270,7 @@ syscall_dotrace:
syscall_enosys:
li r3,-ENOSYS
- b syscall_exit
+ b .Lsyscall_exit
syscall_exit_work:
#ifdef CONFIG_PPC_BOOK3S
@@ -347,33 +347,33 @@ _GLOBAL(save_nvgprs)
_GLOBAL(ppc_fork)
bl save_nvgprs
bl sys_fork
- b syscall_exit
+ b .Lsyscall_exit
_GLOBAL(ppc_vfork)
bl save_nvgprs
bl sys_vfork
- b syscall_exit
+ b .Lsyscall_exit
_GLOBAL(ppc_clone)
bl save_nvgprs
bl sys_clone
- b syscall_exit
+ b .Lsyscall_exit
_GLOBAL(ppc32_swapcontext)
bl save_nvgprs
bl compat_sys_swapcontext
- b syscall_exit
+ b .Lsyscall_exit
_GLOBAL(ppc64_swapcontext)
bl save_nvgprs
bl sys_swapcontext
- b syscall_exit
+ b .Lsyscall_exit
_GLOBAL(ret_from_fork)
bl schedule_tail
REST_NVGPRS(r1)
li r3,0
- b syscall_exit
+ b .Lsyscall_exit
_GLOBAL(ret_from_kernel_thread)
bl schedule_tail
@@ -385,7 +385,7 @@ _GLOBAL(ret_from_kernel_thread)
#endif
blrl
li r3,0
- b syscall_exit
+ b .Lsyscall_exit
/*
* This routine switches between two different tasks. The process
--
1.9.1
^ permalink raw reply related [flat|nested] 3+ messages in thread
* RE: [PATCH] powerpc/kernel: Make syscall_exit a local label
2014-12-05 10:16 [PATCH] powerpc/kernel: Make syscall_exit a local label Michael Ellerman
@ 2014-12-05 10:27 ` David Laight
2014-12-15 3:03 ` Michael Ellerman
0 siblings, 1 reply; 3+ messages in thread
From: David Laight @ 2014-12-05 10:27 UTC (permalink / raw)
To: 'Michael Ellerman', linuxppc-dev@ozlabs.org
RnJvbTogTWljaGFlbCBFbGxlcm1hbg0KPiBDdXJyZW50bHkgd2hlbiB3ZSBiYWNrIHRyYWNlIHNv
bWV0aGluZyB0aGF0IGlzIGluIGEgc3lzY2FsbCB3ZSBzZWUNCj4gc29tZXRoaW5nIGxpa2UgdGhp
czoNCj4gDQo+IFtjMDAwMDAwMDAwMDAwMDAwXSBbYzAwMDAwMDAwMDAwMDAwMF0gU3lTX3JlYWQr
MHg2Yy8weDExMA0KPiBbYzAwMDAwMDAwMDAwMDAwMF0gW2MwMDAwMDAwMDAwMDAwMDBdIHN5c2Nh
bGxfZXhpdCsweDAvMHg5OA0KPiANCj4gQWx0aG91Z2ggaXQncyBlbnRpcmVseSBjb3JyZWN0LCBz
ZWVpbmcgc3lzY2FsbF9leGl0IGF0IHRoZSBib3R0b20gY2FuIGJlDQo+IGNvbmZ1c2luZyAtIHdl
IHdlcmUgZXhpdGluZyBmcm9tIGEgc3lzY2FsbCBhbmQgdGhlbiBjYWxsZWQgU3lTX3JlYWQoKSA/
DQo+IA0KPiBJZiB3ZSBpbnN0ZWFkIGNoYW5nZSBzeXNjYWxsX2V4aXQgdG8gYmUgYSBsb2NhbCBs
YWJlbCB3ZSBnZXQgc29tZXRoaW5nDQo+IG1vcmUgaW50dWl0aXZlOg0KPiANCj4gW2MwMDAwMDAx
ZmE0NmZkZTBdIFtjMDAwMDAwMDAwMjY3MTljXSBTeVNfcmVhZCsweDZjLzB4MTEwDQo+IFtjMDAw
MDAwMWZhNDZmZTMwXSBbYzAwMDAwMDAwMDAwOTI2NF0gc3lzdGVtX2NhbGwrMHgzOC8weGQwDQo+
IA0KPiBpZS4gd2Ugd2VyZSBoYW5kbGluZyBhIHN5c3RlbSBjYWxsLCBhbmQgaXQgd2FzIFN5U19y
ZWFkKCkuDQo+IA0KPiBTaWduZWQtb2ZmLWJ5OiBNaWNoYWVsIEVsbGVybWFuIDxtcGVAZWxsZXJt
YW4uaWQuYXU+DQo+IC0tLQ0KPiAgYXJjaC9wb3dlcnBjL2tlcm5lbC9lbnRyeV82NC5TIHwgMTgg
KysrKysrKysrLS0tLS0tLS0tDQo+ICAxIGZpbGUgY2hhbmdlZCwgOSBpbnNlcnRpb25zKCspLCA5
IGRlbGV0aW9ucygtKQ0KPiANCj4gZGlmZiAtLWdpdCBhL2FyY2gvcG93ZXJwYy9rZXJuZWwvZW50
cnlfNjQuUyBiL2FyY2gvcG93ZXJwYy9rZXJuZWwvZW50cnlfNjQuUw0KPiBpbmRleCAwOTA1Yzhk
YTkwZjEuLmQ4ODI4ZTUwZGJlZiAxMDA2NDQNCj4gLS0tIGEvYXJjaC9wb3dlcnBjL2tlcm5lbC9l
bnRyeV82NC5TDQo+ICsrKyBiL2FyY2gvcG93ZXJwYy9rZXJuZWwvZW50cnlfNjQuUw0KPiBAQCAt
MTc4LDcgKzE3OCw3IEBAIHN5c3RlbV9jYWxsOgkJCS8qIGxhYmVsIHRoaXMgc28gc3RhY2sgdHJh
Y2VzIGxvb2sgc2FuZSAqLw0KPiAgCW10Y3RyICAgcjEyDQo+ICAJYmN0cmwJCQkvKiBDYWxsIGhh
bmRsZXIgKi8NCg0KV2h5IG5vdCBhZGQgYSAnbm9wJyBoZXJlIGluc3RlYWQ/DQoNCj4gLXN5c2Nh
bGxfZXhpdDoNCj4gKy5Mc3lzY2FsbF9leGl0Og0KPiAgCXN0ZAlyMyxSRVNVTFQocjEpDQo+ICAj
aWZkZWYgU0hPV19TWVNDQUxMUw0KPiAgCWJsCWRvX3Nob3dfc3lzY2FsbF9leGl0DQo+IEBAIC0y
NzAsNyArMjcwLDcgQEAgc3lzY2FsbF9kb3RyYWNlOg0KLi4uDQoNCglEYXZpZA0KDQo=
^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: [PATCH] powerpc/kernel: Make syscall_exit a local label
2014-12-05 10:27 ` David Laight
@ 2014-12-15 3:03 ` Michael Ellerman
0 siblings, 0 replies; 3+ messages in thread
From: Michael Ellerman @ 2014-12-15 3:03 UTC (permalink / raw)
To: David Laight; +Cc: linuxppc-dev@ozlabs.org
On Fri, 2014-12-05 at 10:27 +0000, David Laight wrote:
> From: Michael Ellerman
> > diff --git a/arch/powerpc/kernel/entry_64.S b/arch/powerpc/kernel/entry_64.S
> > index 0905c8da90f1..d8828e50dbef 100644
> > --- a/arch/powerpc/kernel/entry_64.S
> > +++ b/arch/powerpc/kernel/entry_64.S
> > @@ -178,7 +178,7 @@ system_call: /* label this so stack traces look sane */
> > mtctr r12
> > bctrl /* Call handler */
>
> Why not add a 'nop' here instead?
Because we'd rather not add extra instructions to the syscall path unless we
really need to. A local label seems like the preferable solution to me.
cheers
^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2014-12-15 3:03 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2014-12-05 10:16 [PATCH] powerpc/kernel: Make syscall_exit a local label Michael Ellerman
2014-12-05 10:27 ` David Laight
2014-12-15 3:03 ` Michael Ellerman
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).