• Kan Liang's avatar
    perf/x86/intel: Hybrid PMU support for perf capabilities · d0946a88
    Kan Liang authored
    Some platforms, e.g. Alder Lake, have hybrid architecture. Although most
    PMU capabilities are the same, there are still some unique PMU
    capabilities for different hybrid PMUs. Perf should register a dedicated
    pmu for each hybrid PMU.
    
    Add a new struct x86_hybrid_pmu, which saves the dedicated pmu and
    capabilities for each hybrid PMU.
    
    The architecture MSR, MSR_IA32_PERF_CAPABILITIES, only indicates the
    architecture features which are available on all hybrid PMUs. The
    architecture features are stored in the global x86_pmu.intel_cap.
    
    For Alder Lake, the model-specific features are perf metrics and
    PEBS-via-PT. The corresponding bits of the global x86_pmu.intel_cap
    should be 0 for these two features. Perf should not use the global
    intel_cap to check the features on a hybrid system.
    Add a dedicated intel_cap in the x86_hybrid_pmu to store the
    model-specific capabilities. Use the dedicated intel_cap to replace
    the global intel_cap for thse two features. The dedicated intel_cap
    will be set in the following "Add Alder Lake Hybrid support" patch.
    
    Add is_hybrid() to distinguish a hybrid system. ADL may have an
    alternative configuration. With that configuration, the
    X86_FEATURE_HYBRID_CPU is not set. Perf cannot rely on the feature bit.
    Add a new static_key_false, perf_is_hybrid, to indicate a hybrid system.
    It will be assigned in the following "Add Alder Lake Hybrid support"
    patch as well.
    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-5-git-send-email-kan.liang@linux.intel.com
    d0946a88
core.c 67.5 KB