All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH v1] perf: cs-etm: Fix ETMv4 CONFIGR entry in perf.data file
@ 2017-07-12 17:01 Mike Leach
  2017-07-17 15:11 ` Mathieu Poirier
  2017-07-21 14:50 ` Mathieu Poirier
  0 siblings, 2 replies; 10+ messages in thread
From: Mike Leach @ 2017-07-12 17:01 UTC (permalink / raw)
  To: linux-arm-kernel

The value passed into the perf.data file for the CONFIGR register in ETMv4
was incorrectly being set to the command line options/ETMv3 value.

Adds bit definitions and function to remap this value to the correct ETMv4
CONFIGR bit values for all selected options.

Signed-off-by: Mike Leach <mike.leach@linaro.org>
---
Changes for v1:
 - Added more people to the recipient list.

 include/linux/coresight-pmu.h       |  5 +++++
 tools/include/linux/coresight-pmu.h |  5 +++++
 tools/perf/arch/arm/util/cs-etm.c   | 28 +++++++++++++++++++++++++++-
 3 files changed, 37 insertions(+), 1 deletion(-)

diff --git a/include/linux/coresight-pmu.h b/include/linux/coresight-pmu.h
index 45852c2..edfeaba 100644
--- a/include/linux/coresight-pmu.h
+++ b/include/linux/coresight-pmu.h
@@ -26,6 +26,11 @@
 #define ETM_OPT_TS      28
 #define ETM_OPT_RETSTK	29
 
+/* ETMv4 CONFIGR programming bits for the ETM OPTs */
+#define ETM4_CFG_BIT_CYCACC	4
+#define ETM4_CFG_BIT_TS		11
+#define ETM4_CFG_BIT_RETSTK	12
+
 static inline int coresight_get_trace_id(int cpu)
 {
 	/*
diff --git a/tools/include/linux/coresight-pmu.h b/tools/include/linux/coresight-pmu.h
index 45852c2..edfeaba 100644
--- a/tools/include/linux/coresight-pmu.h
+++ b/tools/include/linux/coresight-pmu.h
@@ -26,6 +26,11 @@
 #define ETM_OPT_TS      28
 #define ETM_OPT_RETSTK	29
 
+/* ETMv4 CONFIGR programming bits for the ETM OPTs */
+#define ETM4_CFG_BIT_CYCACC	4
+#define ETM4_CFG_BIT_TS		11
+#define ETM4_CFG_BIT_RETSTK	12
+
 static inline int coresight_get_trace_id(int cpu)
 {
 	/*
diff --git a/tools/perf/arch/arm/util/cs-etm.c b/tools/perf/arch/arm/util/cs-etm.c
index 29361d9..997734b 100644
--- a/tools/perf/arch/arm/util/cs-etm.c
+++ b/tools/perf/arch/arm/util/cs-etm.c
@@ -266,6 +266,32 @@ static u64 cs_etm_get_config(struct auxtrace_record *itr)
 	return config;
 }
 
+#ifndef BIT
+#define BIT(N) (1UL << (N))
+#endif
+
+static u64 cs_etmv4_get_config(struct auxtrace_record *itr)
+{
+	u64 config = 0;
+	u64 config_opts = 0;
+
+	/*
+	 * The perf event variable config bits represent both
+	 * the command line options and register programming
+	 * bits in ETMv3/PTM. For ETMv4 we must remap options
+	 * to real bits
+	 */
+	config_opts = cs_etm_get_config(itr);
+	if (config_opts & BIT(ETM_OPT_CYCACC))
+		config |= BIT(ETM4_CFG_BIT_CYCACC);
+	if (config_opts & BIT(ETM_OPT_TS))
+		config |= BIT(ETM4_CFG_BIT_TS);
+	if (config_opts & BIT(ETM_OPT_RETSTK))
+		config |= BIT(ETM4_CFG_BIT_RETSTK);
+
+	return config;
+}
+
 static size_t
 cs_etm_info_priv_size(struct auxtrace_record *itr __maybe_unused,
 		      struct perf_evlist *evlist __maybe_unused)
@@ -363,7 +389,7 @@ static void cs_etm_get_metadata(int cpu, u32 *offset,
 		magic = __perf_cs_etmv4_magic;
 		/* Get trace configuration register */
 		info->priv[*offset + CS_ETMV4_TRCCONFIGR] =
-						cs_etm_get_config(itr);
+						cs_etmv4_get_config(itr);
 		/* Get traceID from the framework */
 		info->priv[*offset + CS_ETMV4_TRCTRACEIDR] =
 						coresight_get_trace_id(cpu);
-- 
2.7.4

^ permalink raw reply related	[flat|nested] 10+ messages in thread

* [PATCH v1] perf: cs-etm: Fix ETMv4 CONFIGR entry in perf.data file
  2017-07-12 17:01 [PATCH v1] perf: cs-etm: Fix ETMv4 CONFIGR entry in perf.data file Mike Leach
@ 2017-07-17 15:11 ` Mathieu Poirier
  2017-07-21 14:50 ` Mathieu Poirier
  1 sibling, 0 replies; 10+ messages in thread
From: Mathieu Poirier @ 2017-07-17 15:11 UTC (permalink / raw)
  To: linux-arm-kernel

On 12 July 2017 at 11:01, Mike Leach <mike.leach@linaro.org> wrote:
> The value passed into the perf.data file for the CONFIGR register in ETMv4
> was incorrectly being set to the command line options/ETMv3 value.
>
> Adds bit definitions and function to remap this value to the correct ETMv4
> CONFIGR bit values for all selected options.
>
> Signed-off-by: Mike Leach <mike.leach@linaro.org>
> ---
> Changes for v1:
>  - Added more people to the recipient list.
>
>  include/linux/coresight-pmu.h       |  5 +++++
>  tools/include/linux/coresight-pmu.h |  5 +++++
>  tools/perf/arch/arm/util/cs-etm.c   | 28 +++++++++++++++++++++++++++-
>  3 files changed, 37 insertions(+), 1 deletion(-)
>
> diff --git a/include/linux/coresight-pmu.h b/include/linux/coresight-pmu.h
> index 45852c2..edfeaba 100644
> --- a/include/linux/coresight-pmu.h
> +++ b/include/linux/coresight-pmu.h
> @@ -26,6 +26,11 @@
>  #define ETM_OPT_TS      28
>  #define ETM_OPT_RETSTK 29
>
> +/* ETMv4 CONFIGR programming bits for the ETM OPTs */
> +#define ETM4_CFG_BIT_CYCACC    4
> +#define ETM4_CFG_BIT_TS                11
> +#define ETM4_CFG_BIT_RETSTK    12
> +
>  static inline int coresight_get_trace_id(int cpu)
>  {
>         /*
> diff --git a/tools/include/linux/coresight-pmu.h b/tools/include/linux/coresight-pmu.h
> index 45852c2..edfeaba 100644
> --- a/tools/include/linux/coresight-pmu.h
> +++ b/tools/include/linux/coresight-pmu.h
> @@ -26,6 +26,11 @@
>  #define ETM_OPT_TS      28
>  #define ETM_OPT_RETSTK 29
>
> +/* ETMv4 CONFIGR programming bits for the ETM OPTs */
> +#define ETM4_CFG_BIT_CYCACC    4
> +#define ETM4_CFG_BIT_TS                11
> +#define ETM4_CFG_BIT_RETSTK    12
> +
>  static inline int coresight_get_trace_id(int cpu)
>  {
>         /*
> diff --git a/tools/perf/arch/arm/util/cs-etm.c b/tools/perf/arch/arm/util/cs-etm.c
> index 29361d9..997734b 100644
> --- a/tools/perf/arch/arm/util/cs-etm.c
> +++ b/tools/perf/arch/arm/util/cs-etm.c
> @@ -266,6 +266,32 @@ static u64 cs_etm_get_config(struct auxtrace_record *itr)
>         return config;
>  }
>
> +#ifndef BIT
> +#define BIT(N) (1UL << (N))
> +#endif
> +
> +static u64 cs_etmv4_get_config(struct auxtrace_record *itr)
> +{
> +       u64 config = 0;
> +       u64 config_opts = 0;
> +
> +       /*
> +        * The perf event variable config bits represent both
> +        * the command line options and register programming
> +        * bits in ETMv3/PTM. For ETMv4 we must remap options
> +        * to real bits
> +        */
> +       config_opts = cs_etm_get_config(itr);
> +       if (config_opts & BIT(ETM_OPT_CYCACC))
> +               config |= BIT(ETM4_CFG_BIT_CYCACC);
> +       if (config_opts & BIT(ETM_OPT_TS))
> +               config |= BIT(ETM4_CFG_BIT_TS);
> +       if (config_opts & BIT(ETM_OPT_RETSTK))
> +               config |= BIT(ETM4_CFG_BIT_RETSTK);
> +
> +       return config;
> +}
> +
>  static size_t
>  cs_etm_info_priv_size(struct auxtrace_record *itr __maybe_unused,
>                       struct perf_evlist *evlist __maybe_unused)
> @@ -363,7 +389,7 @@ static void cs_etm_get_metadata(int cpu, u32 *offset,
>                 magic = __perf_cs_etmv4_magic;
>                 /* Get trace configuration register */
>                 info->priv[*offset + CS_ETMV4_TRCCONFIGR] =
> -                                               cs_etm_get_config(itr);
> +                                               cs_etmv4_get_config(itr);
>                 /* Get traceID from the framework */
>                 info->priv[*offset + CS_ETMV4_TRCTRACEIDR] =
>                                                 coresight_get_trace_id(cpu);
> --
> 2.7.4
>

Acked-by: Mathieu Poirier <mathieu.poirier@linaro.org>

^ permalink raw reply	[flat|nested] 10+ messages in thread

* [PATCH v1] perf: cs-etm: Fix ETMv4 CONFIGR entry in perf.data file
  2017-07-12 17:01 [PATCH v1] perf: cs-etm: Fix ETMv4 CONFIGR entry in perf.data file Mike Leach
  2017-07-17 15:11 ` Mathieu Poirier
@ 2017-07-21 14:50 ` Mathieu Poirier
  2017-07-21 16:19   ` Arnaldo Carvalho de Melo
  1 sibling, 1 reply; 10+ messages in thread
From: Mathieu Poirier @ 2017-07-21 14:50 UTC (permalink / raw)
  To: linux-arm-kernel

On 12 July 2017 at 11:01, Mike Leach <mike.leach@linaro.org> wrote:
> The value passed into the perf.data file for the CONFIGR register in ETMv4
> was incorrectly being set to the command line options/ETMv3 value.
>
> Adds bit definitions and function to remap this value to the correct ETMv4
> CONFIGR bit values for all selected options.
>
> Signed-off-by: Mike Leach <mike.leach@linaro.org>
> ---
> Changes for v1:
>  - Added more people to the recipient list.
>
>  include/linux/coresight-pmu.h       |  5 +++++
>  tools/include/linux/coresight-pmu.h |  5 +++++
>  tools/perf/arch/arm/util/cs-etm.c   | 28 +++++++++++++++++++++++++++-
>  3 files changed, 37 insertions(+), 1 deletion(-)
>
> diff --git a/include/linux/coresight-pmu.h b/include/linux/coresight-pmu.h
> index 45852c2..edfeaba 100644
> --- a/include/linux/coresight-pmu.h
> +++ b/include/linux/coresight-pmu.h
> @@ -26,6 +26,11 @@
>  #define ETM_OPT_TS      28
>  #define ETM_OPT_RETSTK 29
>
> +/* ETMv4 CONFIGR programming bits for the ETM OPTs */
> +#define ETM4_CFG_BIT_CYCACC    4
> +#define ETM4_CFG_BIT_TS                11
> +#define ETM4_CFG_BIT_RETSTK    12
> +
>  static inline int coresight_get_trace_id(int cpu)
>  {
>         /*
> diff --git a/tools/include/linux/coresight-pmu.h b/tools/include/linux/coresight-pmu.h
> index 45852c2..edfeaba 100644
> --- a/tools/include/linux/coresight-pmu.h
> +++ b/tools/include/linux/coresight-pmu.h
> @@ -26,6 +26,11 @@
>  #define ETM_OPT_TS      28
>  #define ETM_OPT_RETSTK 29
>
> +/* ETMv4 CONFIGR programming bits for the ETM OPTs */
> +#define ETM4_CFG_BIT_CYCACC    4
> +#define ETM4_CFG_BIT_TS                11
> +#define ETM4_CFG_BIT_RETSTK    12
> +
>  static inline int coresight_get_trace_id(int cpu)
>  {
>         /*
> diff --git a/tools/perf/arch/arm/util/cs-etm.c b/tools/perf/arch/arm/util/cs-etm.c
> index 29361d9..997734b 100644
> --- a/tools/perf/arch/arm/util/cs-etm.c
> +++ b/tools/perf/arch/arm/util/cs-etm.c
> @@ -266,6 +266,32 @@ static u64 cs_etm_get_config(struct auxtrace_record *itr)
>         return config;
>  }
>
> +#ifndef BIT
> +#define BIT(N) (1UL << (N))
> +#endif
> +
> +static u64 cs_etmv4_get_config(struct auxtrace_record *itr)
> +{
> +       u64 config = 0;
> +       u64 config_opts = 0;
> +
> +       /*
> +        * The perf event variable config bits represent both
> +        * the command line options and register programming
> +        * bits in ETMv3/PTM. For ETMv4 we must remap options
> +        * to real bits
> +        */
> +       config_opts = cs_etm_get_config(itr);
> +       if (config_opts & BIT(ETM_OPT_CYCACC))
> +               config |= BIT(ETM4_CFG_BIT_CYCACC);
> +       if (config_opts & BIT(ETM_OPT_TS))
> +               config |= BIT(ETM4_CFG_BIT_TS);
> +       if (config_opts & BIT(ETM_OPT_RETSTK))
> +               config |= BIT(ETM4_CFG_BIT_RETSTK);
> +
> +       return config;
> +}
> +
>  static size_t
>  cs_etm_info_priv_size(struct auxtrace_record *itr __maybe_unused,
>                       struct perf_evlist *evlist __maybe_unused)
> @@ -363,7 +389,7 @@ static void cs_etm_get_metadata(int cpu, u32 *offset,
>                 magic = __perf_cs_etmv4_magic;
>                 /* Get trace configuration register */
>                 info->priv[*offset + CS_ETMV4_TRCCONFIGR] =
> -                                               cs_etm_get_config(itr);
> +                                               cs_etmv4_get_config(itr);
>                 /* Get traceID from the framework */
>                 info->priv[*offset + CS_ETMV4_TRCTRACEIDR] =
>                                                 coresight_get_trace_id(cpu);

I have tested this patch on my side and things work as advertised now.

Arnaldo, if you want to pick this up through your tree then:

Acked-by: Mathieu Poirier <mathieu.poirier@linaro.org>

Otherwise I'll get this, whatever you prefer.

Thanks,
Mathieu.

> --
> 2.7.4
>

^ permalink raw reply	[flat|nested] 10+ messages in thread

* [PATCH v1] perf: cs-etm: Fix ETMv4 CONFIGR entry in perf.data file
  2017-07-21 14:50 ` Mathieu Poirier
@ 2017-07-21 16:19   ` Arnaldo Carvalho de Melo
  2017-07-21 18:35     ` Arnaldo Carvalho de Melo
  0 siblings, 1 reply; 10+ messages in thread
From: Arnaldo Carvalho de Melo @ 2017-07-21 16:19 UTC (permalink / raw)
  To: linux-arm-kernel

Em Fri, Jul 21, 2017 at 08:50:09AM -0600, Mathieu Poirier escreveu:
> On 12 July 2017 at 11:01, Mike Leach <mike.leach@linaro.org> wrote:
> > The value passed into the perf.data file for the CONFIGR register in ETMv4
> > was incorrectly being set to the command line options/ETMv3 value.
> >
> >                 info->priv[*offset + CS_ETMV4_TRCTRACEIDR] =
> >                                                 coresight_get_trace_id(cpu);
> 
> I have tested this patch on my side and things work as advertised now.
> 
> Arnaldo, if you want to pick this up through your tree then:
> 
> Acked-by: Mathieu Poirier <mathieu.poirier@linaro.org>
> 
> Otherwise I'll get this, whatever you prefer.

I'll get it, thanks for the ping,

- Arnaldo

^ permalink raw reply	[flat|nested] 10+ messages in thread

* [PATCH v1] perf: cs-etm: Fix ETMv4 CONFIGR entry in perf.data file
  2017-07-21 16:19   ` Arnaldo Carvalho de Melo
@ 2017-07-21 18:35     ` Arnaldo Carvalho de Melo
  2017-07-21 18:37       ` Arnaldo Carvalho de Melo
  0 siblings, 1 reply; 10+ messages in thread
From: Arnaldo Carvalho de Melo @ 2017-07-21 18:35 UTC (permalink / raw)
  To: linux-arm-kernel

Em Fri, Jul 21, 2017 at 01:19:16PM -0300, Arnaldo Carvalho de Melo escreveu:
> Em Fri, Jul 21, 2017 at 08:50:09AM -0600, Mathieu Poirier escreveu:
> > On 12 July 2017 at 11:01, Mike Leach <mike.leach@linaro.org> wrote:
> > > The value passed into the perf.data file for the CONFIGR register in ETMv4
> > > was incorrectly being set to the command line options/ETMv3 value.
> > >
> > >                 info->priv[*offset + CS_ETMV4_TRCTRACEIDR] =
> > >                                                 coresight_get_trace_id(cpu);
> > 
> > I have tested this patch on my side and things work as advertised now.
> > 
> > Arnaldo, if you want to pick this up through your tree then:
> > 
> > Acked-by: Mathieu Poirier <mathieu.poirier@linaro.org>
> > 
> > Otherwise I'll get this, whatever you prefer.
> 
> I'll get it, thanks for the ping,

It is breaking the build in one of my containers, one with fedora 24 and
a android toolchain from http://dl.google.com/android/repository/android-ndk-r12b-linux-x86_64.zip

arch/arm/util/cs-etm.c: In function 'cs_etmv4_get_config':^M
arch/arm/util/cs-etm.c:289:24: error: 'ETM_OPT_RETSTK' undeclared (first use in this function)^M
  if (config_opts & BIT(ETM_OPT_RETSTK))

It builds as

NDK=/opt/android-ndk-r12b/
NDK_TOOLCHAIN=${NDK}/toolchains/arm-linux-androideabi-4.9/prebuilt/linux-x86_64/bin/arm-linux-androideabi-
NDK_SYSROOT=${NDK}/platforms/android-24/arch-arm
make -C /git/linux/tools/perf O=/tmp/build/perf WERROR=0 CFLAGS=${CFLAGS} ARCH=arm CROSS_COMPILE=${NDK_TOOLCHAIN} EXTRA_CFLAGS="-pie --sysroot=${NDK_SYSROOT}" 
Ideas?

- Arnaldo

^ permalink raw reply	[flat|nested] 10+ messages in thread

* [PATCH v1] perf: cs-etm: Fix ETMv4 CONFIGR entry in perf.data file
  2017-07-21 18:35     ` Arnaldo Carvalho de Melo
@ 2017-07-21 18:37       ` Arnaldo Carvalho de Melo
  2017-07-21 19:11         ` Arnaldo Carvalho de Melo
  0 siblings, 1 reply; 10+ messages in thread
From: Arnaldo Carvalho de Melo @ 2017-07-21 18:37 UTC (permalink / raw)
  To: linux-arm-kernel

Em Fri, Jul 21, 2017 at 03:35:33PM -0300, Arnaldo Carvalho de Melo escreveu:
> Em Fri, Jul 21, 2017 at 01:19:16PM -0300, Arnaldo Carvalho de Melo escreveu:
> > Em Fri, Jul 21, 2017 at 08:50:09AM -0600, Mathieu Poirier escreveu:
> > > On 12 July 2017 at 11:01, Mike Leach <mike.leach@linaro.org> wrote:
> > > > The value passed into the perf.data file for the CONFIGR register in ETMv4
> > > > was incorrectly being set to the command line options/ETMv3 value.
> > > >
> > > >                 info->priv[*offset + CS_ETMV4_TRCTRACEIDR] =
> > > >                                                 coresight_get_trace_id(cpu);
> > > 
> > > I have tested this patch on my side and things work as advertised now.
> > > 
> > > Arnaldo, if you want to pick this up through your tree then:
> > > 
> > > Acked-by: Mathieu Poirier <mathieu.poirier@linaro.org>
> > > 
> > > Otherwise I'll get this, whatever you prefer.
> > 
> > I'll get it, thanks for the ping,
> 
> It is breaking the build in one of my containers, one with fedora 24 and
> a android toolchain from http://dl.google.com/android/repository/android-ndk-r12b-linux-x86_64.zip
> 
> arch/arm/util/cs-etm.c: In function 'cs_etmv4_get_config':^M
> arch/arm/util/cs-etm.c:289:24: error: 'ETM_OPT_RETSTK' undeclared (first use in this function)^M
>   if (config_opts & BIT(ETM_OPT_RETSTK))
> 
> It builds as
> 
> NDK=/opt/android-ndk-r12b/
> NDK_TOOLCHAIN=${NDK}/toolchains/arm-linux-androideabi-4.9/prebuilt/linux-x86_64/bin/arm-linux-androideabi-
> NDK_SYSROOT=${NDK}/platforms/android-24/arch-arm
> make -C /git/linux/tools/perf O=/tmp/build/perf WERROR=0 CFLAGS=${CFLAGS} ARCH=arm CROSS_COMPILE=${NDK_TOOLCHAIN} EXTRA_CFLAGS="-pie --sysroot=${NDK_SYSROOT}" 
> Ideas?

Ok, it also fails on:

  14 debian:experimental-x-arm64: FAIL


Same problem:

  CC       /tmp/build/perf/arch/arm64/util/../../arm/util/cs-etm.o
  CC       /tmp/build/perf/util/config.o
arch/arm64/util/../../arm/util/cs-etm.c: In function 'cs_etmv4_get_config':
arch/arm64/util/../../arm/util/cs-etm.c:289:24: error: 'ETM_OPT_RETSTK' undeclared (first use in this function)
  if (config_opts & BIT(ETM_OPT_RETSTK))
                        ^
arch/arm64/util/../../arm/util/cs-etm.c:270:25: note: in definition of macro 'BIT'
 #define BIT(N) (1UL << (N))
                         ^
arch/arm64/util/../../arm/util/cs-etm.c:289:24: note: each undeclared identifier is reported only once for each function it appears in
  if (config_opts & BIT(ETM_OPT_RETSTK))
                        ^
arch/arm64/util/../../arm/util/cs-etm.c:270:25: note: in definition of macro 'BIT'
 #define BIT(N) (1UL << (N))
                         ^
mv: cannot stat '/tmp/build/perf/arch/arm64/util/../../arm/util/.cs-etm.o.tmp': No such file or directory
/git/linux/tools/build/Makefile.build:101: recipe for target '/tmp/build/perf/arch/arm64/util/../../arm/util/cs-etm.o' failed
make[6]: *** [/tmp/build/perf/arch/arm64/util/../../arm/util/cs-etm.o] Error 1
/git/linux/tools/build/Makefile.build:144: recipe for target 'util' failed
make[5]: *** [util] Error 2
/git/linux/tools/build/Makefile.build:144: recipe for target 'arm64' failed
make[4]: *** [arm64] Error 2
/git/linux/tools/build/Makefile.build:144: recipe for target 'arch' failed
make[3]: *** [arch] Error 2
make[3]: *** Waiting for unfinished jobs....
  CC       /tmp/build/perf/util/ctype.o

Builds with:

ARCH=arm64
TARGET=aarch64-linux-gnu
make ARCH=${ARCH} CROSS_COMPILE=${TARGET}- -C /git/linux/tools/perf O=/tmp/build/perf

- Arnaldo

^ permalink raw reply	[flat|nested] 10+ messages in thread

* [PATCH v1] perf: cs-etm: Fix ETMv4 CONFIGR entry in perf.data file
  2017-07-21 18:37       ` Arnaldo Carvalho de Melo
@ 2017-07-21 19:11         ` Arnaldo Carvalho de Melo
  2017-07-24 19:37           ` Mathieu Poirier
  0 siblings, 1 reply; 10+ messages in thread
From: Arnaldo Carvalho de Melo @ 2017-07-21 19:11 UTC (permalink / raw)
  To: linux-arm-kernel

Em Fri, Jul 21, 2017 at 03:37:40PM -0300, Arnaldo Carvalho de Melo escreveu:
> Em Fri, Jul 21, 2017 at 03:35:33PM -0300, Arnaldo Carvalho de Melo escreveu:
> > Em Fri, Jul 21, 2017 at 01:19:16PM -0300, Arnaldo Carvalho de Melo escreveu:
> > > Em Fri, Jul 21, 2017 at 08:50:09AM -0600, Mathieu Poirier escreveu:
> > > > On 12 July 2017 at 11:01, Mike Leach <mike.leach@linaro.org> wrote:
> > > > > The value passed into the perf.data file for the CONFIGR register in ETMv4
> > > > > was incorrectly being set to the command line options/ETMv3 value.
> > > > >
> > > > >                 info->priv[*offset + CS_ETMV4_TRCTRACEIDR] =
> > > > >                                                 coresight_get_trace_id(cpu);
> > > > 
> > > > I have tested this patch on my side and things work as advertised now.
> > > > 
> > > > Arnaldo, if you want to pick this up through your tree then:
> > > > 
> > > > Acked-by: Mathieu Poirier <mathieu.poirier@linaro.org>
> > > > 
> > > > Otherwise I'll get this, whatever you prefer.
> > > 
> > > I'll get it, thanks for the ping,
> > 
> > It is breaking the build in one of my containers, one with fedora 24 and
> > a android toolchain from http://dl.google.com/android/repository/android-ndk-r12b-linux-x86_64.zip
> > 
> > arch/arm/util/cs-etm.c: In function 'cs_etmv4_get_config':^M
> > arch/arm/util/cs-etm.c:289:24: error: 'ETM_OPT_RETSTK' undeclared (first use in this function)^M
> >   if (config_opts & BIT(ETM_OPT_RETSTK))
> > 
> > It builds as
> > 
> > NDK=/opt/android-ndk-r12b/
> > NDK_TOOLCHAIN=${NDK}/toolchains/arm-linux-androideabi-4.9/prebuilt/linux-x86_64/bin/arm-linux-androideabi-
> > NDK_SYSROOT=${NDK}/platforms/android-24/arch-arm
> > make -C /git/linux/tools/perf O=/tmp/build/perf WERROR=0 CFLAGS=${CFLAGS} ARCH=arm CROSS_COMPILE=${NDK_TOOLCHAIN} EXTRA_CFLAGS="-pie --sysroot=${NDK_SYSROOT}" 
> > Ideas?
> 
> Ok, it also fails on:
> 
>   14 debian:experimental-x-arm64: FAIL

Ok, we need a definition for ETM_OPT_RETSTK, just like we have for the
other two...

Nuked it from my perf/core branch, please resubmit.

- Arnaldo
 
> 
> Same problem:
> 
>   CC       /tmp/build/perf/arch/arm64/util/../../arm/util/cs-etm.o
>   CC       /tmp/build/perf/util/config.o
> arch/arm64/util/../../arm/util/cs-etm.c: In function 'cs_etmv4_get_config':
> arch/arm64/util/../../arm/util/cs-etm.c:289:24: error: 'ETM_OPT_RETSTK' undeclared (first use in this function)
>   if (config_opts & BIT(ETM_OPT_RETSTK))
>                         ^
> arch/arm64/util/../../arm/util/cs-etm.c:270:25: note: in definition of macro 'BIT'
>  #define BIT(N) (1UL << (N))
>                          ^
> arch/arm64/util/../../arm/util/cs-etm.c:289:24: note: each undeclared identifier is reported only once for each function it appears in
>   if (config_opts & BIT(ETM_OPT_RETSTK))
>                         ^
> arch/arm64/util/../../arm/util/cs-etm.c:270:25: note: in definition of macro 'BIT'
>  #define BIT(N) (1UL << (N))
>                          ^
> mv: cannot stat '/tmp/build/perf/arch/arm64/util/../../arm/util/.cs-etm.o.tmp': No such file or directory
> /git/linux/tools/build/Makefile.build:101: recipe for target '/tmp/build/perf/arch/arm64/util/../../arm/util/cs-etm.o' failed
> make[6]: *** [/tmp/build/perf/arch/arm64/util/../../arm/util/cs-etm.o] Error 1
> /git/linux/tools/build/Makefile.build:144: recipe for target 'util' failed
> make[5]: *** [util] Error 2
> /git/linux/tools/build/Makefile.build:144: recipe for target 'arm64' failed
> make[4]: *** [arm64] Error 2
> /git/linux/tools/build/Makefile.build:144: recipe for target 'arch' failed
> make[3]: *** [arch] Error 2
> make[3]: *** Waiting for unfinished jobs....
>   CC       /tmp/build/perf/util/ctype.o
> 
> Builds with:
> 
> ARCH=arm64
> TARGET=aarch64-linux-gnu
> make ARCH=${ARCH} CROSS_COMPILE=${TARGET}- -C /git/linux/tools/perf O=/tmp/build/perf
> 
> - Arnaldo

^ permalink raw reply	[flat|nested] 10+ messages in thread

* [PATCH v1] perf: cs-etm: Fix ETMv4 CONFIGR entry in perf.data file
  2017-07-21 19:11         ` Arnaldo Carvalho de Melo
@ 2017-07-24 19:37           ` Mathieu Poirier
  2017-08-01 16:17             ` Mathieu Poirier
  0 siblings, 1 reply; 10+ messages in thread
From: Mathieu Poirier @ 2017-07-24 19:37 UTC (permalink / raw)
  To: linux-arm-kernel

On 21 July 2017 at 13:11, Arnaldo Carvalho de Melo <acme@kernel.org> wrote:
> Em Fri, Jul 21, 2017 at 03:37:40PM -0300, Arnaldo Carvalho de Melo escreveu:
>> Em Fri, Jul 21, 2017 at 03:35:33PM -0300, Arnaldo Carvalho de Melo escreveu:
>> > Em Fri, Jul 21, 2017 at 01:19:16PM -0300, Arnaldo Carvalho de Melo escreveu:
>> > > Em Fri, Jul 21, 2017 at 08:50:09AM -0600, Mathieu Poirier escreveu:
>> > > > On 12 July 2017 at 11:01, Mike Leach <mike.leach@linaro.org> wrote:
>> > > > > The value passed into the perf.data file for the CONFIGR register in ETMv4
>> > > > > was incorrectly being set to the command line options/ETMv3 value.
>> > > > >
>> > > > >                 info->priv[*offset + CS_ETMV4_TRCTRACEIDR] =
>> > > > >                                                 coresight_get_trace_id(cpu);
>> > > >
>> > > > I have tested this patch on my side and things work as advertised now.
>> > > >
>> > > > Arnaldo, if you want to pick this up through your tree then:
>> > > >
>> > > > Acked-by: Mathieu Poirier <mathieu.poirier@linaro.org>
>> > > >
>> > > > Otherwise I'll get this, whatever you prefer.
>> > >
>> > > I'll get it, thanks for the ping,
>> >
>> > It is breaking the build in one of my containers, one with fedora 24 and
>> > a android toolchain from http://dl.google.com/android/repository/android-ndk-r12b-linux-x86_64.zip
>> >
>> > arch/arm/util/cs-etm.c: In function 'cs_etmv4_get_config':^M
>> > arch/arm/util/cs-etm.c:289:24: error: 'ETM_OPT_RETSTK' undeclared (first use in this function)^M
>> >   if (config_opts & BIT(ETM_OPT_RETSTK))
>> >
>> > It builds as
>> >
>> > NDK=/opt/android-ndk-r12b/
>> > NDK_TOOLCHAIN=${NDK}/toolchains/arm-linux-androideabi-4.9/prebuilt/linux-x86_64/bin/arm-linux-androideabi-
>> > NDK_SYSROOT=${NDK}/platforms/android-24/arch-arm
>> > make -C /git/linux/tools/perf O=/tmp/build/perf WERROR=0 CFLAGS=${CFLAGS} ARCH=arm CROSS_COMPILE=${NDK_TOOLCHAIN} EXTRA_CFLAGS="-pie --sysroot=${NDK_SYSROOT}"
>> > Ideas?
>>
>> Ok, it also fails on:
>>
>>   14 debian:experimental-x-arm64: FAIL
>
> Ok, we need a definition for ETM_OPT_RETSTK, just like we have for the
> other two...
>
> Nuked it from my perf/core branch, please resubmit.

Symbol ETM_OPT_RETSTK was added as part of another patch [1] that is
already in my CoreSight tree.  Do you mind if we make this one go
through my tree then?

Thanks,
Mathieu

[1]. https://www.spinics.net/lists/arm-kernel/msg593008.html

> - Arnaldo
>
>>
>> Same problem:
>>
>>   CC       /tmp/build/perf/arch/arm64/util/../../arm/util/cs-etm.o
>>   CC       /tmp/build/perf/util/config.o
>> arch/arm64/util/../../arm/util/cs-etm.c: In function 'cs_etmv4_get_config':
>> arch/arm64/util/../../arm/util/cs-etm.c:289:24: error: 'ETM_OPT_RETSTK' undeclared (first use in this function)
>>   if (config_opts & BIT(ETM_OPT_RETSTK))
>>                         ^
>> arch/arm64/util/../../arm/util/cs-etm.c:270:25: note: in definition of macro 'BIT'
>>  #define BIT(N) (1UL << (N))
>>                          ^
>> arch/arm64/util/../../arm/util/cs-etm.c:289:24: note: each undeclared identifier is reported only once for each function it appears in
>>   if (config_opts & BIT(ETM_OPT_RETSTK))
>>                         ^
>> arch/arm64/util/../../arm/util/cs-etm.c:270:25: note: in definition of macro 'BIT'
>>  #define BIT(N) (1UL << (N))
>>                          ^
>> mv: cannot stat '/tmp/build/perf/arch/arm64/util/../../arm/util/.cs-etm.o.tmp': No such file or directory
>> /git/linux/tools/build/Makefile.build:101: recipe for target '/tmp/build/perf/arch/arm64/util/../../arm/util/cs-etm.o' failed
>> make[6]: *** [/tmp/build/perf/arch/arm64/util/../../arm/util/cs-etm.o] Error 1
>> /git/linux/tools/build/Makefile.build:144: recipe for target 'util' failed
>> make[5]: *** [util] Error 2
>> /git/linux/tools/build/Makefile.build:144: recipe for target 'arm64' failed
>> make[4]: *** [arm64] Error 2
>> /git/linux/tools/build/Makefile.build:144: recipe for target 'arch' failed
>> make[3]: *** [arch] Error 2
>> make[3]: *** Waiting for unfinished jobs....
>>   CC       /tmp/build/perf/util/ctype.o
>>
>> Builds with:
>>
>> ARCH=arm64
>> TARGET=aarch64-linux-gnu
>> make ARCH=${ARCH} CROSS_COMPILE=${TARGET}- -C /git/linux/tools/perf O=/tmp/build/perf
>>
>> - Arnaldo

^ permalink raw reply	[flat|nested] 10+ messages in thread

* [PATCH v1] perf: cs-etm: Fix ETMv4 CONFIGR entry in perf.data file
  2017-07-24 19:37           ` Mathieu Poirier
@ 2017-08-01 16:17             ` Mathieu Poirier
  2017-08-01 16:44               ` Arnaldo Carvalho de Melo
  0 siblings, 1 reply; 10+ messages in thread
From: Mathieu Poirier @ 2017-08-01 16:17 UTC (permalink / raw)
  To: linux-arm-kernel

On 24 July 2017 at 13:37, Mathieu Poirier <mathieu.poirier@linaro.org> wrote:
> On 21 July 2017 at 13:11, Arnaldo Carvalho de Melo <acme@kernel.org> wrote:
>> Em Fri, Jul 21, 2017 at 03:37:40PM -0300, Arnaldo Carvalho de Melo escreveu:
>>> Em Fri, Jul 21, 2017 at 03:35:33PM -0300, Arnaldo Carvalho de Melo escreveu:
>>> > Em Fri, Jul 21, 2017 at 01:19:16PM -0300, Arnaldo Carvalho de Melo escreveu:
>>> > > Em Fri, Jul 21, 2017 at 08:50:09AM -0600, Mathieu Poirier escreveu:
>>> > > > On 12 July 2017 at 11:01, Mike Leach <mike.leach@linaro.org> wrote:
>>> > > > > The value passed into the perf.data file for the CONFIGR register in ETMv4
>>> > > > > was incorrectly being set to the command line options/ETMv3 value.
>>> > > > >
>>> > > > >                 info->priv[*offset + CS_ETMV4_TRCTRACEIDR] =
>>> > > > >                                                 coresight_get_trace_id(cpu);
>>> > > >
>>> > > > I have tested this patch on my side and things work as advertised now.
>>> > > >
>>> > > > Arnaldo, if you want to pick this up through your tree then:
>>> > > >
>>> > > > Acked-by: Mathieu Poirier <mathieu.poirier@linaro.org>
>>> > > >
>>> > > > Otherwise I'll get this, whatever you prefer.
>>> > >
>>> > > I'll get it, thanks for the ping,
>>> >
>>> > It is breaking the build in one of my containers, one with fedora 24 and
>>> > a android toolchain from http://dl.google.com/android/repository/android-ndk-r12b-linux-x86_64.zip
>>> >
>>> > arch/arm/util/cs-etm.c: In function 'cs_etmv4_get_config':^M
>>> > arch/arm/util/cs-etm.c:289:24: error: 'ETM_OPT_RETSTK' undeclared (first use in this function)^M
>>> >   if (config_opts & BIT(ETM_OPT_RETSTK))
>>> >
>>> > It builds as
>>> >
>>> > NDK=/opt/android-ndk-r12b/
>>> > NDK_TOOLCHAIN=${NDK}/toolchains/arm-linux-androideabi-4.9/prebuilt/linux-x86_64/bin/arm-linux-androideabi-
>>> > NDK_SYSROOT=${NDK}/platforms/android-24/arch-arm
>>> > make -C /git/linux/tools/perf O=/tmp/build/perf WERROR=0 CFLAGS=${CFLAGS} ARCH=arm CROSS_COMPILE=${NDK_TOOLCHAIN} EXTRA_CFLAGS="-pie --sysroot=${NDK_SYSROOT}"
>>> > Ideas?
>>>
>>> Ok, it also fails on:
>>>
>>>   14 debian:experimental-x-arm64: FAIL
>>
>> Ok, we need a definition for ETM_OPT_RETSTK, just like we have for the
>> other two...
>>
>> Nuked it from my perf/core branch, please resubmit.
>
> Symbol ETM_OPT_RETSTK was added as part of another patch [1] that is
> already in my CoreSight tree.  Do you mind if we make this one go
> through my tree then?

I haven't heard back from this so I'll assume you want me to take the patch.

>
> Thanks,
> Mathieu
>
> [1]. https://www.spinics.net/lists/arm-kernel/msg593008.html
>
>> - Arnaldo
>>
>>>
>>> Same problem:
>>>
>>>   CC       /tmp/build/perf/arch/arm64/util/../../arm/util/cs-etm.o
>>>   CC       /tmp/build/perf/util/config.o
>>> arch/arm64/util/../../arm/util/cs-etm.c: In function 'cs_etmv4_get_config':
>>> arch/arm64/util/../../arm/util/cs-etm.c:289:24: error: 'ETM_OPT_RETSTK' undeclared (first use in this function)
>>>   if (config_opts & BIT(ETM_OPT_RETSTK))
>>>                         ^
>>> arch/arm64/util/../../arm/util/cs-etm.c:270:25: note: in definition of macro 'BIT'
>>>  #define BIT(N) (1UL << (N))
>>>                          ^
>>> arch/arm64/util/../../arm/util/cs-etm.c:289:24: note: each undeclared identifier is reported only once for each function it appears in
>>>   if (config_opts & BIT(ETM_OPT_RETSTK))
>>>                         ^
>>> arch/arm64/util/../../arm/util/cs-etm.c:270:25: note: in definition of macro 'BIT'
>>>  #define BIT(N) (1UL << (N))
>>>                          ^
>>> mv: cannot stat '/tmp/build/perf/arch/arm64/util/../../arm/util/.cs-etm.o.tmp': No such file or directory
>>> /git/linux/tools/build/Makefile.build:101: recipe for target '/tmp/build/perf/arch/arm64/util/../../arm/util/cs-etm.o' failed
>>> make[6]: *** [/tmp/build/perf/arch/arm64/util/../../arm/util/cs-etm.o] Error 1
>>> /git/linux/tools/build/Makefile.build:144: recipe for target 'util' failed
>>> make[5]: *** [util] Error 2
>>> /git/linux/tools/build/Makefile.build:144: recipe for target 'arm64' failed
>>> make[4]: *** [arm64] Error 2
>>> /git/linux/tools/build/Makefile.build:144: recipe for target 'arch' failed
>>> make[3]: *** [arch] Error 2
>>> make[3]: *** Waiting for unfinished jobs....
>>>   CC       /tmp/build/perf/util/ctype.o
>>>
>>> Builds with:
>>>
>>> ARCH=arm64
>>> TARGET=aarch64-linux-gnu
>>> make ARCH=${ARCH} CROSS_COMPILE=${TARGET}- -C /git/linux/tools/perf O=/tmp/build/perf
>>>
>>> - Arnaldo

^ permalink raw reply	[flat|nested] 10+ messages in thread

* [PATCH v1] perf: cs-etm: Fix ETMv4 CONFIGR entry in perf.data file
  2017-08-01 16:17             ` Mathieu Poirier
@ 2017-08-01 16:44               ` Arnaldo Carvalho de Melo
  0 siblings, 0 replies; 10+ messages in thread
From: Arnaldo Carvalho de Melo @ 2017-08-01 16:44 UTC (permalink / raw)
  To: linux-arm-kernel

Em Tue, Aug 01, 2017 at 10:17:56AM -0600, Mathieu Poirier escreveu:
> On 24 July 2017 at 13:37, Mathieu Poirier <mathieu.poirier@linaro.org> wrote:
> > On 21 July 2017 at 13:11, Arnaldo Carvalho de Melo <acme@kernel.org> wrote:
> >> Em Fri, Jul 21, 2017 at 03:37:40PM -0300, Arnaldo Carvalho de Melo escreveu:
> >>> Em Fri, Jul 21, 2017 at 03:35:33PM -0300, Arnaldo Carvalho de Melo escreveu:
> >>> > Em Fri, Jul 21, 2017 at 01:19:16PM -0300, Arnaldo Carvalho de Melo escreveu:
> >>> > > Em Fri, Jul 21, 2017 at 08:50:09AM -0600, Mathieu Poirier escreveu:
> >>> > > > On 12 July 2017 at 11:01, Mike Leach <mike.leach@linaro.org> wrote:
> >>> > > > > The value passed into the perf.data file for the CONFIGR register in ETMv4
> >>> > > > > was incorrectly being set to the command line options/ETMv3 value.
> >>> > > > >
> >>> > > > >                 info->priv[*offset + CS_ETMV4_TRCTRACEIDR] =
> >>> > > > >                                                 coresight_get_trace_id(cpu);
> >>> > > >
> >>> > > > I have tested this patch on my side and things work as advertised now.
> >>> > > >
> >>> > > > Arnaldo, if you want to pick this up through your tree then:
> >>> > > >
> >>> > > > Acked-by: Mathieu Poirier <mathieu.poirier@linaro.org>
> >>> > > >
> >>> > > > Otherwise I'll get this, whatever you prefer.
> >>> > >
> >>> > > I'll get it, thanks for the ping,
> >>> >
> >>> > It is breaking the build in one of my containers, one with fedora 24 and
> >>> > a android toolchain from http://dl.google.com/android/repository/android-ndk-r12b-linux-x86_64.zip
> >>> >
> >>> > arch/arm/util/cs-etm.c: In function 'cs_etmv4_get_config':^M
> >>> > arch/arm/util/cs-etm.c:289:24: error: 'ETM_OPT_RETSTK' undeclared (first use in this function)^M
> >>> >   if (config_opts & BIT(ETM_OPT_RETSTK))
> >>> >
> >>> > It builds as
> >>> >
> >>> > NDK=/opt/android-ndk-r12b/
> >>> > NDK_TOOLCHAIN=${NDK}/toolchains/arm-linux-androideabi-4.9/prebuilt/linux-x86_64/bin/arm-linux-androideabi-
> >>> > NDK_SYSROOT=${NDK}/platforms/android-24/arch-arm
> >>> > make -C /git/linux/tools/perf O=/tmp/build/perf WERROR=0 CFLAGS=${CFLAGS} ARCH=arm CROSS_COMPILE=${NDK_TOOLCHAIN} EXTRA_CFLAGS="-pie --sysroot=${NDK_SYSROOT}"
> >>> > Ideas?
> >>>
> >>> Ok, it also fails on:
> >>>
> >>>   14 debian:experimental-x-arm64: FAIL
> >>
> >> Ok, we need a definition for ETM_OPT_RETSTK, just like we have for the
> >> other two...
> >>
> >> Nuked it from my perf/core branch, please resubmit.
> >
> > Symbol ETM_OPT_RETSTK was added as part of another patch [1] that is
> > already in my CoreSight tree.  Do you mind if we make this one go
> > through my tree then?
> 
> I haven't heard back from this so I'll assume you want me to take the patch.

Yeah, I should've replied to you, but since this depends on stuff only
in your tree, going thru that is sensible :-)

Ack.

- Arnaldo

^ permalink raw reply	[flat|nested] 10+ messages in thread

end of thread, other threads:[~2017-08-01 16:44 UTC | newest]

Thread overview: 10+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2017-07-12 17:01 [PATCH v1] perf: cs-etm: Fix ETMv4 CONFIGR entry in perf.data file Mike Leach
2017-07-17 15:11 ` Mathieu Poirier
2017-07-21 14:50 ` Mathieu Poirier
2017-07-21 16:19   ` Arnaldo Carvalho de Melo
2017-07-21 18:35     ` Arnaldo Carvalho de Melo
2017-07-21 18:37       ` Arnaldo Carvalho de Melo
2017-07-21 19:11         ` Arnaldo Carvalho de Melo
2017-07-24 19:37           ` Mathieu Poirier
2017-08-01 16:17             ` Mathieu Poirier
2017-08-01 16:44               ` Arnaldo Carvalho de Melo

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.