On Wed, Mar 31, 2021 at 12:52:11PM -0500, Rob Herring wrote: > On Wed, Mar 31, 2021 at 10:38 AM Will Deacon <w...@kernel.org> wrote: > > > > On Tue, Mar 30, 2021 at 04:08:11PM -0500, Rob Herring wrote: > > > On Tue, Mar 30, 2021 at 12:09 PM Rob Herring <r...@kernel.org> wrote: > > > > On Tue, Mar 30, 2021 at 10:31 AM Will Deacon <w...@kernel.org> wrote: > > > > > The logic here feels like it > > > > > could with a bit of untangling. > > > > > > > > Yes, I don't love it, but couldn't come up with anything better. It is > > > > complicated by the fact that flags have to be set before we assign the > > > > counter and can't set/change them when we assign the counter. It would > > > > take a lot of refactoring with armpmu code to fix that. > > > > > > How's this instead?: > > > > > > if (armv8pmu_event_want_user_access(event) || > > > !armv8pmu_event_is_64bit(event)) > > > event->hw.flags |= ARMPMU_EL0_RD_CNTR; > > > > > > /* > > > * At this point, the counter is not assigned. If a 64-bit counter is > > > * requested, we must make sure the h/w has 64-bit counters if we set > > > * the event size to 64-bit because chaining is not supported with > > > * userspace access. This may still fail later on if the CPU cycle > > > * counter is in use. > > > */ > > > if (armv8pmu_event_is_64bit(event) && > > > (!armv8pmu_event_want_user_access(event) || > > > armv8pmu_has_long_event(cpu_pmu) || (hw_event_id == > > > ARMV8_PMUV3_PERFCTR_CPU_CYCLES))) > > > event->hw.flags |= ARMPMU_EVT_64BIT; > > > > I thought there were some cases where we could assign cycles event to an > > event counter; does that not happen anymore? > > Yes, but if we hit that scenario when the user has asked for 64-bit > user access, then we return an error later when assigning the counter. > I think we can assume if users have gone to the trouble of requesting > 64-bit counters, then they can deal with ensuring they don't have > multiple users. > > Otherwise, the only way I see to simplify this is we only support > 64-bit counters in userspace when we have v8.5 PMU.
I'm happy to start from that position, and then we can extend it later if there's a need. Will