diff options
Diffstat (limited to 'tools/perf/arch/x86/util/intel-pt.c')
-rw-r--r-- | tools/perf/arch/x86/util/intel-pt.c | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/tools/perf/arch/x86/util/intel-pt.c b/tools/perf/arch/x86/util/intel-pt.c index fb51457ba338..a2412e9d883b 100644 --- a/tools/perf/arch/x86/util/intel-pt.c +++ b/tools/perf/arch/x86/util/intel-pt.c | |||
@@ -501,7 +501,7 @@ static int intel_pt_recording_options(struct auxtrace_record *itr, | |||
501 | struct intel_pt_recording *ptr = | 501 | struct intel_pt_recording *ptr = |
502 | container_of(itr, struct intel_pt_recording, itr); | 502 | container_of(itr, struct intel_pt_recording, itr); |
503 | struct perf_pmu *intel_pt_pmu = ptr->intel_pt_pmu; | 503 | struct perf_pmu *intel_pt_pmu = ptr->intel_pt_pmu; |
504 | bool have_timing_info; | 504 | bool have_timing_info, need_immediate = false; |
505 | struct perf_evsel *evsel, *intel_pt_evsel = NULL; | 505 | struct perf_evsel *evsel, *intel_pt_evsel = NULL; |
506 | const struct cpu_map *cpus = evlist->cpus; | 506 | const struct cpu_map *cpus = evlist->cpus; |
507 | bool privileged = geteuid() == 0 || perf_event_paranoid() < 0; | 507 | bool privileged = geteuid() == 0 || perf_event_paranoid() < 0; |
@@ -655,6 +655,7 @@ static int intel_pt_recording_options(struct auxtrace_record *itr, | |||
655 | ptr->have_sched_switch = 3; | 655 | ptr->have_sched_switch = 3; |
656 | } else { | 656 | } else { |
657 | opts->record_switch_events = true; | 657 | opts->record_switch_events = true; |
658 | need_immediate = true; | ||
658 | if (cpu_wide) | 659 | if (cpu_wide) |
659 | ptr->have_sched_switch = 3; | 660 | ptr->have_sched_switch = 3; |
660 | else | 661 | else |
@@ -700,6 +701,9 @@ static int intel_pt_recording_options(struct auxtrace_record *itr, | |||
700 | tracking_evsel->attr.freq = 0; | 701 | tracking_evsel->attr.freq = 0; |
701 | tracking_evsel->attr.sample_period = 1; | 702 | tracking_evsel->attr.sample_period = 1; |
702 | 703 | ||
704 | if (need_immediate) | ||
705 | tracking_evsel->immediate = true; | ||
706 | |||
703 | /* In per-cpu case, always need the time of mmap events etc */ | 707 | /* In per-cpu case, always need the time of mmap events etc */ |
704 | if (!cpu_map__empty(cpus)) { | 708 | if (!cpu_map__empty(cpus)) { |
705 | perf_evsel__set_sample_bit(tracking_evsel, TIME); | 709 | perf_evsel__set_sample_bit(tracking_evsel, TIME); |