lkml.org 
[lkml]   [2017]   [Jul]   [10]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    From
    SubjectRe: [PATCH v6 1/7] perf/core: Define the common branch type classification
    Date
    Hi Jin Yao,

    Sorry I haven't commented until now, but it got lost in the flood of
    patches.

    Just a few nit-picks below ...

    Jin Yao <yao.jin@linux.intel.com> writes:

    > It is often useful to know the branch types while analyzing branch
    > data. For example, a call is very different from a conditional branch.
    >
    > Currently we have to look it up in binary while the binary may later
    > not be available and even the binary is available but user has to take
    > some time. It is very useful for user to check it directly in perf
    > report.
    >
    > Perf already has support for disassembling the branch instruction
    > to get the x86 branch type.
    >
    > To keep consistent on kernel and userspace and make the classification
    > more common, the patch adds the common branch type classification
    > in perf_event.h.

    Most of the code and doc uses "branch" but then a few these are called
    "jump". Can we just stick with "branch"?

    > PERF_BR_NONE : unknown
    > PERF_BR_JCC : conditional jump
    > PERF_BR_JMP : jump
    > PERF_BR_IND_JMP : indirect jump

    eg:

    PERF_BR_COND : conditional branch
    PERF_BR_UNCOND : unconditional branch
    PERF_BR_IND : indirect branch

    > PERF_BR_CALL : call
    > PERF_BR_IND_CALL : indirect call
    > PERF_BR_RET : return
    > PERF_BR_SYSCALL : syscall
    > PERF_BR_SYSRET : syscall return
    > PERF_BR_IRQ : hw interrupt/trap/fault
    > PERF_BR_INT : sw interrupt

    I'm not sure what that means, I'm guessing on x86 it means someone
    executed "int" ?

    Is that sufficiently useful to use up a bit? I think we only have 3
    free?

    > PERF_BR_IRET : return from interrupt
    > PERF_BR_FAR_BRANCH: not generic far branch type

    What is a "not generic far branch" ?

    I don't know what that would mean on powerpc for example.


    I think the only thing we have on powerpc that's commonly used and that
    isn't covered above is branches that decrement a loop counter and then
    branch based on the result.

    It might be nice if we could separate those out from other conditional
    branches. Whether it's worth using a bit for I'm not sure. Do other
    arches have something similar?

    Those branches do tend to be "backward conditional", so that may be
    sufficient. But backward conditional also includes if bodies that have
    been moved out of line and then branch back to the main body of the
    function.

    cheers

    \
     
     \ /
      Last update: 2017-07-10 08:05    [W:3.569 / U:0.612 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site