Re: [bug report] Patch "perf tools: Fix pattern matching for same substring in different pmu type" broken

From: Jin, Yao
Date: Tue Jul 20 2021 - 01:57:13 EST


Hi John, Hi Arnaldo,

On 7/19/2021 10:13 PM, John Garry wrote:
Hi guys,

The named patch has broken PMU alias matching on my arm64 system.

Specifically it is broken for when multiple tokens are used in the alias. For example, alias "hisi_sccl,l3c" would previously match for PMU "hisi_sccl3_l3c7", but that no longer works.

In my example, in looking at the code, the callchain pmu_uncore_alias_match("hisi_sccl,l3c", "hisi_sccl3_l3c7") -> per_pmu__valid_suffix("hisi_sccl3_l3c7", "hisi_sccl") fails in the following check:

static bool perf_pmu__valid_suffix(char *pmu_name, char *tok)
{
    char *p;
    ...
    p = pmu_name + strlen(tok);
    ...
    if (*p != '_') //here
        return false;
}

This check assumes the first token must be followed by a '_', but it is possibly a numeric.


It looks that the PMU alias format on arm64 has big difference than the format on x86. My new idea is we create a x86 specific perf_pmu__valid_suffix, and for other arch, the weak function always returns true. That will not change original behavior.

What do you think?

Please let me know how this should work. Previously it would match on the tokens, ignoring numerics and '_'.

As an aside, I'll look at why our testcases don't cover this scenario and look to add a test if necessary.

Thanks,
john

Ps, please cc linux-perf-users@xxxxxxxxxxxxxxx as in the MAINTAINERS file in future, as not all subscribe to the open kernel list (and so cannot easily reply directly).


Sorry about that! I will remember that, cc linux-perf-users@xxxxxxxxxxxxxxx in next patch.

Thanks
Jin Yao