lkml.org 
[lkml]   [2014]   [Oct]   [19]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH V6 13/17] perf, x86: enable LBR callstack when recording callchain
    Date
    Only enable LBR callstack when user requires fp callgraph. The feature
    is not available when PERF_SAMPLE_BRANCH_STACK or PERF_SAMPLE_STACK_USER
    is required.
    Also, this feature only affects how to get user callchain. The kernel
    callchain is always got by frame pointers.

    Signed-off-by: Yan, Zheng <zheng.z.yan@intel.com>
    Signed-off-by: Kan Liang <kan.liang@intel.com>
    ---
    arch/x86/kernel/cpu/perf_event.c | 18 ++++++++++++++++--
    1 file changed, 16 insertions(+), 2 deletions(-)

    diff --git a/arch/x86/kernel/cpu/perf_event.c b/arch/x86/kernel/cpu/perf_event.c
    index 9656b9e..b3256a3 100644
    --- a/arch/x86/kernel/cpu/perf_event.c
    +++ b/arch/x86/kernel/cpu/perf_event.c
    @@ -424,10 +424,24 @@ int x86_pmu_hw_config(struct perf_event *event)
    if (!event->attr.exclude_kernel)
    *br_type |= PERF_SAMPLE_BRANCH_KERNEL;
    }
    - }
    + } else if (x86_pmu_has_lbr_callstack() &&
    + (event->attr.sample_type & PERF_SAMPLE_CALLCHAIN) &&
    + !(event->attr.sample_type & PERF_SAMPLE_STACK_USER) &&
    + !has_branch_stack(event) &&
    + !event->attr.exclude_user &&
    + (event->attach_state & PERF_ATTACH_TASK)) {
    + /*
    + * user did not specify branch_sample_type,
    + * try using the LBR call stack facility to
    + * record call chains of user program.
    + */
    + event->attr.branch_sample_type =
    + PERF_SAMPLE_BRANCH_USER |
    + PERF_SAMPLE_BRANCH_CALL_STACK;

    - if (event->attr.branch_sample_type & PERF_SAMPLE_BRANCH_CALL_STACK)
    + /* needs PMU specific data to save LBR stack */
    event->attach_state |= PERF_ATTACH_TASK_DATA;
    + }

    /*
    * Generate PMC IRQs:
    --
    1.8.3.2


    \
     
     \ /
      Last update: 2014-10-20 00:21    [W:4.922 / U:0.104 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site