* [PATCH 0/2] perf intel-pt: Fix system_wide dummy event for hybrid @ 2022-10-12 8:22 Adrian Hunter 2022-10-12 8:22 ` [PATCH 1/2] perf intel-pt: Fix segfault in intel_pt_print_info() with uClibc Adrian Hunter 2022-10-12 8:22 ` [PATCH 2/2] perf intel-pt: Fix system_wide dummy event for hybrid Adrian Hunter 0 siblings, 2 replies; 6+ messages in thread From: Adrian Hunter @ 2022-10-12 8:22 UTC (permalink / raw) To: Arnaldo Carvalho de Melo Cc: Jiri Olsa, Namhyung Kim, Ian Rogers, linux-kernel, linux-perf-users Hi Here are a couple of minor Intel PT fixes. Adrian Hunter (2): perf intel-pt: Fix segfault in intel_pt_print_info() with uClibc perf intel-pt: Fix system_wide dummy event for hybrid tools/perf/arch/x86/util/intel-pt.c | 2 +- tools/perf/util/intel-pt.c | 9 +++++++-- 2 files changed, 8 insertions(+), 3 deletions(-) Regards Adrian ^ permalink raw reply [flat|nested] 6+ messages in thread
* [PATCH 1/2] perf intel-pt: Fix segfault in intel_pt_print_info() with uClibc 2022-10-12 8:22 [PATCH 0/2] perf intel-pt: Fix system_wide dummy event for hybrid Adrian Hunter @ 2022-10-12 8:22 ` Adrian Hunter 2022-10-12 16:20 ` Namhyung Kim 2022-10-12 8:22 ` [PATCH 2/2] perf intel-pt: Fix system_wide dummy event for hybrid Adrian Hunter 1 sibling, 1 reply; 6+ messages in thread From: Adrian Hunter @ 2022-10-12 8:22 UTC (permalink / raw) To: Arnaldo Carvalho de Melo Cc: Jiri Olsa, Namhyung Kim, Ian Rogers, linux-kernel, linux-perf-users uClibc segfaulted because NULL was passed as the format to fprintf(). That happened because one of the format strings was missing and intel_pt_print_info() didn't check that before calling fprintf(). Add the missing format string, and check format is not NULL before calling fprintf(). Fixes: 11fa7cb86b56 ("perf tools: Pass Intel PT information for decoding MTC and CYC") Cc: stable@vger.kernel.org Signed-off-by: Adrian Hunter <adrian.hunter@intel.com> --- tools/perf/util/intel-pt.c | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/tools/perf/util/intel-pt.c b/tools/perf/util/intel-pt.c index b34cb3dec1aa..e3548ddef254 100644 --- a/tools/perf/util/intel-pt.c +++ b/tools/perf/util/intel-pt.c @@ -4046,6 +4046,7 @@ static const char * const intel_pt_info_fmts[] = { [INTEL_PT_SNAPSHOT_MODE] = " Snapshot mode %"PRId64"\n", [INTEL_PT_PER_CPU_MMAPS] = " Per-cpu maps %"PRId64"\n", [INTEL_PT_MTC_BIT] = " MTC bit %#"PRIx64"\n", + [INTEL_PT_MTC_FREQ_BITS] = " MTC freq bits %#"PRIx64"\n", [INTEL_PT_TSC_CTC_N] = " TSC:CTC numerator %"PRIu64"\n", [INTEL_PT_TSC_CTC_D] = " TSC:CTC denominator %"PRIu64"\n", [INTEL_PT_CYC_BIT] = " CYC bit %#"PRIx64"\n", @@ -4060,8 +4061,12 @@ static void intel_pt_print_info(__u64 *arr, int start, int finish) if (!dump_trace) return; - for (i = start; i <= finish; i++) - fprintf(stdout, intel_pt_info_fmts[i], arr[i]); + for (i = start; i <= finish; i++) { + const char *fmt = intel_pt_info_fmts[i]; + + if (fmt) + fprintf(stdout, fmt, arr[i]); + } } static void intel_pt_print_info_str(const char *name, const char *str) -- 2.25.1 ^ permalink raw reply related [flat|nested] 6+ messages in thread
* Re: [PATCH 1/2] perf intel-pt: Fix segfault in intel_pt_print_info() with uClibc 2022-10-12 8:22 ` [PATCH 1/2] perf intel-pt: Fix segfault in intel_pt_print_info() with uClibc Adrian Hunter @ 2022-10-12 16:20 ` Namhyung Kim 0 siblings, 0 replies; 6+ messages in thread From: Namhyung Kim @ 2022-10-12 16:20 UTC (permalink / raw) To: Adrian Hunter Cc: Arnaldo Carvalho de Melo, Jiri Olsa, Ian Rogers, linux-kernel, linux-perf-users Hi Adrian, On Wed, Oct 12, 2022 at 1:23 AM Adrian Hunter <adrian.hunter@intel.com> wrote: > > uClibc segfaulted because NULL was passed as the format to fprintf(). Sounds like glibc has a NULL check in fprintf(). > > That happened because one of the format strings was missing and > intel_pt_print_info() didn't check that before calling fprintf(). > > Add the missing format string, and check format is not NULL before calling > fprintf(). > > Fixes: 11fa7cb86b56 ("perf tools: Pass Intel PT information for decoding MTC and CYC") > Cc: stable@vger.kernel.org > Signed-off-by: Adrian Hunter <adrian.hunter@intel.com> Acked-by: Namhyung Kim <namhyung@kernel.org> Thanks, Namhyung > --- > tools/perf/util/intel-pt.c | 9 +++++++-- > 1 file changed, 7 insertions(+), 2 deletions(-) > > diff --git a/tools/perf/util/intel-pt.c b/tools/perf/util/intel-pt.c > index b34cb3dec1aa..e3548ddef254 100644 > --- a/tools/perf/util/intel-pt.c > +++ b/tools/perf/util/intel-pt.c > @@ -4046,6 +4046,7 @@ static const char * const intel_pt_info_fmts[] = { > [INTEL_PT_SNAPSHOT_MODE] = " Snapshot mode %"PRId64"\n", > [INTEL_PT_PER_CPU_MMAPS] = " Per-cpu maps %"PRId64"\n", > [INTEL_PT_MTC_BIT] = " MTC bit %#"PRIx64"\n", > + [INTEL_PT_MTC_FREQ_BITS] = " MTC freq bits %#"PRIx64"\n", > [INTEL_PT_TSC_CTC_N] = " TSC:CTC numerator %"PRIu64"\n", > [INTEL_PT_TSC_CTC_D] = " TSC:CTC denominator %"PRIu64"\n", > [INTEL_PT_CYC_BIT] = " CYC bit %#"PRIx64"\n", > @@ -4060,8 +4061,12 @@ static void intel_pt_print_info(__u64 *arr, int start, int finish) > if (!dump_trace) > return; > > - for (i = start; i <= finish; i++) > - fprintf(stdout, intel_pt_info_fmts[i], arr[i]); > + for (i = start; i <= finish; i++) { > + const char *fmt = intel_pt_info_fmts[i]; > + > + if (fmt) > + fprintf(stdout, fmt, arr[i]); > + } > } > > static void intel_pt_print_info_str(const char *name, const char *str) > -- > 2.25.1 > ^ permalink raw reply [flat|nested] 6+ messages in thread
* [PATCH 2/2] perf intel-pt: Fix system_wide dummy event for hybrid 2022-10-12 8:22 [PATCH 0/2] perf intel-pt: Fix system_wide dummy event for hybrid Adrian Hunter 2022-10-12 8:22 ` [PATCH 1/2] perf intel-pt: Fix segfault in intel_pt_print_info() with uClibc Adrian Hunter @ 2022-10-12 8:22 ` Adrian Hunter 2022-10-12 16:25 ` Namhyung Kim 1 sibling, 1 reply; 6+ messages in thread From: Adrian Hunter @ 2022-10-12 8:22 UTC (permalink / raw) To: Arnaldo Carvalho de Melo Cc: Jiri Olsa, Namhyung Kim, Ian Rogers, linux-kernel, linux-perf-users User space tasks can migrate between CPUs, so when tracing selected CPUs, system-wide sideband is still needed, however evlist->core.has_user_cpus is not set in the hybrid case, so check the target cpu_list instead. Fixes: 7d189cadbeeb ("perf intel-pt: Track sideband system-wide when needed") Cc: stable@vger.kernel.org Signed-off-by: Adrian Hunter <adrian.hunter@intel.com> --- tools/perf/arch/x86/util/intel-pt.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools/perf/arch/x86/util/intel-pt.c b/tools/perf/arch/x86/util/intel-pt.c index 793b35f2221a..af102f471e9f 100644 --- a/tools/perf/arch/x86/util/intel-pt.c +++ b/tools/perf/arch/x86/util/intel-pt.c @@ -866,7 +866,7 @@ static int intel_pt_recording_options(struct auxtrace_record *itr, * User space tasks can migrate between CPUs, so when tracing * selected CPUs, sideband for all CPUs is still needed. */ - need_system_wide_tracking = evlist->core.has_user_cpus && + need_system_wide_tracking = opts->target.cpu_list && !intel_pt_evsel->core.attr.exclude_user; tracking_evsel = evlist__add_aux_dummy(evlist, need_system_wide_tracking); -- 2.25.1 ^ permalink raw reply related [flat|nested] 6+ messages in thread
* Re: [PATCH 2/2] perf intel-pt: Fix system_wide dummy event for hybrid 2022-10-12 8:22 ` [PATCH 2/2] perf intel-pt: Fix system_wide dummy event for hybrid Adrian Hunter @ 2022-10-12 16:25 ` Namhyung Kim 2022-10-14 20:09 ` Arnaldo Carvalho de Melo 0 siblings, 1 reply; 6+ messages in thread From: Namhyung Kim @ 2022-10-12 16:25 UTC (permalink / raw) To: Adrian Hunter Cc: Arnaldo Carvalho de Melo, Jiri Olsa, Ian Rogers, linux-kernel, linux-perf-users On Wed, Oct 12, 2022 at 1:23 AM Adrian Hunter <adrian.hunter@intel.com> wrote: > > User space tasks can migrate between CPUs, so when tracing selected CPUs, > system-wide sideband is still needed, however evlist->core.has_user_cpus > is not set in the hybrid case, so check the target cpu_list instead. > > Fixes: 7d189cadbeeb ("perf intel-pt: Track sideband system-wide when needed") > Cc: stable@vger.kernel.org > Signed-off-by: Adrian Hunter <adrian.hunter@intel.com> Acked-by: Namhyung Kim <namhyung@kernel.org> Thanks, Namhyung > --- > tools/perf/arch/x86/util/intel-pt.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/tools/perf/arch/x86/util/intel-pt.c b/tools/perf/arch/x86/util/intel-pt.c > index 793b35f2221a..af102f471e9f 100644 > --- a/tools/perf/arch/x86/util/intel-pt.c > +++ b/tools/perf/arch/x86/util/intel-pt.c > @@ -866,7 +866,7 @@ static int intel_pt_recording_options(struct auxtrace_record *itr, > * User space tasks can migrate between CPUs, so when tracing > * selected CPUs, sideband for all CPUs is still needed. > */ > - need_system_wide_tracking = evlist->core.has_user_cpus && > + need_system_wide_tracking = opts->target.cpu_list && > !intel_pt_evsel->core.attr.exclude_user; > > tracking_evsel = evlist__add_aux_dummy(evlist, need_system_wide_tracking); > -- > 2.25.1 > ^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCH 2/2] perf intel-pt: Fix system_wide dummy event for hybrid 2022-10-12 16:25 ` Namhyung Kim @ 2022-10-14 20:09 ` Arnaldo Carvalho de Melo 0 siblings, 0 replies; 6+ messages in thread From: Arnaldo Carvalho de Melo @ 2022-10-14 20:09 UTC (permalink / raw) To: Namhyung Kim Cc: Adrian Hunter, Jiri Olsa, Ian Rogers, linux-kernel, linux-perf-users Em Wed, Oct 12, 2022 at 09:25:14AM -0700, Namhyung Kim escreveu: > On Wed, Oct 12, 2022 at 1:23 AM Adrian Hunter <adrian.hunter@intel.com> wrote: > > > > User space tasks can migrate between CPUs, so when tracing selected CPUs, > > system-wide sideband is still needed, however evlist->core.has_user_cpus > > is not set in the hybrid case, so check the target cpu_list instead. > > > > Fixes: 7d189cadbeeb ("perf intel-pt: Track sideband system-wide when needed") > > Cc: stable@vger.kernel.org > > Signed-off-by: Adrian Hunter <adrian.hunter@intel.com> > > Acked-by: Namhyung Kim <namhyung@kernel.org> Thanks, applied both fixes. - Arnaldo > Thanks, > Namhyung > > > > --- > > tools/perf/arch/x86/util/intel-pt.c | 2 +- > > 1 file changed, 1 insertion(+), 1 deletion(-) > > > > diff --git a/tools/perf/arch/x86/util/intel-pt.c b/tools/perf/arch/x86/util/intel-pt.c > > index 793b35f2221a..af102f471e9f 100644 > > --- a/tools/perf/arch/x86/util/intel-pt.c > > +++ b/tools/perf/arch/x86/util/intel-pt.c > > @@ -866,7 +866,7 @@ static int intel_pt_recording_options(struct auxtrace_record *itr, > > * User space tasks can migrate between CPUs, so when tracing > > * selected CPUs, sideband for all CPUs is still needed. > > */ > > - need_system_wide_tracking = evlist->core.has_user_cpus && > > + need_system_wide_tracking = opts->target.cpu_list && > > !intel_pt_evsel->core.attr.exclude_user; > > > > tracking_evsel = evlist__add_aux_dummy(evlist, need_system_wide_tracking); > > -- > > 2.25.1 > > -- - Arnaldo ^ permalink raw reply [flat|nested] 6+ messages in thread
end of thread, other threads:[~2022-10-14 20:09 UTC | newest] Thread overview: 6+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2022-10-12 8:22 [PATCH 0/2] perf intel-pt: Fix system_wide dummy event for hybrid Adrian Hunter 2022-10-12 8:22 ` [PATCH 1/2] perf intel-pt: Fix segfault in intel_pt_print_info() with uClibc Adrian Hunter 2022-10-12 16:20 ` Namhyung Kim 2022-10-12 8:22 ` [PATCH 2/2] perf intel-pt: Fix system_wide dummy event for hybrid Adrian Hunter 2022-10-12 16:25 ` Namhyung Kim 2022-10-14 20:09 ` Arnaldo Carvalho de Melo
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for NNTP newsgroup(s).