Skip to content
  • Stephane Eranian's avatar
    perf/x86: Add Intel LBR sharing logic · b36817e8
    Stephane Eranian authored
    
    
    The Intel LBR on some recent processor is capable
    of filtering branches by type. The filter is configurable
    via the LBR_SELECT MSR register.
    
    There are limitation on how this register can be used.
    
    On Nehalem/Westmere, the LBR_SELECT is shared by the two HT threads
    when HT is on. It is private to each core when HT is off.
    
    On SandyBridge, the LBR_SELECT register is private to each thread
    when HT is on. It is private to each core when HT is off.
    
    The kernel must manage the sharing of LBR_SELECT. It allows
    multiple users on the same logical CPU to use LBR_SELECT as
    long as they program it with the same value. Across sibling
    CPUs (HT threads), the same restriction applies on NHM/WSM.
    
    This patch implements this sharing logic by leveraging the
    mechanism put in place for managing the offcore_response
    shared MSR.
    
    We modify __intel_shared_reg_get_constraints() to cause
    x86_get_event_constraint() to be called because LBR may
    be associated with events that may be counter constrained.
    
    Signed-off-by: default avatarStephane Eranian <eranian@google.com>
    Signed-off-by: default avatarPeter Zijlstra <a.p.zijlstra@chello.nl>
    Link: http://lkml.kernel.org/r/1328826068-11713-4-git-send-email-eranian@google.com
    
    
    Signed-off-by: default avatarIngo Molnar <mingo@elte.hu>
    b36817e8