From nobody Wed Apr 29 03:23:58 2026 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id ECE22C433EF for ; Tue, 24 May 2022 07:55:20 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S235482AbiEXHzR (ORCPT ); Tue, 24 May 2022 03:55:17 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:60156 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S235449AbiEXHzH (ORCPT ); Tue, 24 May 2022 03:55:07 -0400 Received: from mga03.intel.com (mga03.intel.com [134.134.136.65]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id AEEE4994FB for ; Tue, 24 May 2022 00:55:06 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1653378906; x=1684914906; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=aVe5Alf9ZT6tdqHH9037XewXVE8SDzq+3LR9QmuSdYQ=; b=BmZoMvIDulbDQK+rL/W2NCv9XUN+7rApcoX55WqHCYlEEmkaBpi87We1 +oMKSfk41JExX+xeze85c5V42NQSp/LpOlKbKOU6+53QnNXRJ29+U0fkE 9MAZclZs8jFjn5k9U8xik9iW12vlMH9dQEuuh+9reXsretJMEx2cOGVbh OBlsVAfqU3FUehoT6kNb4y77k+yR0gZgBroTuPRIwjz7RSg2ss+mpETFn uCaz8tFXIZN1lg5uIfbu9NcWhuIQIrOpeNZ/UgwgPTti9p5tTqRjPkotD HYJujA4jwvxkSSKCL3Z3598AKdowZpjxV6CBWU4/aBeFSFJ0+NIlLqUgn w==; X-IronPort-AV: E=McAfee;i="6400,9594,10356"; a="273455416" X-IronPort-AV: E=Sophos;i="5.91,248,1647327600"; d="scan'208";a="273455416" Received: from fmsmga001.fm.intel.com ([10.253.24.23]) by orsmga103.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 24 May 2022 00:55:06 -0700 X-IronPort-AV: E=Sophos;i="5.91,248,1647327600"; d="scan'208";a="717072341" Received: from ahunter6-mobl1.ger.corp.intel.com (HELO ahunter-VirtualBox.home\044ger.corp.intel.com) ([10.252.52.210]) by fmsmga001-auth.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 24 May 2022 00:55:04 -0700 From: Adrian Hunter To: Arnaldo Carvalho de Melo Cc: Jiri Olsa , Ian Rogers , Alexey Bayduraev , Namhyung Kim , Leo Yan , linux-kernel@vger.kernel.org Subject: [PATCH V4 01/15] perf intel-pt: Add a test for system-wide side band Date: Tue, 24 May 2022 10:54:22 +0300 Message-Id: <20220524075436.29144-2-adrian.hunter@intel.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20220524075436.29144-1-adrian.hunter@intel.com> References: <20220524075436.29144-1-adrian.hunter@intel.com> MIME-Version: 1.0 Organization: Intel Finland Oy, Registered Address: PL 281, 00181 Helsinki, Business Identity Code: 0357606 - 4, Domiciled in Helsinki Content-Transfer-Encoding: quoted-printable Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Type: text/plain; charset="utf-8" Add a test for system-wide side band even when tracing selected CPUs. The test fails before the patches up to "perf tools: Allow system-wide events to keep their own CPUs" are applied, passes afterwards. Tested-by: Ian Rogers Acked-by: Namhyung Kim Signed-off-by: Adrian Hunter Acked-by: Ian Rogers --- tools/perf/tests/shell/test_intel_pt.sh | 71 +++++++++++++++++++++++++ 1 file changed, 71 insertions(+) create mode 100755 tools/perf/tests/shell/test_intel_pt.sh diff --git a/tools/perf/tests/shell/test_intel_pt.sh b/tools/perf/tests/she= ll/test_intel_pt.sh new file mode 100755 index 000000000000..a3298643884d --- /dev/null +++ b/tools/perf/tests/shell/test_intel_pt.sh @@ -0,0 +1,71 @@ +#!/bin/sh +# Miscellaneous Intel PT testing +# SPDX-License-Identifier: GPL-2.0 + +set -e + +# Skip if no Intel PT +perf list | grep -q 'intel_pt//' || exit 2 + +skip_cnt=3D0 +ok_cnt=3D0 +err_cnt=3D0 + +tmpfile=3D`mktemp` +perfdatafile=3D`mktemp` + +can_cpu_wide() +{ + perf record -o ${tmpfile} -B -N --no-bpf-event -e dummy:u -C $1 true 2>&1= >/dev/null || return 2 + return 0 +} + +test_system_wide_side_band() +{ + # Need CPU 0 and CPU 1 + can_cpu_wide 0 || return $? + can_cpu_wide 1 || return $? + + # Record on CPU 0 a task running on CPU 1 + perf record -B -N --no-bpf-event -o ${perfdatafile} -e intel_pt//u -C 0 -= - taskset --cpu-list 1 uname + + # Should get MMAP events from CPU 1 because they can be needed to decode + mmap_cnt=3D`perf script -i ${perfdatafile} --no-itrace --show-mmap-events= -C 1 2>/dev/null | grep MMAP | wc -l` + + if [ ${mmap_cnt} -gt 0 ] ; then + return 0 + fi + + echo "Failed to record MMAP events on CPU 1 when tracing CPU 0" + return 1 +} + +count_result() +{ + if [ $1 -eq 2 ] ; then + skip_cnt=3D`expr ${skip_cnt} \+ 1` + return + fi + if [ $1 -eq 0 ] ; then + ok_cnt=3D`expr ${ok_cnt} \+ 1` + return + fi + err_cnt=3D`expr ${err_cnt} \+ 1` +} + +test_system_wide_side_band + +count_result $? + +rm -f ${tmpfile} +rm -f ${perfdatafile} + +if [ ${err_cnt} -gt 0 ] ; then + exit 1 +fi + +if [ ${ok_cnt} -gt 0 ] ; then + exit 0 +fi + +exit 2 --=20 2.25.1 From nobody Wed Apr 29 03:23:58 2026 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id A1D80C433F5 for ; Tue, 24 May 2022 07:55:29 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S235507AbiEXHz1 (ORCPT ); Tue, 24 May 2022 03:55:27 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:60168 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S235453AbiEXHzJ (ORCPT ); Tue, 24 May 2022 03:55:09 -0400 Received: from mga03.intel.com (mga03.intel.com [134.134.136.65]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id E367F8722C for ; Tue, 24 May 2022 00:55:08 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1653378908; x=1684914908; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=TggfkNCflGE5M20kQe3o7XciGxZhLUT5n8lNczCva+Y=; b=DrCFoQBZ5kc2u2/zh/Rzs1ezGYMAXMZ4QBJdsze2mqqi0kvE/VXqICHz 7W/oVLejFXnUlyjc51VU3MZ+4S9Hd4HkGZ4TjZ8Fmfl9scHSTQ1vv4OFo ls0R0Z7t6grBk3UpyPx3keQNEAokTIJclDKy4IXVlsngaLBblj4wzRXkI HEHhOUWtZziydmv1j7H4OCkkEYGdu6j83Vdl/UUkWDgJrCVOx+vyMhNJ9 Vyjw+sQt0MJR+EAb5AU4m6lEFX+v4hRA9nGnbAsUwPZgbVdZtygRLHYjT kOTsPMXtpAbSHWYRF5qRkv5ucLbgb+K9Gclce0VpU2yjpz1I33sVdMJGF g==; X-IronPort-AV: E=McAfee;i="6400,9594,10356"; a="273455423" X-IronPort-AV: E=Sophos;i="5.91,248,1647327600"; d="scan'208";a="273455423" Received: from fmsmga001.fm.intel.com ([10.253.24.23]) by orsmga103.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 24 May 2022 00:55:08 -0700 X-IronPort-AV: E=Sophos;i="5.91,248,1647327600"; d="scan'208";a="717072359" Received: from ahunter6-mobl1.ger.corp.intel.com (HELO ahunter-VirtualBox.home\044ger.corp.intel.com) ([10.252.52.210]) by fmsmga001-auth.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 24 May 2022 00:55:06 -0700 From: Adrian Hunter To: Arnaldo Carvalho de Melo Cc: Jiri Olsa , Ian Rogers , Alexey Bayduraev , Namhyung Kim , Leo Yan , linux-kernel@vger.kernel.org Subject: [PATCH V4 02/15] perf auxtrace: Add mmap_needed to auxtrace_mmap_params Date: Tue, 24 May 2022 10:54:23 +0300 Message-Id: <20220524075436.29144-3-adrian.hunter@intel.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20220524075436.29144-1-adrian.hunter@intel.com> References: <20220524075436.29144-1-adrian.hunter@intel.com> MIME-Version: 1.0 Organization: Intel Finland Oy, Registered Address: PL 281, 00181 Helsinki, Business Identity Code: 0357606 - 4, Domiciled in Helsinki Content-Transfer-Encoding: quoted-printable Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Type: text/plain; charset="utf-8" Add mmap_needed to auxtrace_mmap_params. Currently an auxtrace mmap is always attempted even if the event is not an auxtrace event. That works because, when AUX area tracing, there is always an auxtrace event first for every mmap. Prepare for that not being the case, which it won't be when sideband tracking events are allowed on all CPUs even when auxtrace is limited to selected CPUs. Acked-by: Namhyung Kim Signed-off-by: Adrian Hunter Acked-by: Ian Rogers --- tools/perf/util/auxtrace.c | 10 ++++++++-- tools/perf/util/auxtrace.h | 11 +++++++++-- tools/perf/util/evlist.c | 5 +++-- tools/perf/util/mmap.c | 1 + 4 files changed, 21 insertions(+), 6 deletions(-) diff --git a/tools/perf/util/auxtrace.c b/tools/perf/util/auxtrace.c index b11549ae39df..b446cfa66469 100644 --- a/tools/perf/util/auxtrace.c +++ b/tools/perf/util/auxtrace.c @@ -125,7 +125,7 @@ int auxtrace_mmap__mmap(struct auxtrace_mmap *mm, mm->tid =3D mp->tid; mm->cpu =3D mp->cpu.cpu; =20 - if (!mp->len) { + if (!mp->len || !mp->mmap_needed) { mm->base =3D NULL; return 0; } @@ -168,9 +168,15 @@ void auxtrace_mmap_params__init(struct auxtrace_mmap_p= arams *mp, } =20 void auxtrace_mmap_params__set_idx(struct auxtrace_mmap_params *mp, - struct evlist *evlist, int idx, + struct evlist *evlist, + struct evsel *evsel, int idx, bool per_cpu) { + mp->mmap_needed =3D evsel->needs_auxtrace_mmap; + + if (!mp->mmap_needed) + return; + mp->idx =3D idx; =20 if (per_cpu) { diff --git a/tools/perf/util/auxtrace.h b/tools/perf/util/auxtrace.h index dc38b6f57232..695591b73ae1 100644 --- a/tools/perf/util/auxtrace.h +++ b/tools/perf/util/auxtrace.h @@ -344,6 +344,10 @@ struct auxtrace_mmap { * @idx: index of this mmap * @tid: tid for a per-thread mmap (also set if there is only 1 tid on a p= er-cpu * mmap) otherwise %0 + * @mmap_needed: set to %false for non-auxtrace events. This is needed bec= ause + * auxtrace mmapping is done in the same code path as non-au= xtrace + * mmapping but not every evsel that needs non-auxtrace mmap= ping + * also needs auxtrace mmapping. * @cpu: cpu number for a per-cpu mmap otherwise %-1 */ struct auxtrace_mmap_params { @@ -353,6 +357,7 @@ struct auxtrace_mmap_params { int prot; int idx; pid_t tid; + bool mmap_needed; struct perf_cpu cpu; }; =20 @@ -490,7 +495,8 @@ void auxtrace_mmap_params__init(struct auxtrace_mmap_pa= rams *mp, unsigned int auxtrace_pages, bool auxtrace_overwrite); void auxtrace_mmap_params__set_idx(struct auxtrace_mmap_params *mp, - struct evlist *evlist, int idx, + struct evlist *evlist, + struct evsel *evsel, int idx, bool per_cpu); =20 typedef int (*process_auxtrace_t)(struct perf_tool *tool, @@ -863,7 +869,8 @@ void auxtrace_mmap_params__init(struct auxtrace_mmap_pa= rams *mp, unsigned int auxtrace_pages, bool auxtrace_overwrite); void auxtrace_mmap_params__set_idx(struct auxtrace_mmap_params *mp, - struct evlist *evlist, int idx, + struct evlist *evlist, + struct evsel *evsel, int idx, bool per_cpu); =20 #define ITRACE_HELP "" diff --git a/tools/perf/util/evlist.c b/tools/perf/util/evlist.c index 7f9f588e88c6..9e0fabfb096d 100644 --- a/tools/perf/util/evlist.c +++ b/tools/perf/util/evlist.c @@ -747,15 +747,16 @@ static struct mmap *evlist__alloc_mmap(struct evlist = *evlist, =20 static void perf_evlist__mmap_cb_idx(struct perf_evlist *_evlist, - struct perf_evsel *_evsel __maybe_unused, + struct perf_evsel *_evsel, struct perf_mmap_param *_mp, int idx) { struct evlist *evlist =3D container_of(_evlist, struct evlist, core); struct mmap_params *mp =3D container_of(_mp, struct mmap_params, core); bool per_cpu =3D !perf_cpu_map__empty(_evlist->user_requested_cpus); + struct evsel *evsel =3D container_of(_evsel, struct evsel, core); =20 - auxtrace_mmap_params__set_idx(&mp->auxtrace_mp, evlist, idx, per_cpu); + auxtrace_mmap_params__set_idx(&mp->auxtrace_mp, evlist, evsel, idx, per_c= pu); } =20 static struct perf_mmap* diff --git a/tools/perf/util/mmap.c b/tools/perf/util/mmap.c index 50502b4a7ca4..de59c4da852b 100644 --- a/tools/perf/util/mmap.c +++ b/tools/perf/util/mmap.c @@ -62,6 +62,7 @@ void __weak auxtrace_mmap_params__init(struct auxtrace_mm= ap_params *mp __maybe_u =20 void __weak auxtrace_mmap_params__set_idx(struct auxtrace_mmap_params *mp = __maybe_unused, struct evlist *evlist __maybe_unused, + struct evsel *evsel __maybe_unused, int idx __maybe_unused, bool per_cpu __maybe_unused) { --=20 2.25.1 From nobody Wed Apr 29 03:23:58 2026 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id C1281C4332F for ; Tue, 24 May 2022 07:55:32 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S235522AbiEXHzb (ORCPT ); Tue, 24 May 2022 03:55:31 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:60204 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S235460AbiEXHzM (ORCPT ); Tue, 24 May 2022 03:55:12 -0400 Received: from mga03.intel.com (mga03.intel.com [134.134.136.65]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 3F662985AC for ; Tue, 24 May 2022 00:55:11 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1653378911; x=1684914911; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=tnfulP8MLCckn6uYuu2Vb8zrtRzNC5Wc8mW3rYdpUYg=; b=V8j69auLBanvUZSqV7FJ5TvMICS/OMyTDlZFFaT54BuMJ43ywUxuDA6f uWbCwVyfc+rlcesXSgCpuLbYYQMX983lmvrW70azWqbncWbIol4QouT+9 RJLhIUnwgRHBcy5eUp0iUybtcbthSr7+KfaGRCiu7CUBr936sK5TObJYZ zoTPVPIZawV0Jj80LhDz1UDZQUduq9p6aA3iDUxFN7V3yRDW0XMG5m5+5 ySWanbcvS1qjuOY0Bs9NbBXTxcuNXdpdTgSmHWvb/e/Ta+y9hefkRsc3s xuhTmy0FULrJLgupkxcq8KjAE4cyJIwwrgb9Psc4hvdm7Jn/nJuIZrSIE Q==; X-IronPort-AV: E=McAfee;i="6400,9594,10356"; a="273455427" X-IronPort-AV: E=Sophos;i="5.91,248,1647327600"; d="scan'208";a="273455427" Received: from fmsmga001.fm.intel.com ([10.253.24.23]) by orsmga103.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 24 May 2022 00:55:11 -0700 X-IronPort-AV: E=Sophos;i="5.91,248,1647327600"; d="scan'208";a="717072369" Received: from ahunter6-mobl1.ger.corp.intel.com (HELO ahunter-VirtualBox.home\044ger.corp.intel.com) ([10.252.52.210]) by fmsmga001-auth.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 24 May 2022 00:55:08 -0700 From: Adrian Hunter To: Arnaldo Carvalho de Melo Cc: Jiri Olsa , Ian Rogers , Alexey Bayduraev , Namhyung Kim , Leo Yan , linux-kernel@vger.kernel.org Subject: [PATCH V4 03/15] perf auxtrace: Remove auxtrace_mmap_params__set_idx() per_cpu parameter Date: Tue, 24 May 2022 10:54:24 +0300 Message-Id: <20220524075436.29144-4-adrian.hunter@intel.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20220524075436.29144-1-adrian.hunter@intel.com> References: <20220524075436.29144-1-adrian.hunter@intel.com> MIME-Version: 1.0 Organization: Intel Finland Oy, Registered Address: PL 281, 00181 Helsinki, Business Identity Code: 0357606 - 4, Domiciled in Helsinki Content-Transfer-Encoding: quoted-printable Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Type: text/plain; charset="utf-8" Remove auxtrace_mmap_params__set_idx() per_cpu parameter because it isn't needed. Acked-by: Ian Rogers Acked-by: Namhyung Kim Signed-off-by: Adrian Hunter --- tools/perf/util/auxtrace.c | 5 +++-- tools/perf/util/auxtrace.h | 6 ++---- tools/perf/util/evlist.c | 3 +-- tools/perf/util/mmap.c | 3 +-- 4 files changed, 7 insertions(+), 10 deletions(-) diff --git a/tools/perf/util/auxtrace.c b/tools/perf/util/auxtrace.c index b446cfa66469..ac4e4660932d 100644 --- a/tools/perf/util/auxtrace.c +++ b/tools/perf/util/auxtrace.c @@ -169,9 +169,10 @@ void auxtrace_mmap_params__init(struct auxtrace_mmap_p= arams *mp, =20 void auxtrace_mmap_params__set_idx(struct auxtrace_mmap_params *mp, struct evlist *evlist, - struct evsel *evsel, int idx, - bool per_cpu) + struct evsel *evsel, int idx) { + bool per_cpu =3D !perf_cpu_map__empty(evlist->core.user_requested_cpus); + mp->mmap_needed =3D evsel->needs_auxtrace_mmap; =20 if (!mp->mmap_needed) diff --git a/tools/perf/util/auxtrace.h b/tools/perf/util/auxtrace.h index 695591b73ae1..cd0d25c2751c 100644 --- a/tools/perf/util/auxtrace.h +++ b/tools/perf/util/auxtrace.h @@ -496,8 +496,7 @@ void auxtrace_mmap_params__init(struct auxtrace_mmap_pa= rams *mp, bool auxtrace_overwrite); void auxtrace_mmap_params__set_idx(struct auxtrace_mmap_params *mp, struct evlist *evlist, - struct evsel *evsel, int idx, - bool per_cpu); + struct evsel *evsel, int idx); =20 typedef int (*process_auxtrace_t)(struct perf_tool *tool, struct mmap *map, @@ -870,8 +869,7 @@ void auxtrace_mmap_params__init(struct auxtrace_mmap_pa= rams *mp, bool auxtrace_overwrite); void auxtrace_mmap_params__set_idx(struct auxtrace_mmap_params *mp, struct evlist *evlist, - struct evsel *evsel, int idx, - bool per_cpu); + struct evsel *evsel, int idx); =20 #define ITRACE_HELP "" =20 diff --git a/tools/perf/util/evlist.c b/tools/perf/util/evlist.c index 9e0fabfb096d..157867bc337a 100644 --- a/tools/perf/util/evlist.c +++ b/tools/perf/util/evlist.c @@ -753,10 +753,9 @@ perf_evlist__mmap_cb_idx(struct perf_evlist *_evlist, { struct evlist *evlist =3D container_of(_evlist, struct evlist, core); struct mmap_params *mp =3D container_of(_mp, struct mmap_params, core); - bool per_cpu =3D !perf_cpu_map__empty(_evlist->user_requested_cpus); struct evsel *evsel =3D container_of(_evsel, struct evsel, core); =20 - auxtrace_mmap_params__set_idx(&mp->auxtrace_mp, evlist, evsel, idx, per_c= pu); + auxtrace_mmap_params__set_idx(&mp->auxtrace_mp, evlist, evsel, idx); } =20 static struct perf_mmap* diff --git a/tools/perf/util/mmap.c b/tools/perf/util/mmap.c index de59c4da852b..a4dff881be39 100644 --- a/tools/perf/util/mmap.c +++ b/tools/perf/util/mmap.c @@ -63,8 +63,7 @@ void __weak auxtrace_mmap_params__init(struct auxtrace_mm= ap_params *mp __maybe_u void __weak auxtrace_mmap_params__set_idx(struct auxtrace_mmap_params *mp = __maybe_unused, struct evlist *evlist __maybe_unused, struct evsel *evsel __maybe_unused, - int idx __maybe_unused, - bool per_cpu __maybe_unused) + int idx __maybe_unused) { } =20 --=20 2.25.1 From nobody Wed Apr 29 03:23:58 2026 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 5C2E9C433EF for ; Tue, 24 May 2022 07:55:37 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S235554AbiEXHzf (ORCPT ); Tue, 24 May 2022 03:55:35 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:60246 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S235487AbiEXHzP (ORCPT ); Tue, 24 May 2022 03:55:15 -0400 Received: from mga03.intel.com (mga03.intel.com [134.134.136.65]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 772E0994FB for ; Tue, 24 May 2022 00:55:13 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1653378913; x=1684914913; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=5U4Fk1oB+dv/Iz0P6S62XkniRaakxdDcwcRKb6Yg8Ng=; b=D92QvudOLnW5Hy4Q8UAoeZl08kXxoKF0MKaJQIBGUa98RX3ygkT6W2X8 NMpCKOnbVP12/2vt9u6WdwIeLp5ympMUecDhvWIjPTyX/aXpkyvNejwnq y9UqgTs4OlQR0MQOS0sh6CjIssXGBesRX+2PLdkiBTcmIokicaVvDffAT YnfXDe/Nw+3mPCCI5lVCJAqjY7adR1cK6gkaiwUTD4Mg4e0A9ADTmxO/x wSQMaBHja4ZJPRJWXOVfalfNJHzabuFoglEKGc9MI2mPJrlvyO9nE8bai B14pTz5E47J9aZvE/XPER2Iqgt6OwfUdAA/i6wYgC4g0SpjtTOqVzBfJB w==; X-IronPort-AV: E=McAfee;i="6400,9594,10356"; a="273455434" X-IronPort-AV: E=Sophos;i="5.91,248,1647327600"; d="scan'208";a="273455434" Received: from fmsmga001.fm.intel.com ([10.253.24.23]) by orsmga103.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 24 May 2022 00:55:13 -0700 X-IronPort-AV: E=Sophos;i="5.91,248,1647327600"; d="scan'208";a="717072375" Received: from ahunter6-mobl1.ger.corp.intel.com (HELO ahunter-VirtualBox.home\044ger.corp.intel.com) ([10.252.52.210]) by fmsmga001-auth.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 24 May 2022 00:55:11 -0700 From: Adrian Hunter To: Arnaldo Carvalho de Melo Cc: Jiri Olsa , Ian Rogers , Alexey Bayduraev , Namhyung Kim , Leo Yan , linux-kernel@vger.kernel.org Subject: [PATCH V4 04/15] perf evlist: Factor out evlist__dummy_event() Date: Tue, 24 May 2022 10:54:25 +0300 Message-Id: <20220524075436.29144-5-adrian.hunter@intel.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20220524075436.29144-1-adrian.hunter@intel.com> References: <20220524075436.29144-1-adrian.hunter@intel.com> MIME-Version: 1.0 Organization: Intel Finland Oy, Registered Address: PL 281, 00181 Helsinki, Business Identity Code: 0357606 - 4, Domiciled in Helsinki Content-Transfer-Encoding: quoted-printable Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Type: text/plain; charset="utf-8" Factor out evlist__dummy_event() so it can be reused. Acked-by: Ian Rogers Acked-by: Namhyung Kim Signed-off-by: Adrian Hunter --- tools/perf/util/evlist.c | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/tools/perf/util/evlist.c b/tools/perf/util/evlist.c index 157867bc337a..efad0e691045 100644 --- a/tools/perf/util/evlist.c +++ b/tools/perf/util/evlist.c @@ -242,14 +242,20 @@ int __evlist__add_default(struct evlist *evlist, bool= precise) return 0; } =20 -int evlist__add_dummy(struct evlist *evlist) +static struct evsel *evlist__dummy_event(struct evlist *evlist) { struct perf_event_attr attr =3D { .type =3D PERF_TYPE_SOFTWARE, .config =3D PERF_COUNT_SW_DUMMY, .size =3D sizeof(attr), /* to capture ABI version */ }; - struct evsel *evsel =3D evsel__new_idx(&attr, evlist->core.nr_entries); + + return evsel__new_idx(&attr, evlist->core.nr_entries); +} + +int evlist__add_dummy(struct evlist *evlist) +{ + struct evsel *evsel =3D evlist__dummy_event(evlist); =20 if (evsel =3D=3D NULL) return -ENOMEM; --=20 2.25.1 From nobody Wed Apr 29 03:23:58 2026 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id BD86EC433EF for ; Tue, 24 May 2022 07:55:43 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S235498AbiEXHzl (ORCPT ); Tue, 24 May 2022 03:55:41 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:60260 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S235469AbiEXHzQ (ORCPT ); Tue, 24 May 2022 03:55:16 -0400 Received: from mga03.intel.com (mga03.intel.com [134.134.136.65]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id D17438722C for ; Tue, 24 May 2022 00:55:15 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1653378915; x=1684914915; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=wlVX3TF3v9W6UCNas3Sk52q6mw1x+2oACY9LNZJEDXk=; b=V/5Om1kxErbxTyQnfySAYaUiaKvJSvP6uste0b5sru0OweSVZafu1POQ Cs7c3SPaU2gBQLWk1eKgrn8GaUrkpvR2IZ1eBYh6P7NowzmEWH9o/K971 RzG56cX42GX+Y43ImkBhd7cUH7kfsvXifm8dIjr5twXz9wZhoQ5J5jlrf 7lkC4v9/J9ulwGBgQiioUG2Bnrk1yjf0SCBC1wSBqgmgIie3IoMMUuTdA Yy1VDauc5YlQebayB0l7MU2Z7rcchANbCgrNvnHhRnKg/NE9M3aRD/72l dpQMJwnClg90DnbXA2YzW0Ey3ZulnibPpC4SEij+F85IzLumMDwzAzjUL A==; X-IronPort-AV: E=McAfee;i="6400,9594,10356"; a="273455439" X-IronPort-AV: E=Sophos;i="5.91,248,1647327600"; d="scan'208";a="273455439" Received: from fmsmga001.fm.intel.com ([10.253.24.23]) by orsmga103.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 24 May 2022 00:55:15 -0700 X-IronPort-AV: E=Sophos;i="5.91,248,1647327600"; d="scan'208";a="717072384" Received: from ahunter6-mobl1.ger.corp.intel.com (HELO ahunter-VirtualBox.home\044ger.corp.intel.com) ([10.252.52.210]) by fmsmga001-auth.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 24 May 2022 00:55:13 -0700 From: Adrian Hunter To: Arnaldo Carvalho de Melo Cc: Jiri Olsa , Ian Rogers , Alexey Bayduraev , Namhyung Kim , Leo Yan , linux-kernel@vger.kernel.org Subject: [PATCH V4 05/15] perf evlist: Add evlist__add_dummy_on_all_cpus() Date: Tue, 24 May 2022 10:54:26 +0300 Message-Id: <20220524075436.29144-6-adrian.hunter@intel.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20220524075436.29144-1-adrian.hunter@intel.com> References: <20220524075436.29144-1-adrian.hunter@intel.com> MIME-Version: 1.0 Organization: Intel Finland Oy, Registered Address: PL 281, 00181 Helsinki, Business Identity Code: 0357606 - 4, Domiciled in Helsinki Content-Transfer-Encoding: quoted-printable Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Type: text/plain; charset="utf-8" Add evlist__add_dummy_on_all_cpus() to enable creating a system-wide dummy event that sets up the system-wide maps before map propagation. For convenience, add evlist__add_aux_dummy() so that the logic can be used whether or not the event needs to be system-wide. Acked-by: Namhyung Kim Signed-off-by: Adrian Hunter Acked-by: Ian Rogers --- tools/perf/util/evlist.c | 45 ++++++++++++++++++++++++++++++++++++++++ tools/perf/util/evlist.h | 5 +++++ 2 files changed, 50 insertions(+) diff --git a/tools/perf/util/evlist.c b/tools/perf/util/evlist.c index efad0e691045..48af7d379d82 100644 --- a/tools/perf/util/evlist.c +++ b/tools/perf/util/evlist.c @@ -264,6 +264,51 @@ int evlist__add_dummy(struct evlist *evlist) return 0; } =20 +static void evlist__add_on_all_cpus(struct evlist *evlist, struct evsel *e= vsel) +{ + evsel->core.system_wide =3D true; + + /* + * All CPUs. + * + * Note perf_event_open() does not accept CPUs that are not online, so + * in fact this CPU list will include only all online CPUs. + */ + perf_cpu_map__put(evsel->core.own_cpus); + evsel->core.own_cpus =3D perf_cpu_map__new(NULL); + perf_cpu_map__put(evsel->core.cpus); + evsel->core.cpus =3D perf_cpu_map__get(evsel->core.own_cpus); + + /* No threads */ + perf_thread_map__put(evsel->core.threads); + evsel->core.threads =3D perf_thread_map__new_dummy(); + + evlist__add(evlist, evsel); +} + +struct evsel *evlist__add_aux_dummy(struct evlist *evlist, bool system_wid= e) +{ + struct evsel *evsel =3D evlist__dummy_event(evlist); + + if (!evsel) + return NULL; + + evsel->core.attr.exclude_kernel =3D 1; + evsel->core.attr.exclude_guest =3D 1; + evsel->core.attr.exclude_hv =3D 1; + evsel->core.attr.freq =3D 0; + evsel->core.attr.sample_period =3D 1; + evsel->no_aux_samples =3D true; + evsel->name =3D strdup("dummy:u"); + + if (system_wide) + evlist__add_on_all_cpus(evlist, evsel); + else + evlist__add(evlist, evsel); + + return evsel; +} + static int evlist__add_attrs(struct evlist *evlist, struct perf_event_attr= *attrs, size_t nr_attrs) { struct evsel *evsel, *n; diff --git a/tools/perf/util/evlist.h b/tools/perf/util/evlist.h index 4062f5aebfc1..1bde9ccf4e7d 100644 --- a/tools/perf/util/evlist.h +++ b/tools/perf/util/evlist.h @@ -114,6 +114,11 @@ int arch_evlist__add_default_attrs(struct evlist *evli= st); struct evsel *arch_evlist__leader(struct list_head *list); =20 int evlist__add_dummy(struct evlist *evlist); +struct evsel *evlist__add_aux_dummy(struct evlist *evlist, bool system_wid= e); +static inline struct evsel *evlist__add_dummy_on_all_cpus(struct evlist *e= vlist) +{ + return evlist__add_aux_dummy(evlist, true); +} =20 int evlist__add_sb_event(struct evlist *evlist, struct perf_event_attr *at= tr, evsel__sb_cb_t cb, void *data); --=20 2.25.1 From nobody Wed Apr 29 03:23:58 2026 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 3A7EAC433EF for ; Tue, 24 May 2022 07:55:49 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S233869AbiEXHzq (ORCPT ); Tue, 24 May 2022 03:55:46 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:60318 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S235499AbiEXHzS (ORCPT ); Tue, 24 May 2022 03:55:18 -0400 Received: from mga03.intel.com (mga03.intel.com [134.134.136.65]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 1E253994FB for ; Tue, 24 May 2022 00:55:18 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1653378918; x=1684914918; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=+ve6cOX7lGewrXwAPgN0/9phGtoH1NeJsEgVZdgiMeM=; b=MaRwhVsxfPIrqO+Z3/EN0FxbEIRBO7ZfyewtjXetELplgdjn3MFs3Foh fgZTNwxKYRkNd/FDO13c6uCsV+KhJjlsxHRHbh+nY+g3KT22hGvjteyjT 7F/yrLf9FBM6hGNE1IJqYFgnJdXV9CbkeBzn7KNqPeKADD8eXUljgI/Bd ah2+cfis+JfbYDTScuCgli9ogKdzmv0BLU9ZuVD15AQCE8uEKKerNCW9l /mkFzfRKQbCOCzL7zMqWGIStNAI/crsWFTiCIDK83EJ4yCsIhDIDJetSg vimI/swQCUPymUoA0OydfVrZudH9mOaq6oyLLUwsTUtXh9OH2Ve1AViqz Q==; X-IronPort-AV: E=McAfee;i="6400,9594,10356"; a="273455444" X-IronPort-AV: E=Sophos;i="5.91,248,1647327600"; d="scan'208";a="273455444" Received: from fmsmga001.fm.intel.com ([10.253.24.23]) by orsmga103.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 24 May 2022 00:55:17 -0700 X-IronPort-AV: E=Sophos;i="5.91,248,1647327600"; d="scan'208";a="717072391" Received: from ahunter6-mobl1.ger.corp.intel.com (HELO ahunter-VirtualBox.home\044ger.corp.intel.com) ([10.252.52.210]) by fmsmga001-auth.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 24 May 2022 00:55:15 -0700 From: Adrian Hunter To: Arnaldo Carvalho de Melo Cc: Jiri Olsa , Ian Rogers , Alexey Bayduraev , Namhyung Kim , Leo Yan , linux-kernel@vger.kernel.org Subject: [PATCH V4 06/15] perf record: Use evlist__add_dummy_on_all_cpus() in record__config_text_poke() Date: Tue, 24 May 2022 10:54:27 +0300 Message-Id: <20220524075436.29144-7-adrian.hunter@intel.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20220524075436.29144-1-adrian.hunter@intel.com> References: <20220524075436.29144-1-adrian.hunter@intel.com> MIME-Version: 1.0 Organization: Intel Finland Oy, Registered Address: PL 281, 00181 Helsinki, Business Identity Code: 0357606 - 4, Domiciled in Helsinki Content-Transfer-Encoding: quoted-printable Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Type: text/plain; charset="utf-8" Use evlist__add_dummy_on_all_cpus() in record__config_text_poke() in preparation for allowing system-wide events on all CPUs while the user requested events are on only user requested CPUs. Acked-by: Ian Rogers Acked-by: Namhyung Kim Signed-off-by: Adrian Hunter --- tools/perf/builtin-record.c | 21 +++------------------ 1 file changed, 3 insertions(+), 18 deletions(-) diff --git a/tools/perf/builtin-record.c b/tools/perf/builtin-record.c index a5cf6a99d67f..c8a79f3a8dff 100644 --- a/tools/perf/builtin-record.c +++ b/tools/perf/builtin-record.c @@ -869,7 +869,6 @@ static int record__auxtrace_init(struct record *rec __m= aybe_unused) static int record__config_text_poke(struct evlist *evlist) { struct evsel *evsel; - int err; =20 /* Nothing to do if text poke is already configured */ evlist__for_each_entry(evlist, evsel) { @@ -877,27 +876,13 @@ static int record__config_text_poke(struct evlist *ev= list) return 0; } =20 - err =3D parse_events(evlist, "dummy:u", NULL); - if (err) - return err; - - evsel =3D evlist__last(evlist); + evsel =3D evlist__add_dummy_on_all_cpus(evlist); + if (!evsel) + return -ENOMEM; =20 - evsel->core.attr.freq =3D 0; - evsel->core.attr.sample_period =3D 1; evsel->core.attr.text_poke =3D 1; evsel->core.attr.ksymbol =3D 1; - - evsel->core.system_wide =3D true; - evsel->no_aux_samples =3D true; evsel->immediate =3D true; - - /* Text poke must be collected on all CPUs */ - perf_cpu_map__put(evsel->core.own_cpus); - evsel->core.own_cpus =3D perf_cpu_map__new(NULL); - perf_cpu_map__put(evsel->core.cpus); - evsel->core.cpus =3D perf_cpu_map__get(evsel->core.own_cpus); - evsel__set_sample_bit(evsel, TIME); =20 return 0; --=20 2.25.1 From nobody Wed Apr 29 03:23:59 2026 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 66F41C433EF for ; Tue, 24 May 2022 07:56:22 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S235614AbiEXHz4 (ORCPT ); Tue, 24 May 2022 03:55:56 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:60472 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S235523AbiEXHz2 (ORCPT ); Tue, 24 May 2022 03:55:28 -0400 Received: from mga03.intel.com (mga03.intel.com [134.134.136.65]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 84F6D9A991 for ; Tue, 24 May 2022 00:55:20 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1653378920; x=1684914920; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=KNMAtJ9vAz9UQl/ElaKVD54mWn81+SRdQsKEQHlDlas=; b=KXKV043rxLQmKeEfyjmZbJBBIyM4QyxHaf+NSqrAbY18T098x50g3hDy p/qlQMg2uzLWbfSMcWSrOyixqpluwaKtRhoHRPE7I3o4GfGcrWM4Wg9xN nOn9bLIyqWWati18+IlJweMmU8UVD+BmuchRH0NtvHPr1Ccriy0pE16W6 dW+MJ7NqBxnzKfhuUGl+sRucQXMFdR+oR+2VrkoJhwiEM3ywhlnKIXAS/ 41ZxXtj3xD8y5rXEKP4cdbEyL4RrrQI8iRebgfBlHFHHpKJ5bkiSBukhp XXtTm8GwIr+8k5MJ9fuXCcIwXVmMCDAz41DW+PBWoPmp5L/nhYB78Mz2j A==; X-IronPort-AV: E=McAfee;i="6400,9594,10356"; a="273455460" X-IronPort-AV: E=Sophos;i="5.91,248,1647327600"; d="scan'208";a="273455460" Received: from fmsmga001.fm.intel.com ([10.253.24.23]) by orsmga103.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 24 May 2022 00:55:20 -0700 X-IronPort-AV: E=Sophos;i="5.91,248,1647327600"; d="scan'208";a="717072402" Received: from ahunter6-mobl1.ger.corp.intel.com (HELO ahunter-VirtualBox.home\044ger.corp.intel.com) ([10.252.52.210]) by fmsmga001-auth.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 24 May 2022 00:55:18 -0700 From: Adrian Hunter To: Arnaldo Carvalho de Melo Cc: Jiri Olsa , Ian Rogers , Alexey Bayduraev , Namhyung Kim , Leo Yan , linux-kernel@vger.kernel.org Subject: [PATCH V4 07/15] perf intel-pt: Use evlist__add_dummy_on_all_cpus() for switch tracking Date: Tue, 24 May 2022 10:54:28 +0300 Message-Id: <20220524075436.29144-8-adrian.hunter@intel.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20220524075436.29144-1-adrian.hunter@intel.com> References: <20220524075436.29144-1-adrian.hunter@intel.com> MIME-Version: 1.0 Organization: Intel Finland Oy, Registered Address: PL 281, 00181 Helsinki, Business Identity Code: 0357606 - 4, Domiciled in Helsinki Content-Transfer-Encoding: quoted-printable Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Type: text/plain; charset="utf-8" Use evlist__add_dummy_on_all_cpus() for switch tracking in preparation for allowing system-wide events on all CPUs while the user requested events are on only user requested CPUs. Acked-by: Ian Rogers Acked-by: Namhyung Kim Signed-off-by: Adrian Hunter --- tools/perf/arch/x86/util/intel-pt.c | 13 +++---------- 1 file changed, 3 insertions(+), 10 deletions(-) diff --git a/tools/perf/arch/x86/util/intel-pt.c b/tools/perf/arch/x86/util= /intel-pt.c index 2eaac4638aab..0ee93894a0da 100644 --- a/tools/perf/arch/x86/util/intel-pt.c +++ b/tools/perf/arch/x86/util/intel-pt.c @@ -811,18 +811,11 @@ static int intel_pt_recording_options(struct auxtrace= _record *itr, if (!cpu_wide && perf_can_record_cpu_wide()) { struct evsel *switch_evsel; =20 - err =3D parse_events(evlist, "dummy:u", NULL); - if (err) - return err; + switch_evsel =3D evlist__add_dummy_on_all_cpus(evlist); + if (!switch_evsel) + return -ENOMEM; =20 - switch_evsel =3D evlist__last(evlist); - - switch_evsel->core.attr.freq =3D 0; - switch_evsel->core.attr.sample_period =3D 1; switch_evsel->core.attr.context_switch =3D 1; - - switch_evsel->core.system_wide =3D true; - switch_evsel->no_aux_samples =3D true; switch_evsel->immediate =3D true; =20 evsel__set_sample_bit(switch_evsel, TID); --=20 2.25.1 From nobody Wed Apr 29 03:23:59 2026 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 8F179C433FE for ; Tue, 24 May 2022 07:56:23 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S235679AbiEXH4G (ORCPT ); Tue, 24 May 2022 03:56:06 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:60524 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S235532AbiEXHz3 (ORCPT ); Tue, 24 May 2022 03:55:29 -0400 Received: from mga03.intel.com (mga03.intel.com [134.134.136.65]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id D44139AE40 for ; Tue, 24 May 2022 00:55:22 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1653378922; x=1684914922; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=WkixHFEAcC/ws5HZg3LcXnjXZ0DVFhKTdPNaiNysLrA=; b=jENOSN0iBagYCMJUQClHZYClbKN8VmX5mjavjVwaktG/zy8HAOHYBeh9 UIdcprUybuLcepM87wOG0WW6RO/mIpIw2MBDOs6LIqiOYD2+Zac0BpEHP c60Q03FG1au10xQGRVjyoGhF5q8i6nGDzSy1s0vMNqTHxKgfMPPdOg4Ed k0bOxbcTJPj7rkMzRfe8qDgQwuii8AUpUhiMTMrRdCQn9v+g8Ke+6VAXz To2m2dF9iWpUtDXqQqtJC3x5aq5e+3Z1ADXuPsEiG154WQUgmRXZRGPhW KCCZm7dAAvfkaUt3jcR0qqhIZtPhI+Ft6tKD85PKQWGk4HOUMteoTYPqo Q==; X-IronPort-AV: E=McAfee;i="6400,9594,10356"; a="273455476" X-IronPort-AV: E=Sophos;i="5.91,248,1647327600"; d="scan'208";a="273455476" Received: from fmsmga001.fm.intel.com ([10.253.24.23]) by orsmga103.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 24 May 2022 00:55:22 -0700 X-IronPort-AV: E=Sophos;i="5.91,248,1647327600"; d="scan'208";a="717072412" Received: from ahunter6-mobl1.ger.corp.intel.com (HELO ahunter-VirtualBox.home\044ger.corp.intel.com) ([10.252.52.210]) by fmsmga001-auth.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 24 May 2022 00:55:20 -0700 From: Adrian Hunter To: Arnaldo Carvalho de Melo Cc: Jiri Olsa , Ian Rogers , Alexey Bayduraev , Namhyung Kim , Leo Yan , linux-kernel@vger.kernel.org Subject: [PATCH V4 08/15] perf intel-pt: Track sideband system-wide when needed Date: Tue, 24 May 2022 10:54:29 +0300 Message-Id: <20220524075436.29144-9-adrian.hunter@intel.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20220524075436.29144-1-adrian.hunter@intel.com> References: <20220524075436.29144-1-adrian.hunter@intel.com> MIME-Version: 1.0 Organization: Intel Finland Oy, Registered Address: PL 281, 00181 Helsinki, Business Identity Code: 0357606 - 4, Domiciled in Helsinki Content-Transfer-Encoding: quoted-printable Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Type: text/plain; charset="utf-8" User space tasks can migrate between CPUs, so when tracing selected CPUs, sideband for all CPUs is still needed. This is in preparation for allowing system-wide events on all CPUs while the user requested events are on only user requested CPUs. Acked-by: Ian Rogers Acked-by: Namhyung Kim Signed-off-by: Adrian Hunter --- tools/perf/arch/x86/util/intel-pt.c | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) diff --git a/tools/perf/arch/x86/util/intel-pt.c b/tools/perf/arch/x86/util= /intel-pt.c index 0ee93894a0da..06c2cdfd8f2f 100644 --- a/tools/perf/arch/x86/util/intel-pt.c +++ b/tools/perf/arch/x86/util/intel-pt.c @@ -864,20 +864,22 @@ static int intel_pt_recording_options(struct auxtrace= _record *itr, =20 /* Add dummy event to keep tracking */ if (opts->full_auxtrace) { + bool need_system_wide_tracking; struct evsel *tracking_evsel; =20 - err =3D parse_events(evlist, "dummy:u", NULL); - if (err) - return err; + /* + * User space tasks can migrate between CPUs, so when tracing + * selected CPUs, sideband for all CPUs is still needed. + */ + need_system_wide_tracking =3D evlist->core.has_user_cpus && + !intel_pt_evsel->core.attr.exclude_user; =20 - tracking_evsel =3D evlist__last(evlist); + tracking_evsel =3D evlist__add_aux_dummy(evlist, need_system_wide_tracki= ng); + if (!tracking_evsel) + return -ENOMEM; =20 evlist__set_tracking_event(evlist, tracking_evsel); =20 - tracking_evsel->core.attr.freq =3D 0; - tracking_evsel->core.attr.sample_period =3D 1; - - tracking_evsel->no_aux_samples =3D true; if (need_immediate) tracking_evsel->immediate =3D true; =20 --=20 2.25.1 From nobody Wed Apr 29 03:23:59 2026 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id A58A5C4332F for ; Tue, 24 May 2022 07:56:23 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S235787AbiEXH4N (ORCPT ); Tue, 24 May 2022 03:56:13 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:60528 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S235535AbiEXHz3 (ORCPT ); Tue, 24 May 2022 03:55:29 -0400 Received: from mga03.intel.com (mga03.intel.com [134.134.136.65]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 355579AE4A for ; Tue, 24 May 2022 00:55:25 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1653378925; x=1684914925; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=amqXpsC6nONorK7DFhJU6kqIYiAx/ku+iIY9HiEwERw=; b=c+a2uKrQU5jM2ag4GjY2/9VWcupd7LE895okFIpw4T/HYetX1wpbI2cI aaHdpvvxPnIAH0aMDE6YEsDWKuETKn6AU1t6ibAgeNfUMVV0a5o/JhDoy jmISvK5ap30VPXKiLO4oSg/Zc1Zbo91tLhkNc/B1Di/Whb8Mc8jsVpGKD O3MVKV/ROJ1XYha5q+5Lyz1gYvM5RGd9ePxmWwom6meigxZlyK5w5Jhz+ wVzelbnoG1KcnRlv9+4mzbFMIAyEbxTrT8zCN9yPD0gT7fufYKJjVds5J Q3hYWsTljEmzcgxE7NY1sj4wc0ZyaUXa2NVM/P81Vi9I0UePyASJX5UqP A==; X-IronPort-AV: E=McAfee;i="6400,9594,10356"; a="273455481" X-IronPort-AV: E=Sophos;i="5.91,248,1647327600"; d="scan'208";a="273455481" Received: from fmsmga001.fm.intel.com ([10.253.24.23]) by orsmga103.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 24 May 2022 00:55:25 -0700 X-IronPort-AV: E=Sophos;i="5.91,248,1647327600"; d="scan'208";a="717072416" Received: from ahunter6-mobl1.ger.corp.intel.com (HELO ahunter-VirtualBox.home\044ger.corp.intel.com) ([10.252.52.210]) by fmsmga001-auth.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 24 May 2022 00:55:22 -0700 From: Adrian Hunter To: Arnaldo Carvalho de Melo Cc: Jiri Olsa , Ian Rogers , Alexey Bayduraev , Namhyung Kim , Leo Yan , linux-kernel@vger.kernel.org Subject: [PATCH V4 09/15] perf tools: Allow all_cpus to be a superset of user_requested_cpus Date: Tue, 24 May 2022 10:54:30 +0300 Message-Id: <20220524075436.29144-10-adrian.hunter@intel.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20220524075436.29144-1-adrian.hunter@intel.com> References: <20220524075436.29144-1-adrian.hunter@intel.com> MIME-Version: 1.0 Organization: Intel Finland Oy, Registered Address: PL 281, 00181 Helsinki, Business Identity Code: 0357606 - 4, Domiciled in Helsinki Content-Transfer-Encoding: quoted-printable Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Type: text/plain; charset="utf-8" To support collection of system-wide events with user requested CPUs, all_cpus must be a superset of user_requested_cpus. In order to support all_cpus to be a superset of user_requested_cpus, all_cpus must be used instead of user_requested_cpus when dealing with CPUs of all events instead of CPUs of requested events. Acked-by: Ian Rogers Acked-by: Namhyung Kim Signed-off-by: Adrian Hunter --- tools/lib/perf/evlist.c | 12 ++++++------ tools/perf/builtin-record.c | 18 ++++++++++++------ tools/perf/util/auxtrace.c | 2 +- 3 files changed, 19 insertions(+), 13 deletions(-) diff --git a/tools/lib/perf/evlist.c b/tools/lib/perf/evlist.c index ed66f2e38464..ec0e4b5da874 100644 --- a/tools/lib/perf/evlist.c +++ b/tools/lib/perf/evlist.c @@ -298,7 +298,7 @@ int perf_evlist__id_add_fd(struct perf_evlist *evlist, =20 int perf_evlist__alloc_pollfd(struct perf_evlist *evlist) { - int nr_cpus =3D perf_cpu_map__nr(evlist->user_requested_cpus); + int nr_cpus =3D perf_cpu_map__nr(evlist->all_cpus); int nr_threads =3D perf_thread_map__nr(evlist->threads); int nfds =3D 0; struct perf_evsel *evsel; @@ -430,7 +430,7 @@ mmap_per_evsel(struct perf_evlist *evlist, struct perf_= evlist_mmap_ops *ops, int idx, struct perf_mmap_param *mp, int cpu_idx, int thread, int *_output, int *_output_overwrite) { - struct perf_cpu evlist_cpu =3D perf_cpu_map__cpu(evlist->user_requested_c= pus, cpu_idx); + struct perf_cpu evlist_cpu =3D perf_cpu_map__cpu(evlist->all_cpus, cpu_id= x); struct perf_evsel *evsel; int revent; =20 @@ -540,7 +540,7 @@ mmap_per_cpu(struct perf_evlist *evlist, struct perf_ev= list_mmap_ops *ops, struct perf_mmap_param *mp) { int nr_threads =3D perf_thread_map__nr(evlist->threads); - int nr_cpus =3D perf_cpu_map__nr(evlist->user_requested_cpus); + int nr_cpus =3D perf_cpu_map__nr(evlist->all_cpus); int cpu, thread; =20 for (cpu =3D 0; cpu < nr_cpus; cpu++) { @@ -565,8 +565,8 @@ static int perf_evlist__nr_mmaps(struct perf_evlist *ev= list) { int nr_mmaps; =20 - nr_mmaps =3D perf_cpu_map__nr(evlist->user_requested_cpus); - if (perf_cpu_map__empty(evlist->user_requested_cpus)) + nr_mmaps =3D perf_cpu_map__nr(evlist->all_cpus); + if (perf_cpu_map__empty(evlist->all_cpus)) nr_mmaps =3D perf_thread_map__nr(evlist->threads); =20 return nr_mmaps; @@ -577,7 +577,7 @@ int perf_evlist__mmap_ops(struct perf_evlist *evlist, struct perf_mmap_param *mp) { struct perf_evsel *evsel; - const struct perf_cpu_map *cpus =3D evlist->user_requested_cpus; + const struct perf_cpu_map *cpus =3D evlist->all_cpus; =20 if (!ops || !ops->get || !ops->mmap) return -EINVAL; diff --git a/tools/perf/builtin-record.c b/tools/perf/builtin-record.c index c8a79f3a8dff..cf9a7ce429df 100644 --- a/tools/perf/builtin-record.c +++ b/tools/perf/builtin-record.c @@ -967,14 +967,20 @@ static void record__thread_data_close_pipes(struct re= cord_thread *thread_data) } } =20 +static bool evlist__per_thread(struct evlist *evlist) +{ + return cpu_map__is_dummy(evlist->core.user_requested_cpus); +} + static int record__thread_data_init_maps(struct record_thread *thread_data= , struct evlist *evlist) { int m, tm, nr_mmaps =3D evlist->core.nr_mmaps; struct mmap *mmap =3D evlist->mmap; struct mmap *overwrite_mmap =3D evlist->overwrite_mmap; - struct perf_cpu_map *cpus =3D evlist->core.user_requested_cpus; + struct perf_cpu_map *cpus =3D evlist->core.all_cpus; + bool per_thread =3D evlist__per_thread(evlist); =20 - if (cpu_map__is_dummy(cpus)) + if (per_thread) thread_data->nr_mmaps =3D nr_mmaps; else thread_data->nr_mmaps =3D bitmap_weight(thread_data->mask->maps.bits, @@ -995,7 +1001,7 @@ static int record__thread_data_init_maps(struct record= _thread *thread_data, stru thread_data->nr_mmaps, thread_data->maps, thread_data->overwrite_maps); =20 for (m =3D 0, tm =3D 0; m < nr_mmaps && tm < thread_data->nr_mmaps; m++) { - if (cpu_map__is_dummy(cpus) || + if (per_thread || test_bit(perf_cpu_map__cpu(cpus, m).cpu, thread_data->mask->maps.bit= s)) { if (thread_data->maps) { thread_data->maps[tm] =3D &mmap[m]; @@ -1870,7 +1876,7 @@ static int record__synthesize(struct record *rec, boo= l tail) return err; } =20 - err =3D perf_event__synthesize_cpu_map(&rec->tool, rec->evlist->core.user= _requested_cpus, + err =3D perf_event__synthesize_cpu_map(&rec->tool, rec->evlist->core.all_= cpus, process_synthesized_event, NULL); if (err < 0) { pr_err("Couldn't synthesize cpu map.\n"); @@ -3668,12 +3674,12 @@ static int record__init_thread_default_masks(struct= record *rec, struct perf_cpu static int record__init_thread_masks(struct record *rec) { int ret =3D 0; - struct perf_cpu_map *cpus =3D rec->evlist->core.user_requested_cpus; + struct perf_cpu_map *cpus =3D rec->evlist->core.all_cpus; =20 if (!record__threads_enabled(rec)) return record__init_thread_default_masks(rec, cpus); =20 - if (cpu_map__is_dummy(cpus)) { + if (evlist__per_thread(rec->evlist)) { pr_err("--per-thread option is mutually exclusive to parallel streaming = mode.\n"); return -EINVAL; } diff --git a/tools/perf/util/auxtrace.c b/tools/perf/util/auxtrace.c index ac4e4660932d..511dd3caa1bc 100644 --- a/tools/perf/util/auxtrace.c +++ b/tools/perf/util/auxtrace.c @@ -181,7 +181,7 @@ void auxtrace_mmap_params__set_idx(struct auxtrace_mmap= _params *mp, mp->idx =3D idx; =20 if (per_cpu) { - mp->cpu =3D perf_cpu_map__cpu(evlist->core.user_requested_cpus, idx); + mp->cpu =3D perf_cpu_map__cpu(evlist->core.all_cpus, idx); if (evlist->core.threads) mp->tid =3D perf_thread_map__pid(evlist->core.threads, 0); else --=20 2.25.1 From nobody Wed Apr 29 03:23:59 2026 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id B45B5C433F5 for ; Tue, 24 May 2022 07:56:23 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S235832AbiEXH4Q (ORCPT ); Tue, 24 May 2022 03:56:16 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:60534 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S235541AbiEXHz3 (ORCPT ); Tue, 24 May 2022 03:55:29 -0400 Received: from mga03.intel.com (mga03.intel.com [134.134.136.65]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 7D0CC9AE6B for ; Tue, 24 May 2022 00:55:27 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1653378927; x=1684914927; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=yrN8utAY6wLKGj0oln5nVnbB5mCMMTvx7m77B6kmT9w=; b=nU29eIu6kazOYrhMIBGaZ9mguhPWHeaRUsEOZhXrdwiTApddGNrdftT0 +X8drhYdtsdazKQRBxOdzk/tL/HUuW+pcsRTns6iY+nFq+YR12lxlFhTT wosKRE3r2ged4FNLKNSx/k6BDSNh6bGesFne54gN5KZiFrxzukQguEbiQ nRzoBMceLFWFWi5v2Vtj0VeN5goXz8OyyDe7lhf+L6f9k3DrsOSQmG3x2 1ArmNG3faPsMehllnPgPFCDIrwgGMS0d/xT1WmckOutKDtc0uE9/PtjOR VHTVwVQcXLqKEslt+nkZfHdKwd0ogjKCksPB5YpmZF+B08J3EcIRm16iU A==; X-IronPort-AV: E=McAfee;i="6400,9594,10356"; a="273455489" X-IronPort-AV: E=Sophos;i="5.91,248,1647327600"; d="scan'208";a="273455489" Received: from fmsmga001.fm.intel.com ([10.253.24.23]) by orsmga103.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 24 May 2022 00:55:27 -0700 X-IronPort-AV: E=Sophos;i="5.91,248,1647327600"; d="scan'208";a="717072422" Received: from ahunter6-mobl1.ger.corp.intel.com (HELO ahunter-VirtualBox.home\044ger.corp.intel.com) ([10.252.52.210]) by fmsmga001-auth.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 24 May 2022 00:55:25 -0700 From: Adrian Hunter To: Arnaldo Carvalho de Melo Cc: Jiri Olsa , Ian Rogers , Alexey Bayduraev , Namhyung Kim , Leo Yan , linux-kernel@vger.kernel.org Subject: [PATCH V4 10/15] libperf evlist: Allow mixing per-thread and per-cpu mmaps Date: Tue, 24 May 2022 10:54:31 +0300 Message-Id: <20220524075436.29144-11-adrian.hunter@intel.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20220524075436.29144-1-adrian.hunter@intel.com> References: <20220524075436.29144-1-adrian.hunter@intel.com> MIME-Version: 1.0 Organization: Intel Finland Oy, Registered Address: PL 281, 00181 Helsinki, Business Identity Code: 0357606 - 4, Domiciled in Helsinki Content-Transfer-Encoding: quoted-printable Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Type: text/plain; charset="utf-8" mmap_per_evsel() will skip events that do not match the CPU, so all CPUs can be iterated in any case. Acked-by: Ian Rogers Acked-by: Namhyung Kim Signed-off-by: Adrian Hunter --- tools/lib/perf/evlist.c | 36 +++++++----------------------------- 1 file changed, 7 insertions(+), 29 deletions(-) diff --git a/tools/lib/perf/evlist.c b/tools/lib/perf/evlist.c index ec0e4b5da874..eae1f6179dad 100644 --- a/tools/lib/perf/evlist.c +++ b/tools/lib/perf/evlist.c @@ -512,29 +512,6 @@ mmap_per_evsel(struct perf_evlist *evlist, struct perf= _evlist_mmap_ops *ops, return 0; } =20 -static int -mmap_per_thread(struct perf_evlist *evlist, struct perf_evlist_mmap_ops *o= ps, - struct perf_mmap_param *mp) -{ - int thread; - int nr_threads =3D perf_thread_map__nr(evlist->threads); - - for (thread =3D 0; thread < nr_threads; thread++) { - int output =3D -1; - int output_overwrite =3D -1; - - if (mmap_per_evsel(evlist, ops, thread, mp, 0, thread, - &output, &output_overwrite)) - goto out_unmap; - } - - return 0; - -out_unmap: - perf_evlist__munmap(evlist); - return -1; -} - static int mmap_per_cpu(struct perf_evlist *evlist, struct perf_evlist_mmap_ops *ops, struct perf_mmap_param *mp) @@ -565,9 +542,14 @@ static int perf_evlist__nr_mmaps(struct perf_evlist *e= vlist) { int nr_mmaps; =20 + /* One for each CPU */ nr_mmaps =3D perf_cpu_map__nr(evlist->all_cpus); - if (perf_cpu_map__empty(evlist->all_cpus)) - nr_mmaps =3D perf_thread_map__nr(evlist->threads); + if (perf_cpu_map__empty(evlist->all_cpus)) { + /* Plus one for each thread */ + nr_mmaps +=3D perf_thread_map__nr(evlist->threads); + /* Minus the per-thread CPU (-1) */ + nr_mmaps -=3D 1; + } =20 return nr_mmaps; } @@ -577,7 +559,6 @@ int perf_evlist__mmap_ops(struct perf_evlist *evlist, struct perf_mmap_param *mp) { struct perf_evsel *evsel; - const struct perf_cpu_map *cpus =3D evlist->all_cpus; =20 if (!ops || !ops->get || !ops->mmap) return -EINVAL; @@ -596,9 +577,6 @@ int perf_evlist__mmap_ops(struct perf_evlist *evlist, if (evlist->pollfd.entries =3D=3D NULL && perf_evlist__alloc_pollfd(evlis= t) < 0) return -ENOMEM; =20 - if (perf_cpu_map__empty(cpus)) - return mmap_per_thread(evlist, ops, mp); - return mmap_per_cpu(evlist, ops, mp); } =20 --=20 2.25.1 From nobody Wed Apr 29 03:23:59 2026 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 04E08C433F5 for ; Tue, 24 May 2022 07:57:56 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S235523AbiEXH4Z (ORCPT ); Tue, 24 May 2022 03:56:25 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:60578 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S235484AbiEXHza (ORCPT ); Tue, 24 May 2022 03:55:30 -0400 Received: from mga03.intel.com (mga03.intel.com [134.134.136.65]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id E1BB9994FD for ; Tue, 24 May 2022 00:55:29 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1653378929; x=1684914929; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=BDCTe7xF9c6v8rIzCKhsjaAfG9qHgLaBeVd5M3iUjKo=; b=glGJFIPDAFePC/a3CGJieSMBFwM402Uazzim2dgf36oZLZIjoZGCPlzK p0qwHs4YXWaBEmiSJNegIFRWyPyLYiQuRkkXYRE1Yi/iCDKmEjrRYn7Pt 1msmBdOeY0TCRilg0YzszGsfhad15lb3L/fIRUvnsv/gm7s019YX0WpVp 0EiKGpQIYwgj0FZ89mYZgJqGoXaFKVld9DlF6EPjy+rU05siFW2L0oW3k WyOZJrU6QFSNiZOlNfJ7b3LcRaol/CLlOKWxtDHOJyWhsvERA93VRAtgf F23awwGcaElbIvTzP7DoEY23yy3stqq6VmNkEmftB1vjto64pfBdnVUMS Q==; X-IronPort-AV: E=McAfee;i="6400,9594,10356"; a="273455499" X-IronPort-AV: E=Sophos;i="5.91,248,1647327600"; d="scan'208";a="273455499" Received: from fmsmga001.fm.intel.com ([10.253.24.23]) by orsmga103.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 24 May 2022 00:55:29 -0700 X-IronPort-AV: E=Sophos;i="5.91,248,1647327600"; d="scan'208";a="717072426" Received: from ahunter6-mobl1.ger.corp.intel.com (HELO ahunter-VirtualBox.home\044ger.corp.intel.com) ([10.252.52.210]) by fmsmga001-auth.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 24 May 2022 00:55:27 -0700 From: Adrian Hunter To: Arnaldo Carvalho de Melo Cc: Jiri Olsa , Ian Rogers , Alexey Bayduraev , Namhyung Kim , Leo Yan , linux-kernel@vger.kernel.org Subject: [PATCH V4 11/15] libperf evlist: Check nr_mmaps is correct Date: Tue, 24 May 2022 10:54:32 +0300 Message-Id: <20220524075436.29144-12-adrian.hunter@intel.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20220524075436.29144-1-adrian.hunter@intel.com> References: <20220524075436.29144-1-adrian.hunter@intel.com> MIME-Version: 1.0 Organization: Intel Finland Oy, Registered Address: PL 281, 00181 Helsinki, Business Identity Code: 0357606 - 4, Domiciled in Helsinki Content-Transfer-Encoding: quoted-printable Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Type: text/plain; charset="utf-8" Print an error message if the predetermined number of mmaps is incorrect. Acked-by: Ian Rogers Acked-by: Namhyung Kim Signed-off-by: Adrian Hunter --- tools/lib/perf/evlist.c | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/tools/lib/perf/evlist.c b/tools/lib/perf/evlist.c index eae1f6179dad..f51fdb899d19 100644 --- a/tools/lib/perf/evlist.c +++ b/tools/lib/perf/evlist.c @@ -23,6 +23,7 @@ #include #include #include +#include "internal.h" =20 void perf_evlist__init(struct perf_evlist *evlist) { @@ -428,7 +429,7 @@ static void perf_evlist__set_mmap_first(struct perf_evl= ist *evlist, struct perf_ static int mmap_per_evsel(struct perf_evlist *evlist, struct perf_evlist_mmap_ops *op= s, int idx, struct perf_mmap_param *mp, int cpu_idx, - int thread, int *_output, int *_output_overwrite) + int thread, int *_output, int *_output_overwrite, int *nr_mmaps) { struct perf_cpu evlist_cpu =3D perf_cpu_map__cpu(evlist->all_cpus, cpu_id= x); struct perf_evsel *evsel; @@ -484,6 +485,8 @@ mmap_per_evsel(struct perf_evlist *evlist, struct perf_= evlist_mmap_ops *ops, if (ops->mmap(map, mp, *output, evlist_cpu) < 0) return -1; =20 + *nr_mmaps +=3D 1; + if (!idx) perf_evlist__set_mmap_first(evlist, map, overwrite); } else { @@ -518,6 +521,7 @@ mmap_per_cpu(struct perf_evlist *evlist, struct perf_ev= list_mmap_ops *ops, { int nr_threads =3D perf_thread_map__nr(evlist->threads); int nr_cpus =3D perf_cpu_map__nr(evlist->all_cpus); + int nr_mmaps =3D 0; int cpu, thread; =20 for (cpu =3D 0; cpu < nr_cpus; cpu++) { @@ -526,11 +530,14 @@ mmap_per_cpu(struct perf_evlist *evlist, struct perf_= evlist_mmap_ops *ops, =20 for (thread =3D 0; thread < nr_threads; thread++) { if (mmap_per_evsel(evlist, ops, cpu, mp, cpu, - thread, &output, &output_overwrite)) + thread, &output, &output_overwrite, &nr_mmaps)) goto out_unmap; } } =20 + if (nr_mmaps !=3D evlist->nr_mmaps) + pr_err("Miscounted nr_mmaps %d vs %d\n", nr_mmaps, evlist->nr_mmaps); + return 0; =20 out_unmap: --=20 2.25.1 From nobody Wed Apr 29 03:23:59 2026 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id C94CBC43219 for ; Tue, 24 May 2022 07:56:23 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S235860AbiEXH4S (ORCPT ); Tue, 24 May 2022 03:56:18 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:60542 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S235508AbiEXHzd (ORCPT ); Tue, 24 May 2022 03:55:33 -0400 Received: from mga03.intel.com (mga03.intel.com [134.134.136.65]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 5B7319969C for ; Tue, 24 May 2022 00:55:32 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1653378932; x=1684914932; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=TNeNmd2esqkfdaVy0Fn8Wkbz0YSayavr+PmJXOvHByw=; b=GJdgMNoa+A/iudYK1BkXbZkhinKi/wyydXCuA9B5ZfYC0I1vvi8+CTmO pw1ES6a1evL3uqpAG+M3IiPmUbkKmJte6cFVf7a3Wb2up+//pblB2p6FM GGQ2JprKkwuBLRRwnQ8+J+RByttrNwW8t6tOSnfEsu30kiC5ooklFTIOY vjaMbdjV6jB7qRWKHyP0CcU4C8wONg6yJ4YQZ9R0/zWH0Q7zTnR0rNrvb w7ZkHEE4TISra/2n8K00I6jvP+BCB/o3bPKu2hvEMGzUjZm2f/5Mh/jLu Be3qwipDdadqOqdbliJbk4WnCs9MAUl0uCzLyXgRbRfbJV2MfPmkwIbga g==; X-IronPort-AV: E=McAfee;i="6400,9594,10356"; a="273455507" X-IronPort-AV: E=Sophos;i="5.91,248,1647327600"; d="scan'208";a="273455507" Received: from fmsmga001.fm.intel.com ([10.253.24.23]) by orsmga103.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 24 May 2022 00:55:32 -0700 X-IronPort-AV: E=Sophos;i="5.91,248,1647327600"; d="scan'208";a="717072431" Received: from ahunter6-mobl1.ger.corp.intel.com (HELO ahunter-VirtualBox.home\044ger.corp.intel.com) ([10.252.52.210]) by fmsmga001-auth.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 24 May 2022 00:55:29 -0700 From: Adrian Hunter To: Arnaldo Carvalho de Melo Cc: Jiri Olsa , Ian Rogers , Alexey Bayduraev , Namhyung Kim , Leo Yan , linux-kernel@vger.kernel.org Subject: [PATCH V4 12/15] perf stat: Add requires_cpu flag for uncore Date: Tue, 24 May 2022 10:54:33 +0300 Message-Id: <20220524075436.29144-13-adrian.hunter@intel.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20220524075436.29144-1-adrian.hunter@intel.com> References: <20220524075436.29144-1-adrian.hunter@intel.com> MIME-Version: 1.0 Organization: Intel Finland Oy, Registered Address: PL 281, 00181 Helsinki, Business Identity Code: 0357606 - 4, Domiciled in Helsinki Content-Transfer-Encoding: quoted-printable Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Type: text/plain; charset="utf-8" Uncore events require a CPU i.e. it cannot be -1. The evsel system_wide flag is intended for events that should be on every CPU, which does not make sense for uncore events because uncore events do not map one-to-one with CPUs. These 2 requirements are not exactly the same, so introduce a new flag 'requires_cpu' for the uncore case. Acked-by: Ian Rogers Acked-by: Namhyung Kim Signed-off-by: Adrian Hunter --- tools/lib/perf/evlist.c | 4 +++- tools/lib/perf/include/internal/evsel.h | 1 + tools/perf/builtin-stat.c | 5 +---- tools/perf/util/evsel.c | 1 + tools/perf/util/parse-events.c | 2 +- 5 files changed, 7 insertions(+), 6 deletions(-) diff --git a/tools/lib/perf/evlist.c b/tools/lib/perf/evlist.c index f51fdb899d19..1c801f8da44f 100644 --- a/tools/lib/perf/evlist.c +++ b/tools/lib/perf/evlist.c @@ -43,7 +43,9 @@ static void __perf_evlist__propagate_maps(struct perf_evl= ist *evlist, if (!evsel->own_cpus || evlist->has_user_cpus) { perf_cpu_map__put(evsel->cpus); evsel->cpus =3D perf_cpu_map__get(evlist->user_requested_cpus); - } else if (!evsel->system_wide && perf_cpu_map__empty(evlist->user_reques= ted_cpus)) { + } else if (!evsel->system_wide && + !evsel->requires_cpu && + perf_cpu_map__empty(evlist->user_requested_cpus)) { perf_cpu_map__put(evsel->cpus); evsel->cpus =3D perf_cpu_map__get(evlist->user_requested_cpus); } else if (evsel->cpus !=3D evsel->own_cpus) { diff --git a/tools/lib/perf/include/internal/evsel.h b/tools/lib/perf/inclu= de/internal/evsel.h index cfc9ebd7968e..77fbb8b97e5c 100644 --- a/tools/lib/perf/include/internal/evsel.h +++ b/tools/lib/perf/include/internal/evsel.h @@ -50,6 +50,7 @@ struct perf_evsel { /* parse modifier helper */ int nr_members; bool system_wide; + bool requires_cpu; int idx; }; =20 diff --git a/tools/perf/builtin-stat.c b/tools/perf/builtin-stat.c index 7e6cc8bdf061..4ce87a8eb7d7 100644 --- a/tools/perf/builtin-stat.c +++ b/tools/perf/builtin-stat.c @@ -382,9 +382,6 @@ static int read_counter_cpu(struct evsel *counter, stru= ct timespec *rs, int cpu_ if (!counter->supported) return -ENOENT; =20 - if (counter->core.system_wide) - nthreads =3D 1; - for (thread =3D 0; thread < nthreads; thread++) { struct perf_counts_values *count; =20 @@ -2261,7 +2258,7 @@ static void setup_system_wide(int forks) struct evsel *counter; =20 evlist__for_each_entry(evsel_list, counter) { - if (!counter->core.system_wide && + if (!counter->core.requires_cpu && strcmp(counter->name, "duration_time")) { return; } diff --git a/tools/perf/util/evsel.c b/tools/perf/util/evsel.c index ef169ad15236..050b1c69a738 100644 --- a/tools/perf/util/evsel.c +++ b/tools/perf/util/evsel.c @@ -409,6 +409,7 @@ struct evsel *evsel__clone(struct evsel *orig) evsel->core.threads =3D perf_thread_map__get(orig->core.threads); evsel->core.nr_members =3D orig->core.nr_members; evsel->core.system_wide =3D orig->core.system_wide; + evsel->core.requires_cpu =3D orig->core.requires_cpu; =20 if (orig->name) { evsel->name =3D strdup(orig->name); diff --git a/tools/perf/util/parse-events.c b/tools/perf/util/parse-events.c index 30a9d915853d..7ed235740431 100644 --- a/tools/perf/util/parse-events.c +++ b/tools/perf/util/parse-events.c @@ -365,7 +365,7 @@ __add_event(struct list_head *list, int *idx, (*idx)++; evsel->core.cpus =3D cpus; evsel->core.own_cpus =3D perf_cpu_map__get(cpus); - evsel->core.system_wide =3D pmu ? pmu->is_uncore : false; + evsel->core.requires_cpu =3D pmu ? pmu->is_uncore : false; evsel->auto_merge_stats =3D auto_merge_stats; =20 if (name) --=20 2.25.1 From nobody Wed Apr 29 03:23:59 2026 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 1A2FCC433EF for ; Tue, 24 May 2022 07:58:12 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S234251AbiEXH6I (ORCPT ); Tue, 24 May 2022 03:58:08 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:60550 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S235487AbiEXHzg (ORCPT ); Tue, 24 May 2022 03:55:36 -0400 Received: from mga03.intel.com (mga03.intel.com [134.134.136.65]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id B76459AE41 for ; Tue, 24 May 2022 00:55:34 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1653378934; x=1684914934; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=A5/CoVFBWzQfMEpYvR3LxrjJSi6xfNNPtwpbje93Wbc=; b=gHBgM2px/51Dziio9JnltRxZYmydaXvjzUVWH6PqmL2wKdRhB2hdZ/oo CW4tYuKTAQSRqERL3BnvF51QruZQAl2H6ILyDDOt9ulrTG4H2F87Dusxj 6Eax1CtijqgbUKDETfRvvs/8vd/sGagzgRXiEucv3cICH8zDRlm6HGthD 7KnRO16aec0XIXK+hcsBvIp+3leFUiZK+Tag3GJTQ478VUL/MrbhkWxHz DP0uhzE++e2BV9AcyiaP3w05e/ysQI3P7rI4VLeTzWHTcOFMAEnE8LJH6 16KV+N8DY7ZrDUmTmc1nnhWQyU7r37JBUsYyskXBvRve/qtF0XzL3Rq0R Q==; X-IronPort-AV: E=McAfee;i="6400,9594,10356"; a="273455511" X-IronPort-AV: E=Sophos;i="5.91,248,1647327600"; d="scan'208";a="273455511" Received: from fmsmga001.fm.intel.com ([10.253.24.23]) by orsmga103.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 24 May 2022 00:55:34 -0700 X-IronPort-AV: E=Sophos;i="5.91,248,1647327600"; d="scan'208";a="717072436" Received: from ahunter6-mobl1.ger.corp.intel.com (HELO ahunter-VirtualBox.home\044ger.corp.intel.com) ([10.252.52.210]) by fmsmga001-auth.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 24 May 2022 00:55:32 -0700 From: Adrian Hunter To: Arnaldo Carvalho de Melo Cc: Jiri Olsa , Ian Rogers , Alexey Bayduraev , Namhyung Kim , Leo Yan , linux-kernel@vger.kernel.org Subject: [PATCH V4 13/15] libperf evsel: Add comments for booleans Date: Tue, 24 May 2022 10:54:34 +0300 Message-Id: <20220524075436.29144-14-adrian.hunter@intel.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20220524075436.29144-1-adrian.hunter@intel.com> References: <20220524075436.29144-1-adrian.hunter@intel.com> MIME-Version: 1.0 Organization: Intel Finland Oy, Registered Address: PL 281, 00181 Helsinki, Business Identity Code: 0357606 - 4, Domiciled in Helsinki Content-Transfer-Encoding: quoted-printable Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Type: text/plain; charset="utf-8" Add comments for 'system_wide' and 'requires_cpu' booleans Acked-by: Namhyung Kim Signed-off-by: Adrian Hunter Acked-by: Ian Rogers --- tools/lib/perf/include/internal/evsel.h | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/tools/lib/perf/include/internal/evsel.h b/tools/lib/perf/inclu= de/internal/evsel.h index 77fbb8b97e5c..2a912a1f1989 100644 --- a/tools/lib/perf/include/internal/evsel.h +++ b/tools/lib/perf/include/internal/evsel.h @@ -49,7 +49,17 @@ struct perf_evsel { =20 /* parse modifier helper */ int nr_members; + /* + * system_wide is for events that need to be on every CPU, irrespective + * of user requested CPUs or threads. Map propagation will set cpus to + * this event's own_cpus, whereby they will contribute to evlist + * all_cpus. + */ bool system_wide; + /* + * Some events, for example uncore events, require a CPU. + * i.e. it cannot be the 'any CPU' value of -1. + */ bool requires_cpu; int idx; }; --=20 2.25.1 From nobody Wed Apr 29 03:23:59 2026 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 03330C433EF for ; Tue, 24 May 2022 07:58:05 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S234026AbiEXH6C (ORCPT ); Tue, 24 May 2022 03:58:02 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:60542 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S235584AbiEXHzh (ORCPT ); Tue, 24 May 2022 03:55:37 -0400 Received: from mga03.intel.com (mga03.intel.com [134.134.136.65]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id E30B09AE69 for ; Tue, 24 May 2022 00:55:36 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1653378936; x=1684914936; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=5WAXWo1h0aqY2Iv7q1ww3egLlAZbpV98rj4lqxoJlOs=; b=g/XRsUW048ohKYjknSZVYB9rXrSBJ1JuJ445iWY2w4soX4Y8qsB8TB7a YSfw9xQkAkabm47+SwbIiVxfSpVrJ4pwQZDXW+otA3ynvOuoQ9t21ldC2 yBWhQgxtOIF5gK441sttXB+V8uPkZlPbcxWyW8xncpNhmESXkLzCZKAhE WqJspqL5XA41oRzCvEFLv+C+L3YIR1yuo3dcw/5YtygCtY42oslFgJvRU gi2wShL3N34OcXjQWDlmg+Q4tbwzEYLi4S8QaF+fJyLDcYk4USF0WPOxh nXRLcBSgCSnY/Jd4jrRX8iaFBt3uilH31YYRlMg0xx/g4yksMn3GQT/Rv g==; X-IronPort-AV: E=McAfee;i="6400,9594,10356"; a="273455516" X-IronPort-AV: E=Sophos;i="5.91,248,1647327600"; d="scan'208";a="273455516" Received: from fmsmga001.fm.intel.com ([10.253.24.23]) by orsmga103.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 24 May 2022 00:55:36 -0700 X-IronPort-AV: E=Sophos;i="5.91,248,1647327600"; d="scan'208";a="717072442" Received: from ahunter6-mobl1.ger.corp.intel.com (HELO ahunter-VirtualBox.home\044ger.corp.intel.com) ([10.252.52.210]) by fmsmga001-auth.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 24 May 2022 00:55:34 -0700 From: Adrian Hunter To: Arnaldo Carvalho de Melo Cc: Jiri Olsa , Ian Rogers , Alexey Bayduraev , Namhyung Kim , Leo Yan , linux-kernel@vger.kernel.org Subject: [PATCH V4 14/15] perf tools: Allow system-wide events to keep their own CPUs Date: Tue, 24 May 2022 10:54:35 +0300 Message-Id: <20220524075436.29144-15-adrian.hunter@intel.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20220524075436.29144-1-adrian.hunter@intel.com> References: <20220524075436.29144-1-adrian.hunter@intel.com> MIME-Version: 1.0 Organization: Intel Finland Oy, Registered Address: PL 281, 00181 Helsinki, Business Identity Code: 0357606 - 4, Domiciled in Helsinki Content-Transfer-Encoding: quoted-printable Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Type: text/plain; charset="utf-8" Currently, user_requested_cpus supplants system-wide CPUs when the evlist has_user_cpus. Change that so that system-wide events retain their own CPUs and they are added to all_cpus. Acked-by: Ian Rogers Acked-by: Namhyung Kim Signed-off-by: Adrian Hunter --- tools/lib/perf/evlist.c | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/tools/lib/perf/evlist.c b/tools/lib/perf/evlist.c index 1c801f8da44f..9a6801b53274 100644 --- a/tools/lib/perf/evlist.c +++ b/tools/lib/perf/evlist.c @@ -40,12 +40,11 @@ static void __perf_evlist__propagate_maps(struct perf_e= vlist *evlist, * We already have cpus for evsel (via PMU sysfs) so * keep it, if there's no target cpu list defined. */ - if (!evsel->own_cpus || evlist->has_user_cpus) { - perf_cpu_map__put(evsel->cpus); - evsel->cpus =3D perf_cpu_map__get(evlist->user_requested_cpus); - } else if (!evsel->system_wide && - !evsel->requires_cpu && - perf_cpu_map__empty(evlist->user_requested_cpus)) { + if (!evsel->own_cpus || + (!evsel->system_wide && evlist->has_user_cpus) || + (!evsel->system_wide && + !evsel->requires_cpu && + perf_cpu_map__empty(evlist->user_requested_cpus))) { perf_cpu_map__put(evsel->cpus); evsel->cpus =3D perf_cpu_map__get(evlist->user_requested_cpus); } else if (evsel->cpus !=3D evsel->own_cpus) { --=20 2.25.1 From nobody Wed Apr 29 03:23:59 2026 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 14EEBC4332F for ; Tue, 24 May 2022 07:57:56 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S234141AbiEXH4v (ORCPT ); Tue, 24 May 2022 03:56:51 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:32984 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S235600AbiEXHzv (ORCPT ); Tue, 24 May 2022 03:55:51 -0400 Received: from mga03.intel.com (mga03.intel.com [134.134.136.65]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 402B69B18B for ; Tue, 24 May 2022 00:55:39 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1653378939; x=1684914939; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=B7zVdJsa03qxeddmKuZ5ZR71Qpo4nIqSIXJjSOiLhdQ=; b=FxYbx1vUXtRR46Ex1zwu86G3ckCwA4eODVffUuqmKk/oIpDQ6OfmSeEf 3pnJiiMTk7sIIJ2UMNTWkduuQnbhdFC6GHHaTDeLxMxSYCTpVtJyCb9kI w9QcylTJaRfdSm3De5GTReEHOWI6YasO8yJy+sbgE/UFgLhVF6iLPVcJW l9wr/qcfPICv7BcQ5NJaDnWRQ85EYtRvAGw/iQl6rHsnJ3XQOoMZo3t7s QlCKpQu2Wa6NqDgRFeMb5zFTuPCp/pGhxJb7MJywrLKASpbirnzXQXQ+H y3q9rrv+TA0QbvOclqjG5SNuYqhScwhEQFh0AohkVa8qH9pCnOmlPxjhC Q==; X-IronPort-AV: E=McAfee;i="6400,9594,10356"; a="273455525" X-IronPort-AV: E=Sophos;i="5.91,248,1647327600"; d="scan'208";a="273455525" Received: from fmsmga001.fm.intel.com ([10.253.24.23]) by orsmga103.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 24 May 2022 00:55:39 -0700 X-IronPort-AV: E=Sophos;i="5.91,248,1647327600"; d="scan'208";a="717072448" Received: from ahunter6-mobl1.ger.corp.intel.com (HELO ahunter-VirtualBox.home\044ger.corp.intel.com) ([10.252.52.210]) by fmsmga001-auth.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 24 May 2022 00:55:36 -0700 From: Adrian Hunter To: Arnaldo Carvalho de Melo Cc: Jiri Olsa , Ian Rogers , Alexey Bayduraev , Namhyung Kim , Leo Yan , linux-kernel@vger.kernel.org Subject: [PATCH V4 15/15] perf tools: Allow system-wide events to keep their own threads Date: Tue, 24 May 2022 10:54:36 +0300 Message-Id: <20220524075436.29144-16-adrian.hunter@intel.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20220524075436.29144-1-adrian.hunter@intel.com> References: <20220524075436.29144-1-adrian.hunter@intel.com> MIME-Version: 1.0 Organization: Intel Finland Oy, Registered Address: PL 281, 00181 Helsinki, Business Identity Code: 0357606 - 4, Domiciled in Helsinki Content-Transfer-Encoding: quoted-printable Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Type: text/plain; charset="utf-8" System-wide events do not have threads, so do not propagate threads to them. Acked-by: Ian Rogers Acked-by: Namhyung Kim Signed-off-by: Adrian Hunter --- tools/lib/perf/evlist.c | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/tools/lib/perf/evlist.c b/tools/lib/perf/evlist.c index 9a6801b53274..e6c98a6e3908 100644 --- a/tools/lib/perf/evlist.c +++ b/tools/lib/perf/evlist.c @@ -52,8 +52,11 @@ static void __perf_evlist__propagate_maps(struct perf_ev= list *evlist, evsel->cpus =3D perf_cpu_map__get(evsel->own_cpus); } =20 - perf_thread_map__put(evsel->threads); - evsel->threads =3D perf_thread_map__get(evlist->threads); + if (!evsel->system_wide) { + perf_thread_map__put(evsel->threads); + evsel->threads =3D perf_thread_map__get(evlist->threads); + } + evlist->all_cpus =3D perf_cpu_map__merge(evlist->all_cpus, evsel->cpus); } =20 --=20 2.25.1