perf: Add irq and exception return branch types
Bugzilla: https://bugzilla.redhat.com/2123231 upstream ======== commit cedd3614e5d9c80908099c19f8716714ce0610b1 Author: Anshuman Khandual <anshuman.khandual@arm.com> Date: Thu Feb 24 11:06:54 2022 +0530 description =========== This expands generic branch type classification by adding two more entries there in i.e irq and exception return. Also updates the x86 implementation to process X86_BR_IRET and X86_BR_IRQ records as appropriate. This changes branch types reported to user space on x86 platform but it should not be a problem. The possible scenarios and impacts are enumerated here. Signed-off-by: Michael Petlan <mpetlan@redhat.com>
This commit is contained in:
parent
9a04848862
commit
10789c0fa4
|
@ -1329,10 +1329,10 @@ static int branch_map[X86_BR_TYPE_MAP_MAX] = {
|
|||
PERF_BR_SYSCALL, /* X86_BR_SYSCALL */
|
||||
PERF_BR_SYSRET, /* X86_BR_SYSRET */
|
||||
PERF_BR_UNKNOWN, /* X86_BR_INT */
|
||||
PERF_BR_UNKNOWN, /* X86_BR_IRET */
|
||||
PERF_BR_ERET, /* X86_BR_IRET */
|
||||
PERF_BR_COND, /* X86_BR_JCC */
|
||||
PERF_BR_UNCOND, /* X86_BR_JMP */
|
||||
PERF_BR_UNKNOWN, /* X86_BR_IRQ */
|
||||
PERF_BR_IRQ, /* X86_BR_IRQ */
|
||||
PERF_BR_IND_CALL, /* X86_BR_IND_CALL */
|
||||
PERF_BR_UNKNOWN, /* X86_BR_ABORT */
|
||||
PERF_BR_UNKNOWN, /* X86_BR_IN_TX */
|
||||
|
|
|
@ -251,6 +251,8 @@ enum {
|
|||
PERF_BR_SYSRET = 8, /* syscall return */
|
||||
PERF_BR_COND_CALL = 9, /* conditional function call */
|
||||
PERF_BR_COND_RET = 10, /* conditional function return */
|
||||
PERF_BR_ERET = 11, /* exception return */
|
||||
PERF_BR_IRQ = 12, /* irq */
|
||||
PERF_BR_MAX,
|
||||
};
|
||||
|
||||
|
|
|
@ -251,6 +251,8 @@ enum {
|
|||
PERF_BR_SYSRET = 8, /* syscall return */
|
||||
PERF_BR_COND_CALL = 9, /* conditional function call */
|
||||
PERF_BR_COND_RET = 10, /* conditional function return */
|
||||
PERF_BR_ERET = 11, /* exception return */
|
||||
PERF_BR_IRQ = 12, /* irq */
|
||||
PERF_BR_MAX,
|
||||
};
|
||||
|
||||
|
|
|
@ -49,7 +49,9 @@ const char *branch_type_name(int type)
|
|||
"SYSCALL",
|
||||
"SYSRET",
|
||||
"COND_CALL",
|
||||
"COND_RET"
|
||||
"COND_RET",
|
||||
"ERET",
|
||||
"IRQ"
|
||||
};
|
||||
|
||||
if (type >= 0 && type < PERF_BR_MAX)
|
||||
|
|
Loading…
Reference in New Issue