• Stephane Eranian's avatar
    perf/rapl: Fix sysfs_show() initialization for RAPL PMU · 433678bd
    Stephane Eranian authored
    This patch fixes a problem with the initialization of the
    sysfs_show() routine for the RAPL PMU.
    
    The current code was wrongly relying on the EVENT_ATTR_STR()
    macro which uses the events_sysfs_show() function in the x86
    PMU code. That function itself was relying on the x86_pmu data
    structure. Yet RAPL and the core PMU (x86_pmu) have nothing to
    do with each other. They should therefore not interact with
    each other.
    
    The x86_pmu structure is initialized at boot time based on
    the host CPU model. When the host CPU is not supported, the
    x86_pmu remains uninitialized and some of the callbacks it
    contains are NULL.
    
    The false dependency with x86_pmu could potentially cause crashes
    in case the x86_pmu is not initialized while the RAPL PMU is. This
    may, for instance, be the case in virtualized environments.
    
    This patch fixes the problem by using a private sysfs_show()
    routine for exporting the RAPL PMU events.
    Signed-off-by: default avatarStephane Eranian <eranian@google.com>
    Signed-off-by: default avatarPeter Zijlstra (Intel) <peterz@infradead.org>
    Link: http://lkml.kernel.org/r/20150113225953.GA21525@thinkpad
    Cc: vincent.weaver@maine.edu
    Cc: jolsa@redhat.com
    Cc: Arnaldo Carvalho de Melo <acme@kernel.org>
    Cc: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: default avatarIngo Molnar <mingo@kernel.org>
    433678bd
perf_event_intel_rapl.c 17.6 KB