All of lore.kernel.org
 help / color / mirror / Atom feed
From: Arnaldo Carvalho de Melo <acme@kernel.org>
To: Thomas-Mich Richter <tmricht@linux.ibm.com>
Cc: mpe@ellerman.id.au, linux-kernel@vger.kernel.org,
	linux-perf-users@vger.kernel.org, brueckner@linux.vnet.ibm.com,
	schwidefsky@de.ibm.com, heiko.carstens@de.ibm.com
Subject: Re: [PATCH 2/3] perf report: Add raw report support for s390 auxiliary trace
Date: Wed, 8 Aug 2018 13:08:43 -0300	[thread overview]
Message-ID: <20180808160843.GC9543@kernel.org> (raw)
In-Reply-To: <20180808155921.GB9543@kernel.org>

Em Wed, Aug 08, 2018 at 12:59:21PM -0300, Arnaldo Carvalho de Melo escreveu:
> Em Wed, Aug 08, 2018 at 12:53:28PM -0300, Arnaldo Carvalho de Melo escreveu:
> > Em Wed, Aug 08, 2018 at 08:39:58AM +0200, Thomas-Mich Richter escreveu:
> > > On 08/08/2018 05:37 AM, mpe@ellerman.id.au wrote:
> > > > Thomas Richter <tmricht@linux.ibm.com> writes:
> > > >> Add support for s390 auxiliary trace support.
> > > >> Use 'perf record -e rbd000' to create the perf.data file.
> > > >> The event also has the symbolic name SF_CYCLES_BASIC_DIAG,
> > > >> using 'perf record -e SF_CYCLES_BASIC_DIAG' is equivalent.
> > > > ...
> > > >>
> > > >> Signed-off-by: Thomas Richter <tmricht@linux.ibm.com>
> > > >> Reviewed-by: Hendrik Brueckner <brueckner@linux.ibm.com>
> > > >> ---
> > > >>  tools/perf/util/s390-cpumsf-kernel.h |  71 ++++++++
> > > >>  tools/perf/util/s390-cpumsf.c        | 244 ++++++++++++++++++++++++++-
> > > >>  2 files changed, 314 insertions(+), 1 deletion(-)
> > > >>  create mode 100644 tools/perf/util/s390-cpumsf-kernel.h
> > > > 
> > > > 
> > > > I'm seeing a build break on ppc64le which seems to be caused by this
> > > > commit (I haven't bisected):
> > > > 
> > > >   util/s390-cpumsf.c: In function ‘trailer_timestamp’:
> > > >   util/s390-cpumsf.c:222:2: error: dereferencing type-punned pointer will break strict-aliasing rules [-Werror=strict-aliasing]
> > > >     return *((unsigned long long *) &te->timestamp[te->t]);
> > > >     ^
> > > > 
> > > > 
> > > > And on powerpc big endian:
> > > >   In file included from util/cpumap.h:10:0,
> > > >                    from util/s390-cpumsf.c:150:
> > > >   util/s390-cpumsf.c: In function ‘s390_cpumsf_basic_show’:
> > > >   util/s390-cpumsf.c:187:10: error: format ‘%lx’ expects argument of type ‘long unsigned int’, but argument 4 has type ‘size_t {aka unsigned int}’ [-Werror=format=]
> > > >      pr_err("Invalid AUX trace basic entry [%#08lx]\n", pos);
> > > >             ^
> > > > 
> > > > cheers
> > > > 
> > > 
> > > Can you please try this patch. Thanks a lot
> > 
> > Ok, this was making the build fail as well on some containers here:
> 
> Ok, failed in another container:
> 
>   11 centos:6                      : gcc (GCC) 4.4.7 20120313 (Red Hat 4.4.7-18)
> 
>   CC       /tmp/build/perf/tests/sample-parsing.o
> cc1: warnings being treated as errors
> In file included from util/s390-cpumsf.c:161:
> util/s390-cpumsf-kernel.h:16: error: packed attribute is unnecessary for 'def'
> util/s390-cpumsf-kernel.h:25: error: packed attribute is unnecessary for 'CL'
> util/s390-cpumsf-kernel.h:28: error: packed attribute is unnecessary for 'ia'
> util/s390-cpumsf-kernel.h:29: error: packed attribute is unnecessary for 'gpp'
> util/s390-cpumsf-kernel.h:30: error: packed attribute is unnecessary for 'hpp'
> util/s390-cpumsf-kernel.h:34: error: packed attribute is unnecessary for 'def'
> mv: cannot stat `/tmp/build/perf/util/.s390-cpumsf.o.tmp': No such file or directory
> make[4]: *** [/tmp/build/perf/util/s390-cpumsf.o] Error 1

So, this is how it shows using that __packed you have:

[acme@seventh perf]$ pahole -C hws_basic_entry ~/bin/perf
struct hws_basic_entry {
	unsigned int               def:16;               /*     0:16  4 */
	unsigned int               R:4;                  /*     0:12  4 */
	unsigned int               U:4;                  /*     0: 8  4 */
	unsigned int               z:2;                  /*     0: 6  4 */
	unsigned int               T:1;                  /*     0: 5  4 */
	unsigned int               W:1;                  /*     0: 4  4 */
	unsigned int               P:1;                  /*     0: 3  4 */
	unsigned int               AS:2;                 /*     0: 1  4 */
	unsigned int               I:1;                  /*     0: 0  4 */
	unsigned int               CL:2;                 /*     4:30  4 */
	unsigned int               prim_asn:16;          /*     4: 0  4 */

	/* XXX 14 bits hole, try to pack */

	long long unsigned int     ia;                   /*     8     8 */
	long long unsigned int     gpp;                  /*    16     8 */
	long long unsigned int     hpp;                  /*    24     8 */

	/* size: 32, cachelines: 1, members: 14 */
	/* bit holes: 1, sum bit holes: 14 bits */
	/* last cacheline: 32 bytes */
};
[acme@seventh perf]$

And:

[acme@seventh perf]$ pahole -C hws_diag_entry ~/bin/perf
struct hws_diag_entry {
	unsigned int               def:16;               /*     0:16  4 */
	unsigned int               R:15;                 /*     0: 1  4 */
	unsigned int               I:1;                  /*     0: 0  4 */
	u8                         data[0];              /*     4     0 */

	/* size: 4, cachelines: 1, members: 4 */
	/* last cacheline: 4 bytes */
};
[acme@seventh perf]$ 

Now, if we apply this patch:

[acme@seventh perf]$ pahole -C hws_basic_entry ~/bin/perf
struct hws_basic_entry {
	unsigned int               def:16;               /*     0:16  4 */
	unsigned int               R:4;                  /*     0:12  4 */
	unsigned int               U:4;                  /*     0: 8  4 */
	unsigned int               z:2;                  /*     0: 6  4 */
	unsigned int               T:1;                  /*     0: 5  4 */
	unsigned int               W:1;                  /*     0: 4  4 */
	unsigned int               P:1;                  /*     0: 3  4 */
	unsigned int               AS:2;                 /*     0: 1  4 */
	unsigned int               I:1;                  /*     0: 0  4 */
	unsigned int               CL:2;                 /*     4:30  4 */
	unsigned int               prim_asn:16;          /*     4: 0  4 */

	/* XXX 14 bits hole, try to pack */

	long long unsigned int     ia;                   /*     8     8 */
	long long unsigned int     gpp;                  /*    16     8 */
	long long unsigned int     hpp;                  /*    24     8 */

	/* size: 32, cachelines: 1, members: 14 */
	/* bit holes: 1, sum bit holes: 14 bits */
	/* last cacheline: 32 bytes */
};
[acme@seventh perf]$ 

See, no need for packing, that old gcc version is right, and the other
struct:

[acme@seventh perf]$ pahole -C hws_diag_entry ~/bin/perf
struct hws_diag_entry {
	unsigned int               def:16;               /*     0:16  4 */
	unsigned int               R:15;                 /*     0: 1  4 */
	unsigned int               I:1;                  /*     0: 0  4 */
	u8                         data[0];              /*     4     0 */

	/* size: 4, cachelines: 1, members: 4 */
	/* last cacheline: 4 bytes */
};
[acme@seventh perf]$

No need for __packed.

I'm removing that to avoid having this failling in compilers that have
such a warning, since we default to Werror.

Holler if there is something I'missing :-)

- Arnaldo

  reply	other threads:[~2018-08-08 16:08 UTC|newest]

Thread overview: 21+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-08-02  7:46 [PATCH 0/3] perf report: Add s390 auxiliary trace support Thomas Richter
2018-08-02  7:46 ` [PATCH 1/3] perf auxtrace: Support for perf report -D for s390 Thomas Richter
2018-08-02 12:49   ` Arnaldo Carvalho de Melo
2018-08-03 10:07     ` Hendrik Brueckner
2018-08-03 13:32       ` Arnaldo Carvalho de Melo
2018-08-18 11:22   ` [tip:perf/urgent] " tip-bot for Thomas Richter
2018-08-02  7:46 ` [PATCH 2/3] perf report: Add raw report support for s390 auxiliary trace Thomas Richter
2018-08-08  3:37   ` mpe
2018-08-08  3:37     ` mpe
2018-08-08  6:39     ` Thomas-Mich Richter
2018-08-08 15:53       ` Arnaldo Carvalho de Melo
2018-08-08 15:59         ` Arnaldo Carvalho de Melo
2018-08-08 16:08           ` Arnaldo Carvalho de Melo [this message]
2018-08-08 16:14             ` Arnaldo Carvalho de Melo
2018-08-08 16:42               ` Arnaldo Carvalho de Melo
2018-08-09  4:35                 ` Thomas-Mich Richter
2018-08-09 15:14                   ` Arnaldo Carvalho de Melo
2018-08-10  5:41                     ` Michael Ellerman
2018-08-18 11:23       ` [tip:perf/urgent] " tip-bot for Thomas Richter
2018-08-02  7:46 ` [PATCH 3/3] perf report: Add GUI " Thomas Richter
2018-08-18 11:23   ` [tip:perf/urgent] " tip-bot for Thomas Richter

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=20180808160843.GC9543@kernel.org \
    --to=acme@kernel.org \
    --cc=brueckner@linux.vnet.ibm.com \
    --cc=heiko.carstens@de.ibm.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-perf-users@vger.kernel.org \
    --cc=mpe@ellerman.id.au \
    --cc=schwidefsky@de.ibm.com \
    --cc=tmricht@linux.ibm.com \
    /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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.