Re: [REGRESSION][BISECT] perf/core: Remove pmu linear searching code

From: Mark Rutland
Date: Mon Jun 05 2023 - 03:11:22 EST


On Sun, Jun 04, 2023 at 01:38:10PM +0200, Krzysztof Kozlowski wrote:
> Hi,
>
> #regzbot introduced: 9551fbb64d09
>
> Bisect pointed to commit 9551fbb64d09 ("perf/core: Remove pmu linear
> searching code") as first one where all hardware events are gone from
> perf for ARMv7 Exynos5422 board.

I think that commit 9551fbb64d09 is just wrong.

The commit message asserts:

Searching for the right pmu by iterating over all pmus is no longer
required since all pmus now *must* be present in the 'pmu_idr' list.
So, remove linear searching code.

... and while each PMU has *some* entry in the pmu_idr list, for its dynamic
type, that means that events with other types (e.g. PERF_TYPE_HARDWARE or
PERF_TYPE_RAW) will fail to find a PMU in the IDR whereas they'd previously
have been accepted by a PMU during the subsequent iteration over all PMUs.

So that iteration is still required.

How does this work on x86? Do you have pseudo-PMUs for PERF_TYPE_HARDWARE and
PERF_TYPE_RAW ?

Thanks,
Mark.

> Expected:
> perf list | grep "Hardware event"
> branch-instructions OR branches [Hardware event]
> branch-misses [Hardware event]
> bus-cycles [Hardware event]
> cache-misses [Hardware event]
> cache-references [Hardware event]
> cpu-cycles OR cycles [Hardware event]
> instructions [Hardware event]
>
>
> Result:
> empty, no hardware events
>
> 1. Arch ARM Linux
> 2. exynos_defconfig
> 3. Board:
> - Odroid HC1
> ARMv7, octa-core (Cortex-A7+A15), Exynos5422 SoC
> Systemd: v239
>
> 4. perf version 6.1.0
>
>
> Best regards,
> Krzysztof