• Kan Liang's avatar
    perf/x86: Add structures for the attributes of Hybrid PMUs · a9c81ccd
    Kan Liang authored
    Hybrid PMUs have different events and formats. In theory, Hybrid PMU
    specific attributes should be maintained in the dedicated struct
    x86_hybrid_pmu, but it wastes space because the events and formats are
    similar among Hybrid PMUs.
    
    To reduce duplication, all hybrid PMUs will share a group of attributes
    in the following patch. To distinguish an attribute from different
    Hybrid PMUs, a PMU aware attribute structure is introduced. A PMU type
    is required for the attribute structure. The type is internal usage. It
    is not visible in the sysfs API.
    
    Hybrid PMUs may support the same event name, but with different event
    encoding, e.g., the mem-loads event on an Atom PMU has different event
    encoding from a Core PMU. It brings issue if two attributes are
    created for them. Current sysfs_update_group finds an attribute by
    searching the attr name (aka event name). If two attributes have the
    same event name, the first attribute will be replaced.
    To address the issue, only one attribute is created for the event. The
    event_str is extended and stores event encodings from all Hybrid PMUs.
    Each event encoding is divided by ";". The order of the event encodings
    must follow the order of the hybrid PMU index. The event_str is internal
    usage as well. When a user wants to show the attribute of a Hybrid PMU,
    only the corresponding part of the string is displayed.
    Signed-off-by: default avatarKan Liang <kan.liang@linux.intel.com>
    Signed-off-by: default avatarPeter Zijlstra (Intel) <peterz@infradead.org>
    Reviewed-by: default avatarAndi Kleen <ak@linux.intel.com>
    Link: https://lkml.kernel.org/r/1618237865-33448-18-git-send-email-kan.liang@linux.intel.com
    a9c81ccd
perf_event.h 38.1 KB