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:
Yan, Zheng 2014-11-04 21:56:08 -05:00 committed by Ingo Molnar
parent a46a230001
commit 4b85490099
1 changed files with 24 additions and 25 deletions

View File

@ -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;
}
} }
} }