Re: perf-core build fails on powerpc

Arnaldo Carvalho de Melo
2018-03-14T01:52:39Z

Em Tue, Mar 13, 2018 at 12:17:42PM -0700, Sukadev Bhattiprolu escreveu:
>
>
> Building perf on Powerpc seems broken when using Arnaldo's perf/core branch
> with HEAD as:
>
> 1b442ed ("perf test: Fix exit code for record+probe_libc_inet_pton.sh")
>
> It maybe related to this commit:

Humpf, this should've been caught by one of the powerpc crossbuild
containers I have in place... will check why the jevents.c code is not
being stressed...

- Arnaldo

> commit d596299
> Author: John Garry <john.garry@huawei.com>
> Date: Thu Mar 8 18:58:29 2018 +0800
>
> perf vendor events: Add support for pmu events vendor subdirectory
>
> Reverting this hunk from tools/perf/pmu-events/jevents.c, seems to fix the
> problem for me.
>
> @@ -957,8 +963,12 @@ static int process_one_file(const char *fpath, const struct
>
>
> /* model directory, reset topic */
> +#if 0
> if ((level == 1 && is_dir && is_leaf_dir(fpath)) ||
> (level == 2 && is_dir)) {
> +#else
> + if (level == 1 && is_dir) {
> +#endif
>
>
> The problem is that the tools/perf/pmu-events/pmu-events.c file generated by
> the jevents program is missing the "prefix" lines like:
>
> struct pmu_event pme_power8[] = {
> and
> struct pmu_event pme_power9[] = {
>
>
> i.e the pmu-events.c begins like:
> ---
>
> #include "../../pmu-events/pmu-events.h"
> {
> .name = "pm_data_from_dl2l3_mod",
> .event = "event=0x4c048",
> .desc = "The processor's data cache was reloaded with Modified (M) data from another chip's L2 or L3 on a different Node or Group (Distant), as this chip due to a demand load",
> .topic = "cache",
> .long_desc = "The processor's data cache was reloaded with Modified (M) data from another chip's L2 or L3 on a different Node or Group (Distant), as this chip due to either only demand loads or demand loads plus prefetches if MMCR1[16] is 1",
> },
>
> ---
>
> Below is the debug and info messages at the time of failure:
>
> ---
>
> HOSTCC /home/suka/linux-acme.git/tools/perf/perf-obj/pmu-events/jevents.o
> HOSTLD /home/suka/linux-acme.git/tools/perf/perf-obj/pmu-events/jevents-in.o
> LINK /home/suka/linux-acme.git/tools/perf/perf-obj/pmu-events/jevents
> GEN /home/suka/linux-acme.git/tools/perf/perf-obj/pmu-events/pmu-events.c
> d 0 50 powerpc pmu-events/arch/powerpc
> d 1 4096 power8 pmu-events/arch/powerpc/power8
> f 2 10275 cache.json pmu-events/arch/powerpc/power8/cache.json
> f 2 302 floating-point.json pmu-events/arch/powerpc/power8/floating-point.json
> f 2 29283 marked.json pmu-events/arch/powerpc/power8/marked.json
> f 2 12028 memory.json pmu-events/arch/powerpc/power8/memory.json
> f 2 159271 other.json pmu-events/arch/powerpc/power8/other.json
> f 2 10777 pipeline.json pmu-events/arch/powerpc/power8/pipeline.json
> f 2 3781 pmc.json pmu-events/arch/powerpc/power8/pmc.json
> f 2 6664 translation.json pmu-events/arch/powerpc/power8/translation.json
> f 2 25104 frontend.json pmu-events/arch/powerpc/power8/frontend.json
> d 1 4096 power9 pmu-events/arch/powerpc/power9
> f 2 1096 floating-point.json pmu-events/arch/powerpc/power9/floating-point.json
> f 2 5503 cache.json pmu-events/arch/powerpc/power9/cache.json
> f 2 14885 frontend.json pmu-events/arch/powerpc/power9/frontend.json
> f 2 27807 marked.json pmu-events/arch/powerpc/power9/marked.json
> f 2 4820 memory.json pmu-events/arch/powerpc/power9/memory.json
> f 2 85387 other.json pmu-events/arch/powerpc/power9/other.json
> f 2 23839 pipeline.json pmu-events/arch/powerpc/power9/pipeline.json
> f 2 5138 pmc.json pmu-events/arch/powerpc/power9/pmc.json
> f 2 9897 translation.json pmu-events/arch/powerpc/power9/translation.json
> f 1 440 mapfile.csv pmu-events/arch/powerpc/mapfile.csv
> jevents: Processing mapfile pmu-events/arch/powerpc/mapfile.csv
> CC /home/suka/linux-acme.git/tools/perf/perf-obj/pmu-events/pmu-events.o
> /home/suka/linux-acme.git/tools/perf/perf-obj/pmu-events/pmu-events.c:2:1: error: expected identifier or ‘(’ before ‘{’ token
> {
> ^
> /home/suka/linux-acme.git/tools/perf/perf-obj/pmu-events/pmu-events.c:8:2: error: expected identifier or ‘(’ before ‘,’ token
> },
> ^
> /home/suka/linux-acme.git/tools/perf/perf-obj/pmu-events/pmu-events.c:15:2: error: expected identifier or ‘(’ before ‘,’ token
> },
> ^
> /home/suka/linux-acme.git/tools/perf/perf-obj/pmu-events/pmu-events.c:22:2: error: expected identifier or ‘(’ before ‘,’ token
> },
>
> ----