• Zhang Rui's avatar
    powercap: intel_rapl: Introduce APIs for PMU support · 575024a8
    Zhang Rui authored
    Introduce two new APIs rapl_package_add_pmu()/rapl_package_remove_pmu().
    
    RAPL driver can invoke these APIs to expose its supported energy
    counters via perf PMU. The new RAPL PMU is fully compatible with current
    MSR RAPL PMU, including using the same PMU name and events
    name/id/unit/scale, etc.
    
    For example, use below command
     perf stat -e power/energy-pkg/ -e power/energy-ram/ FOO
    to get the energy consumption if power/energy-pkg/ and power/energy-ram/
    events are available in the "perf list" output.
    
    This does not introduce any conflict because TPMI RAPL is the only user
    of these APIs currently, and it never co-exists with MSR RAPL.
    
    Note that RAPL Packages can be probed/removed dynamically, and the
    events supported by each TPMI RAPL device can be different. Thus the
    RAPL PMU support is done on demand, which means
    1. PMU is registered only if it is needed by a RAPL Package. PMU events
       for unsupported counters are not exposed.
    2. PMU is unregistered and registered when a new RAPL Package is probed
       and supports new counters that are not supported by current PMU.
       For example, on a dual-package system using TPMI RAPL, it is possible
       that Package 1 behaves as TPMI domain root and supports Psys domain.
       In this case, register PMU without Psys event when probing Package 0,
       and re-register the PMU with Psys event when probing Package 1.
    3. PMU is unregistered when all registered RAPL Packages don't need PMU.
    Signed-off-by: default avatarZhang Rui <rui.zhang@intel.com>
    Signed-off-by: default avatarRafael J. Wysocki <rafael.j.wysocki@intel.com>
    575024a8
intel_rapl_common.c 64.3 KB