Skip to content
  • Mark Rutland's avatar
    arm: perf: use IDR types for CPU PMUs · 67b4305a
    Mark Rutland authored
    
    
    For systems with heterogeneous CPUs (e.g. big.LITTLE systems) the PMUs
    can be different in each cluster, and not all events can be migrated
    between clusters. To allow userspace to deal with this, it must be
    possible to address each PMU independently.
    
    This patch changes PMUs to be registered with dynamic (IDR) types,
    allowing them to be targeted individually. Each PMU's type can be found
    in ${SYSFS_ROOT}/bus/event_source/devices/${PMU_NAME}/type.
    
    From userspace, raw events can be targeted at a specific PMU:
    $ perf stat -e ${PMU_NAME}/config=V,config1=V1,.../
    
    Doing this does not break existing tools which use existing perf types:
    when perf core can't find a PMU of matching type (in perf_init_event)
    it'll iterate over the set of all PMUs. If a compatible PMU exists,
    it'll be found eventually. If more than one compatible PMU exists, the
    event will be handled by whichever PMU happens to be earlier in the pmus
    list (which currently will be the last compatible PMU registered).
    
    Signed-off-by: default avatarMark Rutland <mark.rutland@arm.com>
    Reviewed-by: default avatarWill Deacon <will.deacon@arm.com>
    Signed-off-by: default avatarWill Deacon <will.deacon@arm.com>
    67b4305a