Commit e62ca655 authored by Adrian Hunter's avatar Adrian Hunter Committed by Arnaldo Carvalho de Melo

perf intel-pt: Prepare to synthesize PEBS samples

Add infrastructure to prepare for synthesizing PEBS samples but leave
the actual synthesis to later patches.
Signed-off-by: default avatarAdrian Hunter <adrian.hunter@intel.com>
Cc: Jiri Olsa <jolsa@redhat.com>
Link: http://lkml.kernel.org/r/20190610072803.10456-5-adrian.hunter@intel.comSigned-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
parent 4c35595e
...@@ -101,6 +101,9 @@ struct intel_pt { ...@@ -101,6 +101,9 @@ struct intel_pt {
u64 pwrx_id; u64 pwrx_id;
u64 cbr_id; u64 cbr_id;
bool sample_pebs;
struct perf_evsel *pebs_evsel;
u64 tsc_bit; u64 tsc_bit;
u64 mtc_bit; u64 mtc_bit;
u64 mtc_freq_bits; u64 mtc_freq_bits;
...@@ -1535,6 +1538,11 @@ static int intel_pt_synth_pwrx_sample(struct intel_pt_queue *ptq) ...@@ -1535,6 +1538,11 @@ static int intel_pt_synth_pwrx_sample(struct intel_pt_queue *ptq)
pt->pwr_events_sample_type); pt->pwr_events_sample_type);
} }
static int intel_pt_synth_pebs_sample(struct intel_pt_queue *ptq __maybe_unused)
{
return 0;
}
static int intel_pt_synth_error(struct intel_pt *pt, int code, int cpu, static int intel_pt_synth_error(struct intel_pt *pt, int code, int cpu,
pid_t pid, pid_t tid, u64 ip, u64 timestamp) pid_t pid, pid_t tid, u64 ip, u64 timestamp)
{ {
...@@ -1622,6 +1630,16 @@ static int intel_pt_sample(struct intel_pt_queue *ptq) ...@@ -1622,6 +1630,16 @@ static int intel_pt_sample(struct intel_pt_queue *ptq)
ptq->ipc_cyc_cnt = ptq->state->tot_cyc_cnt; ptq->ipc_cyc_cnt = ptq->state->tot_cyc_cnt;
} }
/*
* Do PEBS first to allow for the possibility that the PEBS timestamp
* precedes the current timestamp.
*/
if (pt->sample_pebs && state->type & INTEL_PT_BLK_ITEMS) {
err = intel_pt_synth_pebs_sample(ptq);
if (err)
return err;
}
if (pt->sample_pwr_events && (state->type & INTEL_PT_PWR_EVT)) { if (pt->sample_pwr_events && (state->type & INTEL_PT_PWR_EVT)) {
if (state->type & INTEL_PT_CBR_CHG) { if (state->type & INTEL_PT_CBR_CHG) {
err = intel_pt_synth_cbr_sample(ptq); err = intel_pt_synth_cbr_sample(ptq);
......
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