• Ingo Molnar's avatar
    perf_counter, x86: Fix kernel-space call-chains · 038e836e
    Ingo Molnar authored
    Kernel-space call-chains were trimmed at the first entry because
    we never processed anything beyond the first stack context.
    
    Allow the backtrace to jump from NMI to IRQ stack then to task stack
    and finally user-space stack.
    
    Also calculate the stack and bp variables correctly so that the
    stack walker does not exit early.
    
    We can get deep traces as a result, visible in perf report -D output:
    
    0x32af0 [0xe0]: PERF_EVENT (IP, 5): 15134: 0xffffffff815225fd period: 1
    ... chain: u:2, k:22, nr:24
    .....  0: 0xffffffff815225fd
    .....  1: 0xffffffff810ac51c
    .....  2: 0xffffffff81018e29
    .....  3: 0xffffffff81523939
    .....  4: 0xffffffff81524b8f
    .....  5: 0xffffffff81524bd9
    .....  6: 0xffffffff8105e498
    .....  7: 0xffffffff8152315a
    .....  8: 0xffffffff81522c3a
    .....  9: 0xffffffff810d9b74
    ..... 10: 0xffffffff810dbeec
    ..... 11: 0xffffffff810dc3fb
    
    This is a 22-entries kernel-space chain.
    
    (We still only record reliable stack entries.)
    
    Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
    Cc: Mike Galbraith <efault@gmx.de>
    Cc: Paul Mackerras <paulus@samba.org>
    Cc: Arnaldo Carvalho de Melo <acme@redhat.com>
    LKML-Reference: <new-submission>
    Signed-off-by: default avatarIngo Molnar <mingo@elte.hu>
    038e836e
perf_counter.c 40 KB