Re: [PATCH v4 1/4] perf/core: Rework forwarding of {task|cpu}-clock events

From: Ravi Bangoria
Date: Wed Feb 28 2024 - 07:50:24 EST


>>> Currently, PERF_TYPE_SOFTWARE is treated specially since task-clock and
>>> cpu-clock events are interfaced through it but internally gets forwarded
>>> to their own pmus.
>>>
>>> Rework this by overwriting event->attr.type in perf_swevent_init() which
>>> will cause perf_init_event() to retry with updated type and event will
>>> automatically get forwarded to right pmu. With the change, SW pmu no
>>> longer needs to be treated specially and can be included in 'pmu_idr'
>>> list.
>>>
>>> Suggested-by: Peter Zijlstra <peterz@xxxxxxxxxxxxx>
>>> Signed-off-by: Ravi Bangoria <ravi.bangoria@xxxxxxx>
>>> ---
>>> include/linux/perf_event.h | 10 +++++
>>> kernel/events/core.c | 77 ++++++++++++++++++++------------------
>>> 2 files changed, 51 insertions(+), 36 deletions(-)
>>
>> Greeting!
>> There is task hung in perf_tp_event_init in v6.8-rc4 in guest.
>
> Thanks for the bug report. I'm able to reproduce it. Will try to spend
> more time to rootcause it.

Although the bisect has lead to 0d6d062ca27e as culprit commit, a minor
change (shown below) in the test program can create the same task hang
issue even with 0d6d062ca27e reverted.

- *(uint32_t*)0x200000c0 = 6; /* Use cpu-clock pmu type when 0d6d062ca27e is present */
+ *(uint32_t*)0x200000c0 = 1; /* Use software pmu type when 0d6d062ca27e is absent */

So, 0d6d062ca27e is not the culprit commit.

Additionally,

o I've seen task hang or soft-lockups on a single cpu KVM guest while
running your test as root and also as normal user with
perf_event_paranoid=-1. But the same experiment on host, no lockups,
only task hang. So I feel the bug report is false positive and there
is no real issue (since the experiment requires special privilege).

o 0d6d062ca27e has inadvertently started allowing cpu-clock and task-
clock events creation via their own pmu->type in perf_event_open(),
instead of earlier design where the only interface was through sw
pmu. Is it harmful? Probably not. But worth to be documented:

----><----