|
@@ -384,6 +384,9 @@ static void intel_pmu_setup_sw_lbr_filter(struct perf_event *event)
|
|
|
if (br_type & PERF_SAMPLE_BRANCH_NO_TX)
|
|
|
mask |= X86_BR_NO_TX;
|
|
|
|
|
|
+ if (br_type & PERF_SAMPLE_BRANCH_COND)
|
|
|
+ mask |= X86_BR_JCC;
|
|
|
+
|
|
|
/*
|
|
|
* stash actual user request into reg, it may
|
|
|
* be used by fixup code for some CPU
|
|
@@ -678,6 +681,7 @@ static const int nhm_lbr_sel_map[PERF_SAMPLE_BRANCH_MAX] = {
|
|
|
* NHM/WSM erratum: must include IND_JMP to capture IND_CALL
|
|
|
*/
|
|
|
[PERF_SAMPLE_BRANCH_IND_CALL] = LBR_IND_CALL | LBR_IND_JMP,
|
|
|
+ [PERF_SAMPLE_BRANCH_COND] = LBR_JCC,
|
|
|
};
|
|
|
|
|
|
static const int snb_lbr_sel_map[PERF_SAMPLE_BRANCH_MAX] = {
|
|
@@ -689,6 +693,7 @@ static const int snb_lbr_sel_map[PERF_SAMPLE_BRANCH_MAX] = {
|
|
|
[PERF_SAMPLE_BRANCH_ANY_CALL] = LBR_REL_CALL | LBR_IND_CALL
|
|
|
| LBR_FAR,
|
|
|
[PERF_SAMPLE_BRANCH_IND_CALL] = LBR_IND_CALL,
|
|
|
+ [PERF_SAMPLE_BRANCH_COND] = LBR_JCC,
|
|
|
};
|
|
|
|
|
|
/* core */
|