• Sandipan Das's avatar
    perf/x86/amd/lbr: Add LbrExtV2 branch record support · ca5b7c0d
    Sandipan Das authored
    If AMD Last Branch Record Extension Version 2 (LbrExtV2) is detected,
    enable it alongside LBR Freeze on PMI when an event requests branch stack
    i.e. PERF_SAMPLE_BRANCH_STACK.
    
    Each branch record is represented by a pair of registers, LBR From and LBR
    To. The freeze feature prevents any updates to these registers once a PMC
    overflows. The contents remain unchanged until the freeze bit is cleared by
    the PMI handler.
    
    The branch records are read and copied to sample data before unfreezing.
    However, only valid entries are copied. There is no additional register to
    denote which of the register pairs represent the top of the stack (TOS)
    since internal register renaming always ensures that the first pair (i.e.
    index 0) is the one representing the most recent branch and so on.
    
    The LBR registers are per-thread resources and are cleared explicitly
    whenever a new task is scheduled in. There are no special implications on
    the contents of these registers when transitioning to deep C-states.
    Signed-off-by: default avatarSandipan Das <sandipan.das@amd.com>
    Signed-off-by: default avatarPeter Zijlstra (Intel) <peterz@infradead.org>
    Link: https://lore.kernel.org/r/d3b8500a3627a0d4d0259b005891ee248f248d91.1660211399.git.sandipan.das@amd.com
    ca5b7c0d
msr-index.h 40 KB