perf jevents: fix no member named 'entries' issue

Message ID 20230919080929.3807123-1-xu.yang_2@nxp.com
State New
Headers
Series perf jevents: fix no member named 'entries' issue |

Commit Message

Xu Yang Sept. 19, 2023, 8:09 a.m. UTC
  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 <xu.yang_2@nxp.com>
---
 tools/perf/pmu-events/jevents.py | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)
  

Comments

Ian Rogers Sept. 19, 2023, 3:52 p.m. UTC | #1
On Tue, Sep 19, 2023 at 1:04 AM Xu Yang <xu.yang_2@nxp.com> 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 <xu.yang_2@nxp.com>

Reviewed-by: Ian Rogers <irogers@google.com>

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
>
  
Xu Yang Sept. 20, 2023, 2:07 a.m. UTC | #2
Hi Lan,

> On Tue, Sep 19, 2023 at 1:04 AM Xu Yang <xu.yang_2@nxp.com> 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 <xu.yang_2@nxp.com>
> 
> Reviewed-by: Ian Rogers <irogers@google.com>
> 
> 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
  
Namhyung Kim Sept. 20, 2023, 4:16 a.m. UTC | #3
Hello,

On Tue, Sep 19, 2023 at 7:07 PM Xu Yang <xu.yang_2@nxp.com> wrote:
>
> Hi Lan,
>
> > On Tue, Sep 19, 2023 at 1:04 AM Xu Yang <xu.yang_2@nxp.com> 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 <xu.yang_2@nxp.com>
> >
> > Reviewed-by: Ian Rogers <irogers@google.com>
> >
> > 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.

I can reproduce the error and confirm it fixed.

Tested-by: Namhyung Kim <namhyung@kernel.org>

Thanks,
Namhyung
  
Namhyung Kim Sept. 21, 2023, 6:51 p.m. UTC | #4
On Tue, Sep 19, 2023 at 9:16 PM Namhyung Kim <namhyung@kernel.org> wrote:
>
> Hello,
>
> On Tue, Sep 19, 2023 at 7:07 PM Xu Yang <xu.yang_2@nxp.com> wrote:
> >
> > Hi Lan,
> >
> > > On Tue, Sep 19, 2023 at 1:04 AM Xu Yang <xu.yang_2@nxp.com> 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 <xu.yang_2@nxp.com>
> > >
> > > Reviewed-by: Ian Rogers <irogers@google.com>
> > >
> > > 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.
>
> I can reproduce the error and confirm it fixed.
>
> Tested-by: Namhyung Kim <namhyung@kernel.org>

Applied to perf-tools-next, thanks!
  

Patch

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}},