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. Mark.