linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [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

* [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 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

* 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).