2023-09-19 09:05:24

by Xu Yang

[permalink] [raw]
Subject: [PATCH] perf jevents: fix no member named 'entries' issue

The struct "pmu_events_table" has been changed after commit
2e255b4f9f41 (perf jevents: Group events by PMU, 2023-08-23).
So there doesn't exist 'entries' in pmu_events_table anymore.
This will align the members with that commit. Othewise, below
errors will be printed when run jevent.py:

pmu-events/pmu-events.c:5485:26: error: ‘struct pmu_metrics_table’ has no member named ‘entries’
5485 | .entries = pmu_metrics__freescale_imx8dxl_sys,

Signed-off-by: Xu Yang <[email protected]>
---
tools/perf/pmu-events/jevents.py | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/tools/perf/pmu-events/jevents.py b/tools/perf/pmu-events/jevents.py
index a7e88332276d..af15fa2cadbd 100755
--- a/tools/perf/pmu-events/jevents.py
+++ b/tools/perf/pmu-events/jevents.py
@@ -764,8 +764,8 @@ static const struct pmu_sys_events pmu_sys_event_tables[] = {
continue
_args.output_file.write(f"""\t{{
\t\t.metric_table = {{
-\t\t\t.entries = {tblname},
-\t\t\t.length = ARRAY_SIZE({tblname})
+\t\t\t.pmus = {tblname},
+\t\t\t.num_pmus = ARRAY_SIZE({tblname})
\t\t}},
\t\t.name = \"{tblname}\",
\t}},
--
2.34.1


2023-09-19 17:56:07

by Ian Rogers

[permalink] [raw]
Subject: Re: [PATCH] perf jevents: fix no member named 'entries' issue

On Tue, Sep 19, 2023 at 1:04 AM Xu Yang <[email protected]> wrote:
>
> The struct "pmu_events_table" has been changed after commit
> 2e255b4f9f41 (perf jevents: Group events by PMU, 2023-08-23).
> So there doesn't exist 'entries' in pmu_events_table anymore.
> This will align the members with that commit. Othewise, below
> errors will be printed when run jevent.py:
>
> pmu-events/pmu-events.c:5485:26: error: ‘struct pmu_metrics_table’ has no member named ‘entries’
> 5485 | .entries = pmu_metrics__freescale_imx8dxl_sys,
>
> Signed-off-by: Xu Yang <[email protected]>

Reviewed-by: Ian Rogers <[email protected]>

Thanks Xu! I wasn't able to repeat the failure but the fix looks good
to me. Is the failure caused by adding new imx8dxl metrics? I'd like
to make sure we have testing coverage so this doesn't happen again.
I'm trying:
$ make -C tools/perf O=/tmp/perf JEVENTS_ARCH=all
Could you confirm that this make command was broken without your fix
plus the metric changes you've done?

Thanks,
Ian

> ---
> tools/perf/pmu-events/jevents.py | 4 ++--
> 1 file changed, 2 insertions(+), 2 deletions(-)
>
> diff --git a/tools/perf/pmu-events/jevents.py b/tools/perf/pmu-events/jevents.py
> index a7e88332276d..af15fa2cadbd 100755
> --- a/tools/perf/pmu-events/jevents.py
> +++ b/tools/perf/pmu-events/jevents.py
> @@ -764,8 +764,8 @@ static const struct pmu_sys_events pmu_sys_event_tables[] = {
> continue
> _args.output_file.write(f"""\t{{
> \t\t.metric_table = {{
> -\t\t\t.entries = {tblname},
> -\t\t\t.length = ARRAY_SIZE({tblname})
> +\t\t\t.pmus = {tblname},
> +\t\t\t.num_pmus = ARRAY_SIZE({tblname})
> \t\t}},
> \t\t.name = \"{tblname}\",
> \t}},
> --
> 2.34.1
>

2023-09-20 12:42:16

by Xu Yang

[permalink] [raw]
Subject: RE: [EXT] Re: [PATCH] perf jevents: fix no member named 'entries' issue

Hi Lan,

> On Tue, Sep 19, 2023 at 1:04 AM Xu Yang <[email protected]> wrote:
> >
> > The struct "pmu_events_table" has been changed after commit
> > 2e255b4f9f41 (perf jevents: Group events by PMU, 2023-08-23).
> > So there doesn't exist 'entries' in pmu_events_table anymore.
> > This will align the members with that commit. Othewise, below
> > errors will be printed when run jevent.py:
> >
> > pmu-events/pmu-events.c:5485:26: error: ‘struct pmu_metrics_table’ has no member named ‘entries’
> > 5485 | .entries = pmu_metrics__freescale_imx8dxl_sys,
> >
> > Signed-off-by: Xu Yang <[email protected]>
>
> Reviewed-by: Ian Rogers <[email protected]>
>
> Thanks Xu! I wasn't able to repeat the failure but the fix looks good
> to me. Is the failure caused by adding new imx8dxl metrics? I'd like

Yes.

> to make sure we have testing coverage so this doesn't happen again.
> I'm trying:
> $ make -C tools/perf O=/tmp/perf JEVENTS_ARCH=all
> Could you confirm that this make command was broken without your fix
> plus the metric changes you've done?

Below steps will repeat the failure.

$ cd tools/
$ rm perf/pmu-events/arch/arm64/freescale/imx8mm/sys/ddrc.json
$ make clean
$ make JEVENTS_ARCH=all perf

pmu-events/pmu-events.c:76586:26: error: ‘struct pmu_metrics_table’ has no member named ‘entries’
76586 | .entries = pmu_metrics__freescale_imx8mm_sys,
| ^~~~~~~
pmu-events/pmu-events.c:76587:26: error: ‘struct pmu_metrics_table’ has no member named ‘length’
76587 | .length = ARRAY_SIZE(pmu_metrics__freescale_imx8mm_sys)
| ^~~~~~

If only metric table exists, then this error may occur.

Thanks,
Xu Yang