mirror of https://gitee.com/openkylin/linux.git
perf/x86/intel: Re-organize code that implicitly enables LBR/PEBS
Make later patch more readable, no logic change. Signed-off-by: Yan, Zheng <zheng.z.yan@intel.com> Signed-off-by: Kan Liang <kan.liang@intel.com> Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org> Cc: Arnaldo Carvalho de Melo <acme@kernel.org> Cc: Linus Torvalds <torvalds@linux-foundation.org> Cc: Paul Mackerras <paulus@samba.org> Cc: eranian@google.com Cc: jolsa@redhat.com Link: http://lkml.kernel.org/r/1415156173-10035-13-git-send-email-kan.liang@intel.com Signed-off-by: Ingo Molnar <mingo@kernel.org>
This commit is contained in:
parent
a46a230001
commit
4b85490099
|
@ -399,36 +399,35 @@ int x86_pmu_hw_config(struct perf_event *event)
|
||||||
|
|
||||||
if (event->attr.precise_ip > precise)
|
if (event->attr.precise_ip > precise)
|
||||||
return -EOPNOTSUPP;
|
return -EOPNOTSUPP;
|
||||||
/*
|
}
|
||||||
* check that PEBS LBR correction does not conflict with
|
/*
|
||||||
* whatever the user is asking with attr->branch_sample_type
|
* check that PEBS LBR correction does not conflict with
|
||||||
*/
|
* whatever the user is asking with attr->branch_sample_type
|
||||||
if (event->attr.precise_ip > 1 &&
|
*/
|
||||||
x86_pmu.intel_cap.pebs_format < 2) {
|
if (event->attr.precise_ip > 1 && x86_pmu.intel_cap.pebs_format < 2) {
|
||||||
u64 *br_type = &event->attr.branch_sample_type;
|
u64 *br_type = &event->attr.branch_sample_type;
|
||||||
|
|
||||||
if (has_branch_stack(event)) {
|
if (has_branch_stack(event)) {
|
||||||
if (!precise_br_compat(event))
|
if (!precise_br_compat(event))
|
||||||
return -EOPNOTSUPP;
|
return -EOPNOTSUPP;
|
||||||
|
|
||||||
/* branch_sample_type is compatible */
|
/* branch_sample_type is compatible */
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
/*
|
/*
|
||||||
* user did not specify branch_sample_type
|
* user did not specify branch_sample_type
|
||||||
*
|
*
|
||||||
* For PEBS fixups, we capture all
|
* For PEBS fixups, we capture all
|
||||||
* the branches at the priv level of the
|
* the branches at the priv level of the
|
||||||
* event.
|
* event.
|
||||||
*/
|
*/
|
||||||
*br_type = PERF_SAMPLE_BRANCH_ANY;
|
*br_type = PERF_SAMPLE_BRANCH_ANY;
|
||||||
|
|
||||||
if (!event->attr.exclude_user)
|
if (!event->attr.exclude_user)
|
||||||
*br_type |= PERF_SAMPLE_BRANCH_USER;
|
*br_type |= PERF_SAMPLE_BRANCH_USER;
|
||||||
|
|
||||||
if (!event->attr.exclude_kernel)
|
if (!event->attr.exclude_kernel)
|
||||||
*br_type |= PERF_SAMPLE_BRANCH_KERNEL;
|
*br_type |= PERF_SAMPLE_BRANCH_KERNEL;
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue