• Yan, Zheng's avatar
    perf/x86/intel: Add basic Haswell LBR call stack support · e9d7f7cd
    Yan, Zheng authored
    Haswell has a new feature that utilizes the existing LBR facility to
    record call chains. To enable this feature, bits (JCC, NEAR_IND_JMP,
    NEAR_REL_JMP, FAR_BRANCH, EN_CALLSTACK) in LBR_SELECT must be set to 1,
    bits (NEAR_REL_CALL, NEAR-IND_CALL, NEAR_RET) must be cleared. Due to
    a hardware bug of Haswell, this feature doesn't work well with
    FREEZE_LBRS_ON_PMI.
    
    When the call stack feature is enabled, the LBR stack will capture
    unfiltered call data normally, but as return instructions are executed,
    the last captured branch record is flushed from the on-chip registers
    in a last-in first-out (LIFO) manner. Thus, branch information relative
    to leaf functions will not be captured, while preserving the call stack
    information of the main line execution path.
    
    This patch defines a separate lbr_sel map for Haswell. The map contains
    a new entry for the call stack feature.
    Signed-off-by: default avatarYan, Zheng <zheng.z.yan@intel.com>
    Signed-off-by: default avatarKan Liang <kan.liang@intel.com>
    Signed-off-by: default avatarPeter Zijlstra (Intel) <peterz@infradead.org>
    Cc: Andy Lutomirski <luto@amacapital.net>
    Cc: Arnaldo Carvalho de Melo <acme@kernel.org>
    Cc: Linus Torvalds <torvalds@linux-foundation.org>
    Cc: Paul Mackerras <paulus@samba.org>
    Cc: Vince Weaver <vincent.weaver@maine.edu>
    Cc: eranian@google.com
    Cc: jolsa@redhat.com
    Link: http://lkml.kernel.org/r/1415156173-10035-5-git-send-email-kan.liang@intel.comSigned-off-by: default avatarIngo Molnar <mingo@kernel.org>
    e9d7f7cd
perf_event_intel_lbr.c 21.3 KB