在 2024/3/5 20:40, Mark Rutland 写道:
On Tue, Mar 05, 2024 at 09:43:16AM +0800, Yang Jialong 杨佳龙 wrote:
在 2024/3/4 17:34, Mark Rutland 写道:
On Mon, Mar 04, 2024 at 10:27:01AM +0800, JiaLong.Yang wrote:
The struct pmu cpumf_pmu has handled generic events. So it need some
flags to tell core this thing.
It's not necessary to register as PERF_TYPE_RAW in order to handle raw events,
and PERF_TYPE_RAW is not a flag.
Have you encountered a functional problem, or was this found by inspection?
As you expected, I'm trying to confirm which one pmu has the capability to
handle generic events in registering pmus instead of test generic events in
each pmus when opening.
If we want to do that, then we need a new flag on struct pmu to restrict which
events we try to open on a PMU.
If you want to do that, you need to Cc the perf maintainers and discuss that
rather than point-hacking individual drivers.
We can confirm that before using. We have pay more in handling them when
opening.
So most driver developers use PERF_TYPE_RAW. x86 and arm use
PERF_PMU_CAP_EXTENDED_HW_TYPE. Others use struct pmu::task_ctx_nr =
perf_hw_context.
I think PERF_TYPE_RAW will be a easily accepted way. So ...
No, this is a hack, and it doesn't solve the problem you describe above.
If we want to remove the need for most PMUs to look at perf_event_attr::type,
then we should have a new PERF_PMU_CAP_ flag on the PMU to say "this PMU
supports generic events" (or separate flags for the generic RAW/HW/CACHE
types), and update all relevant PMUs accordingly.
Please do not try to overload pmu::type with additional semantics; it's messy
enough as-is.
OK. Thanks for guiding.
Mark.