From nobody Wed Jun 10 17:29:34 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 0E111C433EF for ; Fri, 6 May 2022 12:26:13 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1391774AbiEFM3x (ORCPT ); Fri, 6 May 2022 08:29:53 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:56738 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1391761AbiEFM3u (ORCPT ); Fri, 6 May 2022 08:29:50 -0400 Received: from mga11.intel.com (mga11.intel.com [192.55.52.93]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 879165D66F for ; Fri, 6 May 2022 05:26:07 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1651839967; x=1683375967; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=rRbkAr1BIOzpeZas4yCHwVNVqZdJqraIQSO9bKjifNk=; b=dfdbt7SDCgsr+/MFGHwV4gmPxsB64KW9JlOwpJaw0VHO0KU4mHwZsTZA kC5TldTofNYSGoI480dRbPgbC5ye8wHE+VRgdwfQSMiNfk2heMGQYLrdm TWn2TBqtY2M3uFoNY0me2ik7UKdcsAb2Zl2bJaM2XNF6OcSKQToiKa9am uAOkqGcnjzVsUfPydjTB5UoPd85yxLzG2eeAE+gOlSt6PbzXMqTk42xdJ Op3WMY/ycVEl7nyqAvOOFdViunHDn836rnd6/ojwE8wFdfshXvPfzH+8Y hP3zgVALnu0P9txB61XluDFTblhrdS+P4W1Ud4qypQEK5SwtiXjqXBedQ g==; X-IronPort-AV: E=McAfee;i="6400,9594,10338"; a="266045728" X-IronPort-AV: E=Sophos;i="5.91,203,1647327600"; d="scan'208";a="266045728" Received: from fmsmga001.fm.intel.com ([10.253.24.23]) by fmsmga102.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 06 May 2022 05:26:07 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.91,203,1647327600"; d="scan'208";a="709440658" Received: from ahunter-desktop.fi.intel.com ([10.237.72.92]) by fmsmga001.fm.intel.com with ESMTP; 06 May 2022 05:26:05 -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 V2 01/23] perf intel-pt: Add a test for system-wide side band Date: Fri, 6 May 2022 15:25:39 +0300 Message-Id: <20220506122601.367589-2-adrian.hunter@intel.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20220506122601.367589-1-adrian.hunter@intel.com> References: <20220506122601.367589-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. Tested-by: Ian Rogers Signed-off-by: Adrian Hunter --- 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 Jun 10 17:29:34 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 92A9CC433EF for ; Fri, 6 May 2022 12:26:17 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1391784AbiEFM35 (ORCPT ); Fri, 6 May 2022 08:29:57 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:56782 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1391771AbiEFM3w (ORCPT ); Fri, 6 May 2022 08:29:52 -0400 Received: from mga11.intel.com (mga11.intel.com [192.55.52.93]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 002C65D67B for ; Fri, 6 May 2022 05:26:09 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1651839969; x=1683375969; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=wrXoe0hgaEcEZHX/TJlJBZD3R2f/+XqTEOuTr09xmSY=; b=WW10p5pnjiHGhBndWGXhiR0PuMEsC9NL0kj7hUon8M4fnhUTPCEgUEmI fe0fmVjWAxa9fwh96jWrHoqQm6mjXuC6zy9EVrXEi5916DYgVCC5RQDaj j0UyUjCXpMwkOtwG0Vo9IwoNpCrZM3oQndGbOCyBLzP51t6Kmhu+FnrRT Q2Ha0g0+Wbt2nFykFE7uR0aSbZgms4h3gU1HzRANzbSfO7+Misu2VBWjt mDTyxq2qyHbQjBEDZXwWYlaGU6WCEQoQsTaaA/L+nDXbdqFLdkLhJJwiC CBb3GJdyB/J3OsHgh6xLp8CavovPhX0nRLNXuucZ+/v/MuXfUvo18Wbfh A==; X-IronPort-AV: E=McAfee;i="6400,9594,10338"; a="266045732" X-IronPort-AV: E=Sophos;i="5.91,203,1647327600"; d="scan'208";a="266045732" Received: from fmsmga001.fm.intel.com ([10.253.24.23]) by fmsmga102.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 06 May 2022 05:26:09 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.91,203,1647327600"; d="scan'208";a="709440665" Received: from ahunter-desktop.fi.intel.com ([10.237.72.92]) by fmsmga001.fm.intel.com with ESMTP; 06 May 2022 05:26:07 -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 V2 02/23] libperf evsel: Add perf_evsel__enable_thread() Date: Fri, 6 May 2022 15:25:40 +0300 Message-Id: <20220506122601.367589-3-adrian.hunter@intel.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20220506122601.367589-1-adrian.hunter@intel.com> References: <20220506122601.367589-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 perf_evsel__enable_thread() as a counterpart to perf_evsel__enable_cpu(), to enable all events for a thread. Signed-off-by: Adrian Hunter Acked-by: Ian Rogers --- tools/lib/perf/evsel.c | 15 +++++++++++++++ tools/lib/perf/include/perf/evsel.h | 1 + 2 files changed, 16 insertions(+) diff --git a/tools/lib/perf/evsel.c b/tools/lib/perf/evsel.c index 20ae9f5f8b30..c1d58673f6ef 100644 --- a/tools/lib/perf/evsel.c +++ b/tools/lib/perf/evsel.c @@ -360,6 +360,21 @@ int perf_evsel__enable_cpu(struct perf_evsel *evsel, i= nt cpu_map_idx) return perf_evsel__run_ioctl(evsel, PERF_EVENT_IOC_ENABLE, NULL, cpu_map_= idx); } =20 +int perf_evsel__enable_thread(struct perf_evsel *evsel, int thread) +{ + struct perf_cpu cpu __maybe_unused; + int idx; + int err; + + perf_cpu_map__for_each_cpu(cpu, idx, evsel->cpus) { + err =3D perf_evsel__ioctl(evsel, PERF_EVENT_IOC_ENABLE, NULL, idx, threa= d); + if (err) + return err; + } + + return 0; +} + int perf_evsel__enable(struct perf_evsel *evsel) { int i; diff --git a/tools/lib/perf/include/perf/evsel.h b/tools/lib/perf/include/p= erf/evsel.h index 2a9516b42d15..699c0ed97d34 100644 --- a/tools/lib/perf/include/perf/evsel.h +++ b/tools/lib/perf/include/perf/evsel.h @@ -36,6 +36,7 @@ LIBPERF_API int perf_evsel__read(struct perf_evsel *evsel= , int cpu_map_idx, int struct perf_counts_values *count); LIBPERF_API int perf_evsel__enable(struct perf_evsel *evsel); LIBPERF_API int perf_evsel__enable_cpu(struct perf_evsel *evsel, int cpu_m= ap_idx); +LIBPERF_API int perf_evsel__enable_thread(struct perf_evsel *evsel, int th= read); LIBPERF_API int perf_evsel__disable(struct perf_evsel *evsel); LIBPERF_API int perf_evsel__disable_cpu(struct perf_evsel *evsel, int cpu_= map_idx); LIBPERF_API struct perf_cpu_map *perf_evsel__cpus(struct perf_evsel *evsel= ); --=20 2.25.1 From nobody Wed Jun 10 17:29:34 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 9DF10C433F5 for ; Fri, 6 May 2022 12:26:20 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1391771AbiEFMaA (ORCPT ); Fri, 6 May 2022 08:30:00 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:56846 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1391770AbiEFM3z (ORCPT ); Fri, 6 May 2022 08:29:55 -0400 Received: from mga11.intel.com (mga11.intel.com [192.55.52.93]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id D61895D677 for ; Fri, 6 May 2022 05:26:12 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1651839972; x=1683375972; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=sojdGw9opoImqR032DmyGxmitp8ivyJL9TNX9//xDhE=; b=N9+rsAUrcEl/OuL9U9QfCuvkK+K1zGGJIehwLddz/SIB1TK6aIlP6pW4 poPFeF6qdUJKSrGgZieVSsCB/0USNCZFGNk2gYGfmsUmIPKe5RW6jK85z M1im5+rXMAf4swxAAlgAeABslhOXiUON2MA4VgAiu3/UL3q1iMUwBRBNB zFcU+LxgbflzfJljubUOwGRt2uwuQMlz4UAI60U7c5f31WZRCvpjdk/a3 d7cKOlZWTM8+TzABRlBI9CJxtdIhkv/NvB/8UdRuAOJ5NExY+AFFxGceX 9lWd+vEUpMTG0ON9JMwrCOq0vFCzUqTCDe3hFSLe+T6BdGRoaZEjnnD/L A==; X-IronPort-AV: E=McAfee;i="6400,9594,10338"; a="266045736" X-IronPort-AV: E=Sophos;i="5.91,203,1647327600"; d="scan'208";a="266045736" Received: from fmsmga001.fm.intel.com ([10.253.24.23]) by fmsmga102.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 06 May 2022 05:26:12 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.91,203,1647327600"; d="scan'208";a="709440681" Received: from ahunter-desktop.fi.intel.com ([10.237.72.92]) by fmsmga001.fm.intel.com with ESMTP; 06 May 2022 05:26:10 -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 V2 03/23] perf evlist: Use libperf functions in evlist__enable_event_idx() Date: Fri, 6 May 2022 15:25:41 +0300 Message-Id: <20220506122601.367589-4-adrian.hunter@intel.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20220506122601.367589-1-adrian.hunter@intel.com> References: <20220506122601.367589-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" evlist__enable_event_idx() is used only for auxtrace events which are never system_wide. Simplify by using libperf enable event functions. Acked-by: Ian Rogers Signed-off-by: Adrian Hunter --- tools/perf/util/evlist.c | 44 ++-------------------------------------- 1 file changed, 2 insertions(+), 42 deletions(-) diff --git a/tools/perf/util/evlist.c b/tools/perf/util/evlist.c index 52ea004ba01e..9fcecf7daa62 100644 --- a/tools/perf/util/evlist.c +++ b/tools/perf/util/evlist.c @@ -334,14 +334,6 @@ int evlist__add_newtp(struct evlist *evlist, const cha= r *sys, const char *name, return 0; } =20 -static int evlist__nr_threads(struct evlist *evlist, struct evsel *evsel) -{ - if (evsel->core.system_wide) - return 1; - else - return perf_thread_map__nr(evlist->core.threads); -} - struct evlist_cpu_iterator evlist__cpu_begin(struct evlist *evlist, struct= affinity *affinity) { struct evlist_cpu_iterator itr =3D { @@ -546,46 +538,14 @@ void evlist__toggle_enable(struct evlist *evlist) (evlist->enabled ? evlist__disable : evlist__enable)(evlist); } =20 -static int evlist__enable_event_cpu(struct evlist *evlist, struct evsel *e= vsel, int cpu) -{ - int thread; - int nr_threads =3D evlist__nr_threads(evlist, evsel); - - if (!evsel->core.fd) - return -EINVAL; - - for (thread =3D 0; thread < nr_threads; thread++) { - int err =3D ioctl(FD(evsel, cpu, thread), PERF_EVENT_IOC_ENABLE, 0); - if (err) - return err; - } - return 0; -} - -static int evlist__enable_event_thread(struct evlist *evlist, struct evsel= *evsel, int thread) -{ - int cpu; - int nr_cpus =3D perf_cpu_map__nr(evlist->core.user_requested_cpus); - - if (!evsel->core.fd) - return -EINVAL; - - for (cpu =3D 0; cpu < nr_cpus; cpu++) { - int err =3D ioctl(FD(evsel, cpu, thread), PERF_EVENT_IOC_ENABLE, 0); - if (err) - return err; - } - return 0; -} - int evlist__enable_event_idx(struct evlist *evlist, struct evsel *evsel, i= nt idx) { bool per_cpu_mmaps =3D !perf_cpu_map__empty(evlist->core.user_requested_c= pus); =20 if (per_cpu_mmaps) - return evlist__enable_event_cpu(evlist, evsel, idx); + return perf_evsel__enable_cpu(&evsel->core, idx); =20 - return evlist__enable_event_thread(evlist, evsel, idx); + return perf_evsel__enable_thread(&evsel->core, idx); } =20 int evlist__add_pollfd(struct evlist *evlist, int fd) --=20 2.25.1 From nobody Wed Jun 10 17:29:34 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 3CDC0C433EF for ; Fri, 6 May 2022 12:26:27 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1391815AbiEFMaI (ORCPT ); Fri, 6 May 2022 08:30:08 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:56948 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1391794AbiEFM36 (ORCPT ); Fri, 6 May 2022 08:29:58 -0400 Received: from mga11.intel.com (mga11.intel.com [192.55.52.93]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 9C6175DA00 for ; Fri, 6 May 2022 05:26: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=1651839975; x=1683375975; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=mYJxt1+PeHnNXfMk/0NPg6Z6cSqkCa8gPc1ALHhXGGI=; b=nuW814tfsoTkNdfjNVgFC68sN0+d+Dnw1ye5IJ9rF7atJZvq5lRisCMn Dm1WaRDWKaUPfg8P6NLLiRpSJTxdzSqTKs5Vp3WIIoHVB/9Eppnla8NHG DtJzBauXZYQ/PKG2Es19tACjWV/qkYTXXelYtt7yKcx5RK5zFaOyBmyAB TDkcFAMjVHiFsZhY2GJGlEFjRtWEm67nmBF/KZS58Pn0HCUxDvFqlmQow DamiimrXxFPmOFMZ2Mx9FEPOiPrSrdJT1xcXjG4X5dFxWhptCtxgbwACe 57f/l7WGiYJm3b4qoWpPB8Cax2NT54CNqzeZTTlOLgRKwpe0ouG3+RQMA g==; X-IronPort-AV: E=McAfee;i="6400,9594,10338"; a="266045739" X-IronPort-AV: E=Sophos;i="5.91,203,1647327600"; d="scan'208";a="266045739" Received: from fmsmga001.fm.intel.com ([10.253.24.23]) by fmsmga102.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 06 May 2022 05:26:15 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.91,203,1647327600"; d="scan'208";a="709440695" Received: from ahunter-desktop.fi.intel.com ([10.237.72.92]) by fmsmga001.fm.intel.com with ESMTP; 06 May 2022 05:26:12 -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 V2 04/23] perf auxtrace: Move evlist__enable_event_idx() to auxtrace.c Date: Fri, 6 May 2022 15:25:42 +0300 Message-Id: <20220506122601.367589-5-adrian.hunter@intel.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20220506122601.367589-1-adrian.hunter@intel.com> References: <20220506122601.367589-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" evlist__enable_event_idx() is used only by auxtrace. Move it to auxtrace.c in preparation for making it even more auxtrace specific. Acked-by: Ian Rogers Signed-off-by: Adrian Hunter --- tools/perf/util/auxtrace.c | 10 ++++++++++ tools/perf/util/evlist.c | 10 ---------- tools/perf/util/evlist.h | 2 -- 3 files changed, 10 insertions(+), 12 deletions(-) diff --git a/tools/perf/util/auxtrace.c b/tools/perf/util/auxtrace.c index df1c5bbbaa0d..10936a38031f 100644 --- a/tools/perf/util/auxtrace.c +++ b/tools/perf/util/auxtrace.c @@ -636,6 +636,16 @@ int auxtrace_parse_snapshot_options(struct auxtrace_re= cord *itr, return -EINVAL; } =20 +static int evlist__enable_event_idx(struct evlist *evlist, struct evsel *e= vsel, int idx) +{ + bool per_cpu_mmaps =3D !perf_cpu_map__empty(evlist->core.user_requested_c= pus); + + if (per_cpu_mmaps) + return perf_evsel__enable_cpu(&evsel->core, idx); + + return perf_evsel__enable_thread(&evsel->core, idx); +} + int auxtrace_record__read_finish(struct auxtrace_record *itr, int idx) { struct evsel *evsel; diff --git a/tools/perf/util/evlist.c b/tools/perf/util/evlist.c index 9fcecf7daa62..f1309b39afe4 100644 --- a/tools/perf/util/evlist.c +++ b/tools/perf/util/evlist.c @@ -538,16 +538,6 @@ void evlist__toggle_enable(struct evlist *evlist) (evlist->enabled ? evlist__disable : evlist__enable)(evlist); } =20 -int evlist__enable_event_idx(struct evlist *evlist, struct evsel *evsel, i= nt idx) -{ - bool per_cpu_mmaps =3D !perf_cpu_map__empty(evlist->core.user_requested_c= pus); - - if (per_cpu_mmaps) - return perf_evsel__enable_cpu(&evsel->core, idx); - - return perf_evsel__enable_thread(&evsel->core, idx); -} - int evlist__add_pollfd(struct evlist *evlist, int fd) { return perf_evlist__add_pollfd(&evlist->core, fd, NULL, POLLIN, fdarray_f= lag__default); diff --git a/tools/perf/util/evlist.h b/tools/perf/util/evlist.h index a21daaa5fc1b..4062f5aebfc1 100644 --- a/tools/perf/util/evlist.h +++ b/tools/perf/util/evlist.h @@ -196,8 +196,6 @@ void evlist__toggle_enable(struct evlist *evlist); void evlist__disable_evsel(struct evlist *evlist, char *evsel_name); void evlist__enable_evsel(struct evlist *evlist, char *evsel_name); =20 -int evlist__enable_event_idx(struct evlist *evlist, struct evsel *evsel, i= nt idx); - void evlist__set_selected(struct evlist *evlist, struct evsel *evsel); =20 int evlist__create_maps(struct evlist *evlist, struct target *target); --=20 2.25.1 From nobody Wed Jun 10 17:29:34 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 9C4CAC433F5 for ; Fri, 6 May 2022 12:26:34 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1391861AbiEFMaP (ORCPT ); Fri, 6 May 2022 08:30:15 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:57422 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1391817AbiEFMaM (ORCPT ); Fri, 6 May 2022 08:30:12 -0400 Received: from mga11.intel.com (mga11.intel.com [192.55.52.93]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id EBEFA6623A for ; Fri, 6 May 2022 05:26: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=1651839978; x=1683375978; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=LRq1SlY2gGua71JaYm5rJE61X/sDRu2yHyaAYqwOIkw=; b=eKSBwUKE3NfdTi2SR5ieFRZpDXyBgyqCszSrxcSAsqfHy88aewQ18yF4 7HsP50ZfCrSWCvmrRrmOta9hMk4w7a8Nc+Cc0+qZLutcSJIdCc096WsJH JAu837YkYeDP8moFFB23mJtfpzaMni5ZrmtME9y2a/Wrs+HgRsysBLtao /XvFznicRfi1sFDDheOU/okFpY8r6QDItoGedFKY7krIzFGMCXYIr7pQr F8h73SHabz1FC5JFJshm+fzg2MISRrXMhrmIjQ6qn6naK9sM8WBceLcwv Rc5UQoQPEitKIxDN5jI0KzHNaNQ0hJi4QEDOGuolhtezHI+maYLAMjyXa A==; X-IronPort-AV: E=McAfee;i="6400,9594,10338"; a="266045745" X-IronPort-AV: E=Sophos;i="5.91,203,1647327600"; d="scan'208";a="266045745" Received: from fmsmga001.fm.intel.com ([10.253.24.23]) by fmsmga102.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 06 May 2022 05:26:17 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.91,203,1647327600"; d="scan'208";a="709440712" Received: from ahunter-desktop.fi.intel.com ([10.237.72.92]) by fmsmga001.fm.intel.com with ESMTP; 06 May 2022 05:26: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 V2 05/23] perf auxtrace: Do not mix up mmap idx Date: Fri, 6 May 2022 15:25:43 +0300 Message-Id: <20220506122601.367589-6-adrian.hunter@intel.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20220506122601.367589-1-adrian.hunter@intel.com> References: <20220506122601.367589-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" The idx is with respect to evlist not evsel. That hasn't mattered because they are the same at present. 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: Ian Rogers Signed-off-by: Adrian Hunter --- tools/perf/util/auxtrace.c | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/tools/perf/util/auxtrace.c b/tools/perf/util/auxtrace.c index 10936a38031f..b11549ae39df 100644 --- a/tools/perf/util/auxtrace.c +++ b/tools/perf/util/auxtrace.c @@ -640,8 +640,14 @@ static int evlist__enable_event_idx(struct evlist *evl= ist, struct evsel *evsel, { bool per_cpu_mmaps =3D !perf_cpu_map__empty(evlist->core.user_requested_c= pus); =20 - if (per_cpu_mmaps) - return perf_evsel__enable_cpu(&evsel->core, idx); + if (per_cpu_mmaps) { + struct perf_cpu evlist_cpu =3D perf_cpu_map__cpu(evlist->core.all_cpus, = idx); + int cpu_map_idx =3D perf_cpu_map__idx(evsel->core.cpus, evlist_cpu); + + if (cpu_map_idx =3D=3D -1) + return -EINVAL; + return perf_evsel__enable_cpu(&evsel->core, cpu_map_idx); + } =20 return perf_evsel__enable_thread(&evsel->core, idx); } --=20 2.25.1 From nobody Wed Jun 10 17:29:34 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 0BB59C433EF for ; Fri, 6 May 2022 12:26:41 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1391871AbiEFMaU (ORCPT ); Fri, 6 May 2022 08:30:20 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:57486 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1391836AbiEFMaN (ORCPT ); Fri, 6 May 2022 08:30:13 -0400 Received: from mga11.intel.com (mga11.intel.com [192.55.52.93]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id DE00C69284 for ; Fri, 6 May 2022 05:26: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=1651839980; x=1683375980; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=sj4YtTM2PnyWDmDATe6FBbpEeXEFm4MvMQ3r10sli8w=; b=Nf1BzZo5mL7TyI1gwkl9sNSdYL8ooAc/FhhpJ3lCZgVOlcocp9Kf8GJt 3FJNuysy/ly79cCp9JLqXYysWVIk/GqQ2KxVOlG7IAtT9Q5qtkZi70ym/ haiWJXhHTCbo4S+I0lk0P8M1kQEkzRXFqiwfxC1dREBJlNz08OkC6vz4v IvESGzYdJjUDLRA+mSc+X8woMbz2XmvvIVDFR90f6zEFlZv3TCLukF69J fFNLo7qdSOCE/PsJkgl2U7quI8bbEPKXi0kvJ1R3Kf+CLYsMGH2h2Mcde Owf0Io8JL+DLkCjHuPpBvnVd89gW/SOhq7Y9H8HD/v5+p/f5cd0jOZCg1 Q==; X-IronPort-AV: E=McAfee;i="6400,9594,10338"; a="266045754" X-IronPort-AV: E=Sophos;i="5.91,203,1647327600"; d="scan'208";a="266045754" Received: from fmsmga001.fm.intel.com ([10.253.24.23]) by fmsmga102.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 06 May 2022 05:26:20 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.91,203,1647327600"; d="scan'208";a="709440743" Received: from ahunter-desktop.fi.intel.com ([10.237.72.92]) by fmsmga001.fm.intel.com with ESMTP; 06 May 2022 05:26: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 V2 06/23] libperf evlist: Remove ->idx() per_cpu parameter Date: Fri, 6 May 2022 15:25:44 +0300 Message-Id: <20220506122601.367589-7-adrian.hunter@intel.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20220506122601.367589-1-adrian.hunter@intel.com> References: <20220506122601.367589-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 ->idx() per_cpu parameter because it isn't needed. Acked-by: Ian Rogers Signed-off-by: Adrian Hunter --- tools/lib/perf/evlist.c | 4 ++-- tools/lib/perf/include/internal/evlist.h | 2 +- tools/perf/util/evlist.c | 3 ++- 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/tools/lib/perf/evlist.c b/tools/lib/perf/evlist.c index 974b4585f93e..5e8ad854fa8a 100644 --- a/tools/lib/perf/evlist.c +++ b/tools/lib/perf/evlist.c @@ -521,7 +521,7 @@ mmap_per_thread(struct perf_evlist *evlist, struct perf= _evlist_mmap_ops *ops, int output_overwrite =3D -1; =20 if (ops->idx) - ops->idx(evlist, mp, thread, false); + ops->idx(evlist, mp, thread); =20 if (mmap_per_evsel(evlist, ops, thread, mp, 0, thread, &output, &output_overwrite)) @@ -548,7 +548,7 @@ mmap_per_cpu(struct perf_evlist *evlist, struct perf_ev= list_mmap_ops *ops, int output_overwrite =3D -1; =20 if (ops->idx) - ops->idx(evlist, mp, cpu, true); + ops->idx(evlist, mp, cpu); =20 for (thread =3D 0; thread < nr_threads; thread++) { if (mmap_per_evsel(evlist, ops, cpu, mp, cpu, diff --git a/tools/lib/perf/include/internal/evlist.h b/tools/lib/perf/incl= ude/internal/evlist.h index e3e64f37db7b..0d5c830431a7 100644 --- a/tools/lib/perf/include/internal/evlist.h +++ b/tools/lib/perf/include/internal/evlist.h @@ -38,7 +38,7 @@ struct perf_evlist { }; =20 typedef void -(*perf_evlist_mmap__cb_idx_t)(struct perf_evlist*, struct perf_mmap_param*= , int, bool); +(*perf_evlist_mmap__cb_idx_t)(struct perf_evlist*, struct perf_mmap_param*= , int); typedef struct perf_mmap* (*perf_evlist_mmap__cb_get_t)(struct perf_evlist*, bool, int); typedef int diff --git a/tools/perf/util/evlist.c b/tools/perf/util/evlist.c index f1309b39afe4..09a1d3400fd9 100644 --- a/tools/perf/util/evlist.c +++ b/tools/perf/util/evlist.c @@ -748,10 +748,11 @@ static struct mmap *evlist__alloc_mmap(struct evlist = *evlist, static void perf_evlist__mmap_cb_idx(struct perf_evlist *_evlist, struct perf_mmap_param *_mp, - int idx, bool per_cpu) + 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); =20 auxtrace_mmap_params__set_idx(&mp->auxtrace_mp, evlist, idx, per_cpu); } --=20 2.25.1 From nobody Wed Jun 10 17:29:34 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 03E66C433F5 for ; Fri, 6 May 2022 12:26:50 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1391860AbiEFMa3 (ORCPT ); Fri, 6 May 2022 08:30:29 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:57508 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1391845AbiEFMaN (ORCPT ); Fri, 6 May 2022 08:30:13 -0400 Received: from mga11.intel.com (mga11.intel.com [192.55.52.93]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 24E85692AE for ; Fri, 6 May 2022 05:26: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=1651839983; x=1683375983; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=d3l1u9Tv0gtCM+Vaellvr0QGnqW3rFX/vqrcrjcyS6g=; b=jntHryOWahvOT5Ch+JaBAzxWp5Vx+VWyXsDogRNYqLqKVgphUW4QAj8D pA2wDvwkA3IKZ6OwfmSVdUiN6CeRpNfYQZZRyNc2ijchSD+0AQQszN+7E BUtjHr3EsNOSC05B2I4zDekQjX8doBE6SFeRYxB3SHEkLinPF61e4qfT+ Yb3sNtHELnTJJ/ZqwsIya4nrnj5FgFa0sFyoA3Ba3u2mJyXN3B8VGy2OG uUogIG4erLvUo75F6mcbB3vdYA7ZEhOqkU/hPm5+td+e6ShLSSsU0kb6d vA+ktsydmT2Qx7IhG7jbxVYm2+cmQeP9ZW++yCF64FIXOuQSnew9lOlFm g==; X-IronPort-AV: E=McAfee;i="6400,9594,10338"; a="266045757" X-IronPort-AV: E=Sophos;i="5.91,203,1647327600"; d="scan'208";a="266045757" Received: from fmsmga001.fm.intel.com ([10.253.24.23]) by fmsmga102.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 06 May 2022 05:26:22 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.91,203,1647327600"; d="scan'208";a="709440764" Received: from ahunter-desktop.fi.intel.com ([10.237.72.92]) by fmsmga001.fm.intel.com with ESMTP; 06 May 2022 05:26: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 V2 07/23] libperf evlist: Move ->idx() into mmap_per_evsel() Date: Fri, 6 May 2022 15:25:45 +0300 Message-Id: <20220506122601.367589-8-adrian.hunter@intel.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20220506122601.367589-1-adrian.hunter@intel.com> References: <20220506122601.367589-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" Move ->idx() into mmap_per_evsel() in preparation for adding evsel as a parameter. Acked-by: Ian Rogers Signed-off-by: Adrian Hunter --- tools/lib/perf/evlist.c | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/tools/lib/perf/evlist.c b/tools/lib/perf/evlist.c index 5e8ad854fa8a..4fce417432aa 100644 --- a/tools/lib/perf/evlist.c +++ b/tools/lib/perf/evlist.c @@ -478,6 +478,9 @@ mmap_per_evsel(struct perf_evlist *evlist, struct perf_= evlist_mmap_ops *ops, */ refcount_set(&map->refcnt, 2); =20 + if (ops->idx) + ops->idx(evlist, mp, idx); + if (ops->mmap(map, mp, *output, evlist_cpu) < 0) return -1; =20 @@ -520,9 +523,6 @@ mmap_per_thread(struct perf_evlist *evlist, struct perf= _evlist_mmap_ops *ops, int output =3D -1; int output_overwrite =3D -1; =20 - if (ops->idx) - ops->idx(evlist, mp, thread); - if (mmap_per_evsel(evlist, ops, thread, mp, 0, thread, &output, &output_overwrite)) goto out_unmap; @@ -547,9 +547,6 @@ mmap_per_cpu(struct perf_evlist *evlist, struct perf_ev= list_mmap_ops *ops, int output =3D -1; int output_overwrite =3D -1; =20 - if (ops->idx) - ops->idx(evlist, mp, cpu); - for (thread =3D 0; thread < nr_threads; thread++) { if (mmap_per_evsel(evlist, ops, cpu, mp, cpu, thread, &output, &output_overwrite)) --=20 2.25.1 From nobody Wed Jun 10 17:29:34 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 4A896C433F5 for ; Fri, 6 May 2022 12:26:57 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1378697AbiEFMah (ORCPT ); Fri, 6 May 2022 08:30:37 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:57524 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1391850AbiEFMaO (ORCPT ); Fri, 6 May 2022 08:30:14 -0400 Received: from mga11.intel.com (mga11.intel.com [192.55.52.93]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 8C8E7692BD for ; Fri, 6 May 2022 05:26: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=1651839985; x=1683375985; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=CILDTRDmBntiMUnnF2e5/ORuQbnA2p1TKMvnN3FSKGs=; b=nyAd8RmIMyLcy9h6xMYTGx156pD9Zea7ugPlh0ydp5c+bCzPJ4EZTV3h 5A6AHVSjOqc30s9Tf3OFZW5LiktI/1cgQFOleMo4XTH4ngkw5VbIUd4QY upltUH0oDx8HMOORSeXPO1ht5kymFIkGvBv9/HZRGYBKeSdiA9Spx1U45 06siRWNS7ICSvlqozqIV6kplM09XZ23V+f2zlosZfLnF0AFtdJsfO2RpY H3SLEZoN2QFbVeG36PvuGz2AVMQTq1FgJD+tXzalwZFDgeCY3Dp0ICFeK RXbK33RwaBnfQDZPuibLtSijw3wBrG9DKh4Y++2vaf7CR6ewIKHv7rIwg g==; X-IronPort-AV: E=McAfee;i="6400,9594,10338"; a="266045763" X-IronPort-AV: E=Sophos;i="5.91,203,1647327600"; d="scan'208";a="266045763" Received: from fmsmga001.fm.intel.com ([10.253.24.23]) by fmsmga102.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 06 May 2022 05:26:25 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.91,203,1647327600"; d="scan'208";a="709440786" Received: from ahunter-desktop.fi.intel.com ([10.237.72.92]) by fmsmga001.fm.intel.com with ESMTP; 06 May 2022 05:26:23 -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 V2 08/23] libperf evlist: Add evsel as a parameter to ->idx() Date: Fri, 6 May 2022 15:25:46 +0300 Message-Id: <20220506122601.367589-9-adrian.hunter@intel.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20220506122601.367589-1-adrian.hunter@intel.com> References: <20220506122601.367589-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 evsel as a parameter to ->idx() in preparation for correctly determining whether an auxtrace mmap is needed. Acked-by: Ian Rogers Signed-off-by: Adrian Hunter --- tools/lib/perf/evlist.c | 2 +- tools/lib/perf/include/internal/evlist.h | 3 ++- tools/perf/util/evlist.c | 1 + 3 files changed, 4 insertions(+), 2 deletions(-) diff --git a/tools/lib/perf/evlist.c b/tools/lib/perf/evlist.c index 4fce417432aa..ed66f2e38464 100644 --- a/tools/lib/perf/evlist.c +++ b/tools/lib/perf/evlist.c @@ -479,7 +479,7 @@ mmap_per_evsel(struct perf_evlist *evlist, struct perf_= evlist_mmap_ops *ops, refcount_set(&map->refcnt, 2); =20 if (ops->idx) - ops->idx(evlist, mp, idx); + ops->idx(evlist, evsel, mp, idx); =20 if (ops->mmap(map, mp, *output, evlist_cpu) < 0) return -1; diff --git a/tools/lib/perf/include/internal/evlist.h b/tools/lib/perf/incl= ude/internal/evlist.h index 0d5c830431a7..6f89aec3e608 100644 --- a/tools/lib/perf/include/internal/evlist.h +++ b/tools/lib/perf/include/internal/evlist.h @@ -38,7 +38,8 @@ struct perf_evlist { }; =20 typedef void -(*perf_evlist_mmap__cb_idx_t)(struct perf_evlist*, struct perf_mmap_param*= , int); +(*perf_evlist_mmap__cb_idx_t)(struct perf_evlist*, struct perf_evsel*, + struct perf_mmap_param*, int); typedef struct perf_mmap* (*perf_evlist_mmap__cb_get_t)(struct perf_evlist*, bool, int); typedef int diff --git a/tools/perf/util/evlist.c b/tools/perf/util/evlist.c index 09a1d3400fd9..7ae56b062f44 100644 --- a/tools/perf/util/evlist.c +++ b/tools/perf/util/evlist.c @@ -747,6 +747,7 @@ static struct mmap *evlist__alloc_mmap(struct evlist *e= vlist, =20 static void perf_evlist__mmap_cb_idx(struct perf_evlist *_evlist, + struct perf_evsel *_evsel __maybe_unused, struct perf_mmap_param *_mp, int idx) { --=20 2.25.1 From nobody Wed Jun 10 17:29:34 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 AB105C433F5 for ; Fri, 6 May 2022 12:27:04 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1391825AbiEFMam (ORCPT ); Fri, 6 May 2022 08:30:42 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:57544 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1391829AbiEFMaO (ORCPT ); Fri, 6 May 2022 08:30:14 -0400 Received: from mga11.intel.com (mga11.intel.com [192.55.52.93]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 0B8C95DA00 for ; Fri, 6 May 2022 05:26:28 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1651839988; x=1683375988; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=8v35ff6wW1nUrp/QD1hjUv6/DgplSoXaM8FKX5EJVnk=; b=NzOAEwG2n4JjpmLJc4s3p3iFExvVIZPtvKp4lxXnfi5zY3HQEFdKBNTT qyKTks+7HoXRwAh4pD/rICc/Q+jBiIcF8FE2Wpq30YOqBLFrGSbs3e0Oq NIKIQOPX2UiARz+oK3pkIcjtBifveYN/oT9YbV1Fqt4OMKPyb0HBNbvbR 1x/WjslANBtnJjdCm7HcZGXs91X1XwyuyIrZ/7ZBwmXbuHVYm79uvjL8W j0MHoLLPc8IVcrPrJdXaYVD0keG4TTBt9Jdi8g9vT8NL/I/Nh1amuZMX7 35BEmOMAaxFtmWaxfA1Lm1MJ2l0NKRYcPZ2NZesQtWt0EWWtGV04GWrCA g==; X-IronPort-AV: E=McAfee;i="6400,9594,10338"; a="266045774" X-IronPort-AV: E=Sophos;i="5.91,203,1647327600"; d="scan'208";a="266045774" Received: from fmsmga001.fm.intel.com ([10.253.24.23]) by fmsmga102.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 06 May 2022 05:26:27 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.91,203,1647327600"; d="scan'208";a="709440808" Received: from ahunter-desktop.fi.intel.com ([10.237.72.92]) by fmsmga001.fm.intel.com with ESMTP; 06 May 2022 05:26: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 V2 09/23] perf auxtrace: Record whether an auxtrace mmap is needed Date: Fri, 6 May 2022 15:25:47 +0300 Message-Id: <20220506122601.367589-10-adrian.hunter@intel.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20220506122601.367589-1-adrian.hunter@intel.com> References: <20220506122601.367589-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 flag needs_auxtrace_mmap to record whether an auxtrace mmap is needed, in preparation for correctly determining whether or not an auxtrace mmap is needed. Acked-by: Ian Rogers Signed-off-by: Adrian Hunter --- tools/perf/arch/arm/util/cs-etm.c | 1 + tools/perf/arch/arm64/util/arm-spe.c | 1 + tools/perf/arch/s390/util/auxtrace.c | 1 + tools/perf/arch/x86/util/intel-bts.c | 1 + tools/perf/arch/x86/util/intel-pt.c | 1 + tools/perf/util/evsel.h | 1 + 6 files changed, 6 insertions(+) diff --git a/tools/perf/arch/arm/util/cs-etm.c b/tools/perf/arch/arm/util/c= s-etm.c index 11c71aa219f7..1b54638d53b0 100644 --- a/tools/perf/arch/arm/util/cs-etm.c +++ b/tools/perf/arch/arm/util/cs-etm.c @@ -319,6 +319,7 @@ static int cs_etm_recording_options(struct auxtrace_rec= ord *itr, } evsel->core.attr.freq =3D 0; evsel->core.attr.sample_period =3D 1; + evsel->needs_auxtrace_mmap =3D true; cs_etm_evsel =3D evsel; opts->full_auxtrace =3D true; } diff --git a/tools/perf/arch/arm64/util/arm-spe.c b/tools/perf/arch/arm64/u= til/arm-spe.c index e8b577d33e53..6f4db2ac5420 100644 --- a/tools/perf/arch/arm64/util/arm-spe.c +++ b/tools/perf/arch/arm64/util/arm-spe.c @@ -160,6 +160,7 @@ static int arm_spe_recording_options(struct auxtrace_re= cord *itr, } evsel->core.attr.freq =3D 0; evsel->core.attr.sample_period =3D arm_spe_pmu->default_config->sample_= period; + evsel->needs_auxtrace_mmap =3D true; arm_spe_evsel =3D evsel; opts->full_auxtrace =3D true; } diff --git a/tools/perf/arch/s390/util/auxtrace.c b/tools/perf/arch/s390/ut= il/auxtrace.c index 0db5c58c98e8..5068baa3e092 100644 --- a/tools/perf/arch/s390/util/auxtrace.c +++ b/tools/perf/arch/s390/util/auxtrace.c @@ -98,6 +98,7 @@ struct auxtrace_record *auxtrace_record__init(struct evli= st *evlist, evlist__for_each_entry(evlist, pos) { if (pos->core.attr.config =3D=3D PERF_EVENT_CPUM_SF_DIAG) { diagnose =3D 1; + pos->needs_auxtrace_mmap =3D true; break; } } diff --git a/tools/perf/arch/x86/util/intel-bts.c b/tools/perf/arch/x86/uti= l/intel-bts.c index d68a0f48e41e..bcccfbade5c6 100644 --- a/tools/perf/arch/x86/util/intel-bts.c +++ b/tools/perf/arch/x86/util/intel-bts.c @@ -129,6 +129,7 @@ static int intel_bts_recording_options(struct auxtrace_= record *itr, } evsel->core.attr.freq =3D 0; evsel->core.attr.sample_period =3D 1; + evsel->needs_auxtrace_mmap =3D true; intel_bts_evsel =3D evsel; opts->full_auxtrace =3D true; } diff --git a/tools/perf/arch/x86/util/intel-pt.c b/tools/perf/arch/x86/util= /intel-pt.c index 38ec2666ec12..2eaac4638aab 100644 --- a/tools/perf/arch/x86/util/intel-pt.c +++ b/tools/perf/arch/x86/util/intel-pt.c @@ -649,6 +649,7 @@ static int intel_pt_recording_options(struct auxtrace_r= ecord *itr, evsel->core.attr.freq =3D 0; evsel->core.attr.sample_period =3D 1; evsel->no_aux_samples =3D true; + evsel->needs_auxtrace_mmap =3D true; intel_pt_evsel =3D evsel; opts->full_auxtrace =3D true; } diff --git a/tools/perf/util/evsel.h b/tools/perf/util/evsel.h index 45d674812239..544fbed98df1 100644 --- a/tools/perf/util/evsel.h +++ b/tools/perf/util/evsel.h @@ -124,6 +124,7 @@ struct evsel { bool merged_stat; bool reset_group; bool errored; + bool needs_auxtrace_mmap; struct hashmap *per_pkg_mask; int err; struct { --=20 2.25.1 From nobody Wed Jun 10 17:29:34 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 DEE89C433F5 for ; Fri, 6 May 2022 12:27:08 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1391840AbiEFMat (ORCPT ); Fri, 6 May 2022 08:30:49 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:57508 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1391799AbiEFMaQ (ORCPT ); Fri, 6 May 2022 08:30:16 -0400 Received: from mga11.intel.com (mga11.intel.com [192.55.52.93]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 765B3692BB for ; Fri, 6 May 2022 05:26:30 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1651839990; x=1683375990; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=gYr5snmPtfhF4HsMYYaDlxTc7+PEl0c3nybj109QTzQ=; b=J+rzv+6DC0+8/WwyDo8Is9LXSA6eiMemXmJCjhPgsr8GCOYU9BkDa0FU rzwSVtmj+eNEe7wPIxgAxOIAIcwOm4KGimDyh41+ENvHSEdHPEt3J/2Vj whaHiTvyyOJ8qTa4t+hzo+ih2r9/7W7TB9fIuM9PXL0jPepwQsi3Xav2J tn+nQg3gvz8R3ik+MsfXnXKJeRDa8yY4Z1e3rEqTWFVTY+mLHiNpq/dI7 VnAKwZsG3Vpc7MhQGWwhIqOLblm/2VMoH2HnmAcwj5O2oGXK9lxbWIQRY AD6fzgJ/T9zn1ythATmDTKdyLZOEsBL/PrPueaELKNCh6v58cWSNZfBFX Q==; X-IronPort-AV: E=McAfee;i="6400,9594,10338"; a="266045785" X-IronPort-AV: E=Sophos;i="5.91,203,1647327600"; d="scan'208";a="266045785" Received: from fmsmga001.fm.intel.com ([10.253.24.23]) by fmsmga102.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 06 May 2022 05:26:30 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.91,203,1647327600"; d="scan'208";a="709440836" Received: from ahunter-desktop.fi.intel.com ([10.237.72.92]) by fmsmga001.fm.intel.com with ESMTP; 06 May 2022 05:26:28 -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 V2 10/23] perf auxtrace: Add mmap_needed to auxtrace_mmap_params Date: Fri, 6 May 2022 15:25:48 +0300 Message-Id: <20220506122601.367589-11-adrian.hunter@intel.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20220506122601.367589-1-adrian.hunter@intel.com> References: <20220506122601.367589-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. Signed-off-by: Adrian Hunter --- tools/perf/util/auxtrace.c | 10 ++++++++-- tools/perf/util/auxtrace.h | 8 ++++++-- tools/perf/util/evlist.c | 5 +++-- tools/perf/util/mmap.c | 1 + 4 files changed, 18 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..37feae003904 100644 --- a/tools/perf/util/auxtrace.h +++ b/tools/perf/util/auxtrace.h @@ -344,6 +344,7 @@ 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 * @cpu: cpu number for a per-cpu mmap otherwise %-1 */ struct auxtrace_mmap_params { @@ -353,6 +354,7 @@ struct auxtrace_mmap_params { int prot; int idx; pid_t tid; + bool mmap_needed; struct perf_cpu cpu; }; =20 @@ -490,7 +492,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 +866,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 7ae56b062f44..996bdc203616 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 Jun 10 17:29:34 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 95809C433EF for ; Fri, 6 May 2022 12:27:13 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1391857AbiEFMay (ORCPT ); Fri, 6 May 2022 08:30:54 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:57460 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1391849AbiEFMaS (ORCPT ); Fri, 6 May 2022 08:30:18 -0400 Received: from mga11.intel.com (mga11.intel.com [192.55.52.93]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id DE6D95DA1F for ; Fri, 6 May 2022 05:26: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=1651839992; x=1683375992; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=Xbn8NTvxDzQlPPmV1G8IyZkZofYM0I6eYZrWUBE1a9c=; b=faEAMWAczAhvHtmklOAbgegHUdGg+UqKnAqXputYjqoX8ZCsLzbCX9ws Y7cGdN+KsFtXEJuBuYjrB0GbHuyOoVc5a/jRDMtjkITBb3iNHBSYYQ/gp EbdvyH84QIdf3GeMO3reZlrPR1w4YZ29gc14L0Mnbatq7TBYb5s2iXWbP dykzzGsZqjh0m51mWbSi/Fcihdc8dnvXQrGNAcxLc+LSIu5SZqXmPM1kP bKXyj0BGW9elYXfJi29MzOLn95VnFzyDvA41IhEnqSKfL2eDittKI4bOc ZYONqr4udjm19/wDWq6mOncS+HkSrkjH2apH82D9pHOcePfdbcT8jyr7b A==; X-IronPort-AV: E=McAfee;i="6400,9594,10338"; a="266045802" X-IronPort-AV: E=Sophos;i="5.91,203,1647327600"; d="scan'208";a="266045802" Received: from fmsmga001.fm.intel.com ([10.253.24.23]) by fmsmga102.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 06 May 2022 05:26:32 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.91,203,1647327600"; d="scan'208";a="709440884" Received: from ahunter-desktop.fi.intel.com ([10.237.72.92]) by fmsmga001.fm.intel.com with ESMTP; 06 May 2022 05:26:30 -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 V2 11/23] perf auxtrace: Remove auxtrace_mmap_params__set_idx() per_cpu parameter Date: Fri, 6 May 2022 15:25:49 +0300 Message-Id: <20220506122601.367589-12-adrian.hunter@intel.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20220506122601.367589-1-adrian.hunter@intel.com> References: <20220506122601.367589-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. Signed-off-by: Adrian Hunter Acked-by: Ian Rogers --- 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 37feae003904..87a3b564a7de 100644 --- a/tools/perf/util/auxtrace.h +++ b/tools/perf/util/auxtrace.h @@ -493,8 +493,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, @@ -867,8 +866,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 996bdc203616..25eae096bdac 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 Jun 10 17:29:34 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 77A94C433EF for ; Fri, 6 May 2022 12:27:11 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1391848AbiEFMav (ORCPT ); Fri, 6 May 2022 08:30:51 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:57548 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1391851AbiEFMaU (ORCPT ); Fri, 6 May 2022 08:30:20 -0400 Received: from mga11.intel.com (mga11.intel.com [192.55.52.93]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 9DDC16928A for ; Fri, 6 May 2022 05:26:35 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1651839995; x=1683375995; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=Tdoy23mMly4Ibperfn5sSaXEfcOXxc99ArGlk0Wgz3U=; b=Y10OoDhPz2GkSxC25uBqzRkAJZWddkUSaGjlMRvYWU+nju0g8D1ErRhQ gKOKAOBgNvncBuuyAL/fKQ5ybq428GaOzEAjTgV7tOTEcHQjLXCb2Yvod gKodXGYcEUv6L1hZPB0QXzNxt8BsxsttBXDkVd318ZufYKKtur6Op5IEH TtxSk35RQKGhefWosv9tsOs3drsERarFWXrJB6p9PQoT2WC1HP8XMQnEP 1zg6Be6u57cDoQ0hEY988vssI9wLHwfaUVSkm0cQgZEbaBRURY+x5yRmY WhQEycXIcLY4Ht0Z7S/QzOO+TgAKN9mqUPF7En7Ieb2G5drkNEmS2qsuB w==; X-IronPort-AV: E=McAfee;i="6400,9594,10338"; a="266045818" X-IronPort-AV: E=Sophos;i="5.91,203,1647327600"; d="scan'208";a="266045818" Received: from fmsmga001.fm.intel.com ([10.253.24.23]) by fmsmga102.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 06 May 2022 05:26:35 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.91,203,1647327600"; d="scan'208";a="709440927" Received: from ahunter-desktop.fi.intel.com ([10.237.72.92]) by fmsmga001.fm.intel.com with ESMTP; 06 May 2022 05:26:33 -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 V2 12/23] perf evlist: Factor out evlist__dummy_event() Date: Fri, 6 May 2022 15:25:50 +0300 Message-Id: <20220506122601.367589-13-adrian.hunter@intel.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20220506122601.367589-1-adrian.hunter@intel.com> References: <20220506122601.367589-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 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 25eae096bdac..78c47cbafbc2 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 Jun 10 17:29:34 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 89FC2C433F5 for ; Fri, 6 May 2022 12:27:26 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1391946AbiEFMbG (ORCPT ); Fri, 6 May 2022 08:31:06 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:57468 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1391885AbiEFMac (ORCPT ); Fri, 6 May 2022 08:30:32 -0400 Received: from mga11.intel.com (mga11.intel.com [192.55.52.93]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 3142D5DA11 for ; Fri, 6 May 2022 05:26:37 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1651839998; x=1683375998; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=o2w9QbsE6bdmYmYFloSzohOC304nMECcnT8Nn2n4ncU=; b=cuv2fjTWNNqg0Hz/XxZzBZiZzydASQI587OZqsXnmnI83wI1byVQKvsG zMFtwihKPuS0JyR80IgxX47Ap5FxtZVvlDM7pesZn18Q1+DgqGhPtEKlO XaVqt2cUzn9X3Sxi3UwWyyBYrbKWk01l3ro+l5g45yYW/6d1q5vv6Ei/Q e42x4tFppcIHIQj0S6gosNH8T7/KdCrhbO4is3l60KSYVtm0frib8ZouF ELEgQU4/yEKW3l4wwelnv5Iwpztq++FCsCEeF32GzYftZx/WRlBxz/I0H lteazjVPjwtL6N5KFWatMisKyUBF98vuPFd4S3Bfey8Ek0nWPhsUbHl8C w==; X-IronPort-AV: E=McAfee;i="6400,9594,10338"; a="266045826" X-IronPort-AV: E=Sophos;i="5.91,203,1647327600"; d="scan'208";a="266045826" Received: from fmsmga001.fm.intel.com ([10.253.24.23]) by fmsmga102.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 06 May 2022 05:26:37 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.91,203,1647327600"; d="scan'208";a="709440960" Received: from ahunter-desktop.fi.intel.com ([10.237.72.92]) by fmsmga001.fm.intel.com with ESMTP; 06 May 2022 05:26:35 -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 V2 13/23] perf evlist: Add evlist__add_dummy_on_all_cpus() Date: Fri, 6 May 2022 15:25:51 +0300 Message-Id: <20220506122601.367589-14-adrian.hunter@intel.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20220506122601.367589-1-adrian.hunter@intel.com> References: <20220506122601.367589-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. Signed-off-by: Adrian Hunter --- tools/perf/util/evlist.c | 40 ++++++++++++++++++++++++++++++++++++++++ tools/perf/util/evlist.h | 5 +++++ 2 files changed, 45 insertions(+) diff --git a/tools/perf/util/evlist.c b/tools/perf/util/evlist.c index 78c47cbafbc2..c16bd4836314 100644 --- a/tools/perf/util/evlist.c +++ b/tools/perf/util/evlist.c @@ -264,6 +264,46 @@ 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 */ + 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 Jun 10 17:29:34 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 86AF4C433F5 for ; Fri, 6 May 2022 12:27:31 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1391910AbiEFMbL (ORCPT ); Fri, 6 May 2022 08:31:11 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:57532 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1391902AbiEFMae (ORCPT ); Fri, 6 May 2022 08:30:34 -0400 Received: from mga11.intel.com (mga11.intel.com [192.55.52.93]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 460F169499 for ; Fri, 6 May 2022 05:26:40 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1651840000; x=1683376000; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=V0rQcXAF6ZEjrPKB/Xd3XBumrUbxQfH8kFdetJ4R3a4=; b=hxCPag5pQC/Lr/CrdKA4j7xJdpT5uJA1NA5X/k5Ff5v6jU2/WsJHHYw/ ObTk4I35bt74QYv2HCpsmTo9Q3Bq2McYi5G25wdAtYJgmWwubfn4NDpA5 iglQ6YzOGPrksoT9+KHlVMkM8Fx9hOhBLqaNJk/lTg2Lq07zHTKfXmQXA TgUhQQ6EhdQjQC0St1xb575trOdF3dJO+xG/F9TOJAMhM0zGIMHwlqXET walTvBJX2MDvBpQFQIBvx5dyMs6uCX83eWDxkdo3cewyuZV/c7RRerT/F Fy7HpnfSKjk6MnLU03HVDsUwn1ylfj1kvEYIlBUg4QENQ585BBuIHZz+x w==; X-IronPort-AV: E=McAfee;i="6400,9594,10338"; a="266045832" X-IronPort-AV: E=Sophos;i="5.91,203,1647327600"; d="scan'208";a="266045832" Received: from fmsmga001.fm.intel.com ([10.253.24.23]) by fmsmga102.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 06 May 2022 05:26:40 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.91,203,1647327600"; d="scan'208";a="709440980" Received: from ahunter-desktop.fi.intel.com ([10.237.72.92]) by fmsmga001.fm.intel.com with ESMTP; 06 May 2022 05:26:37 -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 V2 14/23] perf record: Use evlist__add_dummy_on_all_cpus() in record__config_text_poke() Date: Fri, 6 May 2022 15:25:52 +0300 Message-Id: <20220506122601.367589-15-adrian.hunter@intel.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20220506122601.367589-1-adrian.hunter@intel.com> References: <20220506122601.367589-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 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 Jun 10 17:29:34 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 2A37AC433F5 for ; Fri, 6 May 2022 12:27:35 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1359708AbiEFMbP (ORCPT ); Fri, 6 May 2022 08:31:15 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:58362 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1391915AbiEFMaf (ORCPT ); Fri, 6 May 2022 08:30:35 -0400 Received: from mga11.intel.com (mga11.intel.com [192.55.52.93]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id DE9DE69498 for ; Fri, 6 May 2022 05:26:42 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1651840003; x=1683376003; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=wVM1pOx2QDTKQaGcOMqh41IRv9AQKSS3ODd+mtdbX1Q=; b=ECLl+rMfXpxPnpts/nPgk7GIx374O+hhWT/xKZETQWoHez2LY0cc6w1P ZaAcFnTlBnhnHRSyUFsi5p0vz6MlAl5zYOf9j8tXisoIdPVwrra5VKP7D rzyFRCv6fwJE43PWUg7U1LmVJTGB5One0acbDeK1UcEEizzGfX6yaFW6t 2985J5d7SL2ugyxnugsCQrSA/2nI6ZQeOOAd6KcUvJBzSNrtclOZMqqN3 rerhwuVxUZ0eBqW6BD2McK8imFYEh/uq7Y1sZ4JEI263MsHrB/ci9TwjE bQ+nOyAJ/gJePBZbIKtPOPqGAFVHXzkWVHmsOokOo1iIIPcMwqH9X2RBS g==; X-IronPort-AV: E=McAfee;i="6400,9594,10338"; a="266045837" X-IronPort-AV: E=Sophos;i="5.91,203,1647327600"; d="scan'208";a="266045837" Received: from fmsmga001.fm.intel.com ([10.253.24.23]) by fmsmga102.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 06 May 2022 05:26:42 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.91,203,1647327600"; d="scan'208";a="709440996" Received: from ahunter-desktop.fi.intel.com ([10.237.72.92]) by fmsmga001.fm.intel.com with ESMTP; 06 May 2022 05:26:40 -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 V2 15/23] perf intel-pt: Use evlist__add_dummy_on_all_cpus() for switch tracking Date: Fri, 6 May 2022 15:25:53 +0300 Message-Id: <20220506122601.367589-16-adrian.hunter@intel.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20220506122601.367589-1-adrian.hunter@intel.com> References: <20220506122601.367589-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 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 Jun 10 17:29:34 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 A0350C433EF for ; Fri, 6 May 2022 12:27:38 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1391869AbiEFMbS (ORCPT ); Fri, 6 May 2022 08:31:18 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:59258 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1391864AbiEFMa6 (ORCPT ); Fri, 6 May 2022 08:30:58 -0400 Received: from mga11.intel.com (mga11.intel.com [192.55.52.93]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 61AAB692A8 for ; Fri, 6 May 2022 05:26:45 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1651840005; x=1683376005; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=TmJVw40nZyxu//7zocSUtg+Bql5vQ9H0HlIT57JgqHI=; b=m3tskn1+P3WGNmMdfjiRq5EefAZxozYY5L3gO25gN4iU6pxwToIlsCjB ZXYf8nGkhR01T8leXPtD4lotP76fK6+/kLXqeKx7qJOV9Jrcw+timDxAu iHfRfpzApjK7SRsYR8XShzB1IBZknWyz0jBNfn2ztsFzb4E4ylYHxWerP mLErNFjtBYFy+G61mswzJZ6eK59TYEiEKGAOATUFJsRBgIN1Fso8FZSle qtWczRCiqAwfI18WQFZhZw8u8e3nJxKgKmhZzd2z/CDcdATIp8hDenRi0 rp7WOUX3vNopDV4q3E/zKIp4xerSIjsV8K52hi/LVo5tBkrDspIC76yLp Q==; X-IronPort-AV: E=McAfee;i="6400,9594,10338"; a="266045846" X-IronPort-AV: E=Sophos;i="5.91,203,1647327600"; d="scan'208";a="266045846" Received: from fmsmga001.fm.intel.com ([10.253.24.23]) by fmsmga102.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 06 May 2022 05:26:45 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.91,203,1647327600"; d="scan'208";a="709441013" Received: from ahunter-desktop.fi.intel.com ([10.237.72.92]) by fmsmga001.fm.intel.com with ESMTP; 06 May 2022 05:26:43 -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 V2 16/23] perf intel-pt: Track sideband system-wide when needed Date: Fri, 6 May 2022 15:25:54 +0300 Message-Id: <20220506122601.367589-17-adrian.hunter@intel.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20220506122601.367589-1-adrian.hunter@intel.com> References: <20220506122601.367589-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 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 Jun 10 17:29:34 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 CEE92C433F5 for ; Fri, 6 May 2022 12:27:44 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1391882AbiEFMbY (ORCPT ); Fri, 6 May 2022 08:31:24 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:57732 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1391943AbiEFMa7 (ORCPT ); Fri, 6 May 2022 08:30:59 -0400 Received: from mga11.intel.com (mga11.intel.com [192.55.52.93]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 558B269722 for ; Fri, 6 May 2022 05:26:48 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1651840008; x=1683376008; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=Y5EgKsh2WB5MvpPw966XbtfHj+hrbISkveSnva9Ln2I=; b=MU3nC/bw8+SSwBM+Scx6zwP8ypvDdl6Ej5yFdtWiToZsinuD6AVzeTx5 zsb6lzz83211RIEcCd3Tz1OfeqvBp+SeyNHcB9FOdPHcVSs8S8dHreqq+ yFGnq2A58ZeYYBpB//e5cwneGdItJF0X7G+srNYO2KgbCcRNDoP1zRLoi I+jvyvpGg/N7nyYBDzWC3o+GNqLsCZzPGCTq/etqzrBxLOml5fAiWG44p 16RDKoR4LiV461x3TGlQcNRHnX2+vGBJqxI3MDUXGe72C60alAQB8Mxns Qw430ZrOYoPafSWBOQPRkm0lolBURa9tXtCdPLHbxSWJ0ujkcrGYjFVaK A==; X-IronPort-AV: E=McAfee;i="6400,9594,10338"; a="266045854" X-IronPort-AV: E=Sophos;i="5.91,203,1647327600"; d="scan'208";a="266045854" Received: from fmsmga001.fm.intel.com ([10.253.24.23]) by fmsmga102.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 06 May 2022 05:26:47 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.91,203,1647327600"; d="scan'208";a="709441048" Received: from ahunter-desktop.fi.intel.com ([10.237.72.92]) by fmsmga001.fm.intel.com with ESMTP; 06 May 2022 05:26:45 -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 V2 17/23] perf tools: Allow all_cpus to be a superset of user_requested_cpus Date: Fri, 6 May 2022 15:25:55 +0300 Message-Id: <20220506122601.367589-18-adrian.hunter@intel.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20220506122601.367589-1-adrian.hunter@intel.com> References: <20220506122601.367589-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 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 Jun 10 17:29:34 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 08AB7C433EF for ; Fri, 6 May 2022 12:27:48 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1391892AbiEFMb1 (ORCPT ); Fri, 6 May 2022 08:31:27 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:57752 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1391880AbiEFMbE (ORCPT ); Fri, 6 May 2022 08:31:04 -0400 Received: from mga11.intel.com (mga11.intel.com [192.55.52.93]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 7E656694AA for ; Fri, 6 May 2022 05:26:50 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1651840010; x=1683376010; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=uh4Kq6iIW5mKCEEXEWmMzTulSOzHnR5aLW4isav0UYQ=; b=F8qpceQtbyWzFrboqkvWpu1GCVQ1VXXYSRphVK5uLgIZPCkikZT7soTK JTl7vJhC9n/FtL12hoM/g/v/dlgdydPoN08vmbU/vb6lyGcVIcV1LU5qQ eN6Zv20e+/eSy74sui5UM6H0wk8rg4CC61oBjHUE5fiWIhIns7kzUDVr8 Xza82uB4ivRqcrsH5Rptenn02eF1zergVsoOZwZujla23crUg4hDxC8si 85TDYDHv9ddXbCUsljZiwZPGZJ86IteOn158yl2k/byHYIqujm7ZE5241 SddnBhKM74VdWIncMv+z7OaU9Jny15xuFpES6GsEy6A6EraUaHf7fKz1u g==; X-IronPort-AV: E=McAfee;i="6400,9594,10338"; a="266045860" X-IronPort-AV: E=Sophos;i="5.91,203,1647327600"; d="scan'208";a="266045860" Received: from fmsmga001.fm.intel.com ([10.253.24.23]) by fmsmga102.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 06 May 2022 05:26:50 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.91,203,1647327600"; d="scan'208";a="709441078" Received: from ahunter-desktop.fi.intel.com ([10.237.72.92]) by fmsmga001.fm.intel.com with ESMTP; 06 May 2022 05:26:48 -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 V2 18/23] libperf evlist: Allow mixing per-thread and per-cpu mmaps Date: Fri, 6 May 2022 15:25:56 +0300 Message-Id: <20220506122601.367589-19-adrian.hunter@intel.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20220506122601.367589-1-adrian.hunter@intel.com> References: <20220506122601.367589-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 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 Jun 10 17:29:34 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 66061C433EF for ; Fri, 6 May 2022 12:28:08 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1392010AbiEFMbq (ORCPT ); Fri, 6 May 2022 08:31:46 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:57488 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1391950AbiEFMbI (ORCPT ); Fri, 6 May 2022 08:31:08 -0400 Received: from mga11.intel.com (mga11.intel.com [192.55.52.93]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 263875D675 for ; Fri, 6 May 2022 05:26:53 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1651840013; x=1683376013; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=Yz2CwFQs/mBx7RXKM7G8o6j1K5jopm/r0dchqJjM3JY=; b=XIRUfTC8/pysunNhnhYE62NsMO4C7WM4xRPXfUq2kYW19cHFKY7WfUdz cG56XWh9qYnL/lmNaj33CJOEEzb0NzQ1Uo0qm6QgLwmF9JBTa1+GEOqX1 3nt0bUtcm5xVM1cymnjxJbAZRD2xvJQoo/RsaX3Wn3Zvz9WbZTJicZRMu E9wdFcw0ZCmkn8D3vm0DmJQOk03Jy/Liyd57RAHvewf/LxsGSYxNTlQls Xhs5Rwic/HViPaZ82r9B5EbOc4TOIDIq79nq+MRAKuNI91mCnlHxMjny3 zTDdPP5zP/7PVR6J0QElBJnySFzuWiIZrbC9HoDnmfROECXw67jjDsvYt A==; X-IronPort-AV: E=McAfee;i="6400,9594,10338"; a="266045866" X-IronPort-AV: E=Sophos;i="5.91,203,1647327600"; d="scan'208";a="266045866" Received: from fmsmga001.fm.intel.com ([10.253.24.23]) by fmsmga102.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 06 May 2022 05:26:52 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.91,203,1647327600"; d="scan'208";a="709441120" Received: from ahunter-desktop.fi.intel.com ([10.237.72.92]) by fmsmga001.fm.intel.com with ESMTP; 06 May 2022 05:26:50 -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 V2 19/23] libperf evlist: Check nr_mmaps is correct Date: Fri, 6 May 2022 15:25:57 +0300 Message-Id: <20220506122601.367589-20-adrian.hunter@intel.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20220506122601.367589-1-adrian.hunter@intel.com> References: <20220506122601.367589-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. Signed-off-by: Adrian Hunter Acked-by: Ian Rogers --- 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 Jun 10 17:29:34 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 187B0C433EF for ; Fri, 6 May 2022 12:28:41 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S232903AbiEFMcU (ORCPT ); Fri, 6 May 2022 08:32:20 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:58368 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1391957AbiEFMbM (ORCPT ); Fri, 6 May 2022 08:31:12 -0400 Received: from mga11.intel.com (mga11.intel.com [192.55.52.93]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 9480769284 for ; Fri, 6 May 2022 05:26:55 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1651840015; x=1683376015; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=w4CMvipiEcUSstUqaHus6Di+8xSduc6Q+s8XAdoq4aw=; b=ebO19Lub7pfeEWEvIadz4DzxWVY1z8m12eSrPfUTEUOIUcXZWwEdEdHl RhqaAjBgPRyEetIvLFltQTWfVMlFO0TkF00mlwZU/P4vIzCTJHhs1YAZe moxN0pKwngvb6yONHZ8EI0/9cuTdG/V5iEYxDY3nCHZo5NV2k4mD6ABSO LBrxHJLT2gxrBhM51WWay4WtJBE85mIo0dehS5cOIghlcBKzUAEP0ybIi B2ZTHlutVHTrmlCbI/Lb5mPZL0i+joeb4YhlSaDjRQXCkb6pAdJbJTcyj Se4SEuWtYvDrkNFNBApIgX0CkFTnLNGDDl8dqX+m6xSKT4fLnsynIrfLG A==; X-IronPort-AV: E=McAfee;i="6400,9594,10338"; a="266045869" X-IronPort-AV: E=Sophos;i="5.91,203,1647327600"; d="scan'208";a="266045869" Received: from fmsmga001.fm.intel.com ([10.253.24.23]) by fmsmga102.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 06 May 2022 05:26:55 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.91,203,1647327600"; d="scan'208";a="709441138" Received: from ahunter-desktop.fi.intel.com ([10.237.72.92]) by fmsmga001.fm.intel.com with ESMTP; 06 May 2022 05:26:53 -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 V2 20/23] perf stat: Add requires_cpu flag for uncore Date: Fri, 6 May 2022 15:25:58 +0300 Message-Id: <20220506122601.367589-21-adrian.hunter@intel.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20220506122601.367589-1-adrian.hunter@intel.com> References: <20220506122601.367589-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 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 1b96636df01e..c049533f74e4 100644 --- a/tools/perf/builtin-stat.c +++ b/tools/perf/builtin-stat.c @@ -385,9 +385,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 @@ -2264,7 +2261,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 d38722560e80..12346293706b 100644 --- a/tools/perf/util/evsel.c +++ b/tools/perf/util/evsel.c @@ -382,6 +382,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 937f6c9434a2..5227174099b5 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 Jun 10 17:29:34 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 2F0DFC4332F for ; Fri, 6 May 2022 12:28:33 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1392026AbiEFMcM (ORCPT ); Fri, 6 May 2022 08:32:12 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:59334 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1391970AbiEFMbO (ORCPT ); Fri, 6 May 2022 08:31:14 -0400 Received: from mga11.intel.com (mga11.intel.com [192.55.52.93]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 6082469CD5 for ; Fri, 6 May 2022 05:26:58 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1651840018; x=1683376018; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=liQq9gf7AarOvqwtlQThYv0FU3CLHluG+yZPknBXwcQ=; b=bR+D+w7zgBCaHh7LKLvyFqIuK9XFCCN0Lf25jBC3VlYTrWg0xNfR0D6y Xg2sYGrQaPTRGnI7KH6LumYYde+aBxnrVsgWJBDWlmIBV6AA6ZtFBV+Zk UicVWT/mW4YqOynFbB6NtSxhagepLfB3WpIDp3y5zBLv5/k76H0PsppUP A4yjzWLeTdspXkaqkB1NYOin+rNIVrrE30J+wSmYllIM3tAVu1tubp7/B JhXeiVmmLdxey9ea19D2UEaR4Nqxwypqjm9B/dQzpXnZR6cz2B2FS2oy/ CragwiJxmcyCBUpn0oBW9G2qDrR0JYQXWK+4+plfTIt54u0CQawmW60y4 w==; X-IronPort-AV: E=McAfee;i="6400,9594,10338"; a="266045877" X-IronPort-AV: E=Sophos;i="5.91,203,1647327600"; d="scan'208";a="266045877" Received: from fmsmga001.fm.intel.com ([10.253.24.23]) by fmsmga102.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 06 May 2022 05:26:58 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.91,203,1647327600"; d="scan'208";a="709441155" Received: from ahunter-desktop.fi.intel.com ([10.237.72.92]) by fmsmga001.fm.intel.com with ESMTP; 06 May 2022 05:26:55 -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 V2 21/23] libperf evsel: Add comments for booleans Date: Fri, 6 May 2022 15:25:59 +0300 Message-Id: <20220506122601.367589-22-adrian.hunter@intel.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20220506122601.367589-1-adrian.hunter@intel.com> References: <20220506122601.367589-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 Signed-off-by: Adrian Hunter --- tools/lib/perf/include/internal/evsel.h | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/tools/lib/perf/include/internal/evsel.h b/tools/lib/perf/inclu= de/internal/evsel.h index 77fbb8b97e5c..cc8f1ba790bd 100644 --- a/tools/lib/perf/include/internal/evsel.h +++ b/tools/lib/perf/include/internal/evsel.h @@ -49,7 +49,16 @@ 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 not override + * this events own_cpus, which 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 Jun 10 17:29:34 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 5B924C433EF for ; Fri, 6 May 2022 12:28:26 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S240704AbiEFMcE (ORCPT ); Fri, 6 May 2022 08:32:04 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:59490 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1391936AbiEFMbW (ORCPT ); Fri, 6 May 2022 08:31:22 -0400 Received: from mga11.intel.com (mga11.intel.com [192.55.52.93]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id C569469CE2 for ; Fri, 6 May 2022 05:27:00 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1651840020; x=1683376020; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=QTtoB8qJmnTAP7gdy08K2/84cmvK2f3oN4KlLARHgnY=; b=TkirqcuHakRBCdZtJzJcjoEulZpe/9QGP284wrGoVSks+223pM+ll2fO PmPFzDPqndjCuCAsXU/cMeUxfYyp2lsBGTcDO7yvtKR60lGYE+V92nzV0 Z4o1LUj+1A5VG4Ha2Wr9KnBcbwH0M8UxHdoD27oIRKXxE33+tiCnxVGhw aX17w0xu1LU8AOuXjJMdiK4EiqxHiUsG6+IQMaQFz7Huk1YGrG7SfkbPb Jg7nD5/s7VIhHq3S3eYpXhhlPT+RWSYkSWINgGdmxI/O7ciX6shwDZFpM RFkzEdYz1NqsEK+GsOzOOWwd4SqcNlN6I2InXQwyOVMpBGQJIAPm4LGNL Q==; X-IronPort-AV: E=McAfee;i="6400,9594,10338"; a="266045881" X-IronPort-AV: E=Sophos;i="5.91,203,1647327600"; d="scan'208";a="266045881" Received: from fmsmga001.fm.intel.com ([10.253.24.23]) by fmsmga102.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 06 May 2022 05:27:00 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.91,203,1647327600"; d="scan'208";a="709441172" Received: from ahunter-desktop.fi.intel.com ([10.237.72.92]) by fmsmga001.fm.intel.com with ESMTP; 06 May 2022 05:26:58 -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 V2 22/23] perf tools: Allow system-wide events to keep their own CPUs Date: Fri, 6 May 2022 15:26:00 +0300 Message-Id: <20220506122601.367589-23-adrian.hunter@intel.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20220506122601.367589-1-adrian.hunter@intel.com> References: <20220506122601.367589-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 Signed-off-by: Adrian Hunter Acked-by: Namhyung Kim --- 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 Jun 10 17:29:34 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 B0A2EC433F5 for ; Fri, 6 May 2022 12:28:15 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1391949AbiEFMb4 (ORCPT ); Fri, 6 May 2022 08:31:56 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:57544 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1391975AbiEFMb0 (ORCPT ); Fri, 6 May 2022 08:31:26 -0400 Received: from mga11.intel.com (mga11.intel.com [192.55.52.93]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 4F1E769CF7 for ; Fri, 6 May 2022 05:27:03 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1651840023; x=1683376023; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=5ZmIqJMdjmQT6Lr5XLTTSb2o3piQNy4WM6RC+APymAA=; b=R7cOQ1w5nFHuEZ6yCyx5Or3k3inO+FS5CgBuA7+Y4D8ttpO9a+MkViMr amf9yR9MPnEurypunp5soCSuM/UboIFEAoFYA2fU79CmTDKKdF3ONfHwD 41CR5nHhpQIVXWUahtgY/bRtxnjWyvH8u8ovcWCyf9YW3eX77oUwplTh8 H8Zbn0pZ90R5NQgzT6xoTug/gYtrCCY86XlD4VDRoB+x2iTGfLW1ovNCA vxFdxNIjXLKbif8Z1uWzwMAES5bf3wT8WP2ktyf3jpNpb3xgNAr7i3cu+ SjwFvcGQxsawoH4B/z9ojVKTnob9d5gu1SUmRQajzzqP4XSpqHtwZpgNk A==; X-IronPort-AV: E=McAfee;i="6400,9594,10338"; a="266045889" X-IronPort-AV: E=Sophos;i="5.91,203,1647327600"; d="scan'208";a="266045889" Received: from fmsmga001.fm.intel.com ([10.253.24.23]) by fmsmga102.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 06 May 2022 05:27:03 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.91,203,1647327600"; d="scan'208";a="709441213" Received: from ahunter-desktop.fi.intel.com ([10.237.72.92]) by fmsmga001.fm.intel.com with ESMTP; 06 May 2022 05:27:00 -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 V2 23/23] perf tools: Allow system-wide events to keep their own threads Date: Fri, 6 May 2022 15:26:01 +0300 Message-Id: <20220506122601.367589-24-adrian.hunter@intel.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20220506122601.367589-1-adrian.hunter@intel.com> References: <20220506122601.367589-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 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