Thread (18 messages) 18 messages, 5 authors, 2018-07-31

Re: [PATCH v2 04/10] powerpc/traps: Use REG_FMT in show_signal_msg()

From: Michael Ellerman <mpe@ellerman.id.au>
Date: 2018-07-31 09:32:40
Also in: lkml

Murilo Opsfelder Araujo [off-list ref] writes:
On Mon, Jul 30, 2018 at 06:30:47PM +0200, LEROY Christophe wrote:
quoted
Murilo Opsfelder Araujo [off-list ref] a =C3=A9crit=C2=A0:
quoted
On Fri, Jul 27, 2018 at 06:40:23PM +0200, LEROY Christophe wrote:
quoted
Murilo Opsfelder Araujo [off-list ref] a =C3=A9crit=C2=A0:
quoted
Simplify the message format by using REG_FMT as the register forma=
t.  This
quoted
quoted
quoted
quoted
avoids having two different formats and avoids checking for MSR_64=
BIT.
quoted
quoted
quoted
Are you sure it is what we want ?
Yes.
quoted
Won't it change the behaviour for a 32 bits app running on a 64bits =
kernel ?
quoted
quoted
In fact, this changes how many zeroes are prefixed when displaying the
registers
(%016lx vs. %08lx format).  For example, 32-bits userspace, 64-bits ke=
rnel:
quoted
Indeed that's what I suspected. What is the real benefit of this change ?
Why not keep the current format for 32bits userspace ? All those leading
zeroes are pointless to me.
One of the benefits is simplifying the code by removing some checks.  Ano=
ther is
deduplicating almost identical format strings in favor of a unified one.

After reading Joe's comment [1], %px seems to be the format we're looking=
 for.
An extract from Documentation/core-api/printk-formats.rst:

  "%px is functionally equivalent to %lx (or %lu). %px is preferred becau=
se it
  is more uniquely grep'able."

So I guess we don't need to worry about the format (%016lx vs. %08lx), le=
t's
just use %px, as per the guideline.
I don't think I like %px.

It makes the format string cleaner, but it means we have to cast
everything to void * which is ugly as heck.

I actually don't think the leading zeroes are helpful at all in the
signal message, ie. we should just use %lx there.

They are useful in show_regs() because we want everything to line up.

So I think I'll drop patch 3 and use 0x%lx in show_signal_msg(), meaning
we end up with, eg:

  [   73.414535] segv[3759]: segfault (11) at 0x0 nip 0x10000420 lr 0xfe618=
54 code 0x1 in segv[10000000+10000]
  [   73.414641] segv[3759]: code: 4e800421 80010014 38210010 7c0803a6 4bff=
ff30 9421ffd0 93e1002c 7c3f0b78
  [   73.414665] segv[3759]: code: 39200000 913f001c 813f001c 39400001 <914=
90000> 39200000 7d234b78 397f0030


I'll do that unless anyone screams loudly, because it would be nice to
get this into 4.19.

cheers
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help