Commit 4b854900 authored by Yan, Zheng's avatar Yan, Zheng Committed by Ingo Molnar

perf/x86/intel: Re-organize code that implicitly enables LBR/PEBS

Make later patch more readable, no logic change.
Signed-off-by: default avatarYan, Zheng <zheng.z.yan@intel.com>
Signed-off-by: default avatarKan Liang <kan.liang@intel.com>
Signed-off-by: default avatarPeter 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.comSigned-off-by: Ingo Molnar's avatarIngo Molnar <mingo@kernel.org>
parent a46a2300
...@@ -399,36 +399,35 @@ int x86_pmu_hw_config(struct perf_event *event) ...@@ -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;
}
} }
} }
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment