perf intel-pt: Fix IPC with CYC threshold
[ Upstream commit6af4b60033
] The code assumed every CYC-eligible packet has a CYC packet, which is not the case when CYC thresholds are used. Fix by checking if a CYC packet is actually present in that case. Fixes:5b1dc0fd1d
("perf intel-pt: Add support for samples to contain IPC ratio") Signed-off-by: Adrian Hunter <adrian.hunter@intel.com> Reviewed-by: Andi Kleen <ak@linux.intel.com> Cc: Jiri Olsa <jolsa@redhat.com> Link: https://lore.kernel.org/r/20210205175350.23817-4-adrian.hunter@intel.com Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com> Signed-off-by: Sasha Levin <sashal@kernel.org>
This commit is contained in:
committed by
Greg Kroah-Hartman
parent
4616d95a25
commit
2f7d4603a0
@ -893,6 +893,18 @@ static bool intel_pt_sampling_mode(struct intel_pt *pt)
|
||||
return false;
|
||||
}
|
||||
|
||||
static u64 intel_pt_ctl(struct intel_pt *pt)
|
||||
{
|
||||
struct evsel *evsel;
|
||||
u64 config;
|
||||
|
||||
evlist__for_each_entry(pt->session->evlist, evsel) {
|
||||
if (intel_pt_get_config(pt, &evsel->core.attr, &config))
|
||||
return config;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
static u64 intel_pt_ns_to_ticks(const struct intel_pt *pt, u64 ns)
|
||||
{
|
||||
u64 quot, rem;
|
||||
@ -1026,6 +1038,7 @@ static struct intel_pt_queue *intel_pt_alloc_queue(struct intel_pt *pt,
|
||||
params.data = ptq;
|
||||
params.return_compression = intel_pt_return_compression(pt);
|
||||
params.branch_enable = intel_pt_branch_enable(pt);
|
||||
params.ctl = intel_pt_ctl(pt);
|
||||
params.max_non_turbo_ratio = pt->max_non_turbo_ratio;
|
||||
params.mtc_period = intel_pt_mtc_period(pt);
|
||||
params.tsc_ctc_ratio_n = pt->tsc_ctc_ratio_n;
|
||||
|
Reference in New Issue
Block a user