• Kan Liang's avatar
    perf: Extend PERF_TYPE_HARDWARE and PERF_TYPE_HW_CACHE · 55bcf6ef
    Kan Liang authored
    Current Hardware events and Hardware cache events have special perf
    types, PERF_TYPE_HARDWARE and PERF_TYPE_HW_CACHE. The two types don't
    pass the PMU type in the user interface. For a hybrid system, the perf
    subsystem doesn't know which PMU the events belong to. The first capable
    PMU will always be assigned to the events. The events never get a chance
    to run on the other capable PMUs.
    
    Extend the two types to become PMU aware types. The PMU type ID is
    stored at attr.config[63:32].
    
    Add a new PMU capability, PERF_PMU_CAP_EXTENDED_HW_TYPE, to indicate a
    PMU which supports the extended PERF_TYPE_HARDWARE and
    PERF_TYPE_HW_CACHE.
    
    The PMU type is only required when searching a specific PMU. The PMU
    specific codes will only be interested in the 'real' config value, which
    is stored in the low 32 bit of the event->attr.config. Update the
    event->attr.config in the generic code, so the PMU specific codes don't
    need to calculate it separately.
    
    If a user specifies a PMU type, but the PMU doesn't support the extended
    type, error out.
    
    If an event cannot be initialized in a PMU specified by a user, error
    out immediately. Perf should not try to open it on other PMUs.
    
    The new PMU capability is only set for the X86 hybrid PMUs for now.
    Other architectures, e.g., ARM, may need it as well. The support on ARM
    may be implemented later separately.
    Suggested-by: default avatarPeter Zijlstra (Intel) <peterz@infradead.org>
    Signed-off-by: default avatarKan Liang <kan.liang@linux.intel.com>
    Signed-off-by: default avatarPeter Zijlstra (Intel) <peterz@infradead.org>
    Link: https://lkml.kernel.org/r/1618237865-33448-22-git-send-email-kan.liang@linux.intel.com
    55bcf6ef
core.c 72.3 KB