Skip to content
  • Mark Rutland's avatar
    arm: perf: filter unschedulable events · c904e32a
    Mark Rutland authored
    
    
    Different CPU microarchitectures implement different PMU events, and
    thus events which can be scheduled on one microarchitecture cannot be
    scheduled on another, and vice-versa. Some archicted events behave
    differently across microarchitectures, and thus cannot be meaningfully
    summed. Due to this, we reject the scheduling of an event on a CPU of a
    different microarchitecture to that the event targets.
    
    When the core perf code is scheduling events and encounters an event
    which cannot be scheduled, it stops attempting to schedule events. As
    the perf core periodically rotates the list of events, for some
    proportion of the time events which are unschedulable will block events
    which are schedulable, resulting in low utilisation of the hardware
    counters.
    
    This patch implements a pmu::filter_match callback such that we can
    detect and skip such events while scheduling early, before they can
    block the schedulable events. This prevents the low HW counter
    utilisation issue.
    
    Acked-by: default avatarWill Deacon <will.deacon@arm.com>
    Signed-off-by: default avatarMark Rutland <mark.rutland@arm.com>
    Signed-off-by: default avatarWill Deacon <will.deacon@arm.com>
    c904e32a