From nobody Fri May 15 09:17:46 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 5A6C5C433F5 for ; Thu, 5 May 2022 16:56:57 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1382170AbiEERAe (ORCPT ); Thu, 5 May 2022 13:00:34 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:48486 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1351619AbiEERAZ (ORCPT ); Thu, 5 May 2022 13:00:25 -0400 Received: from mga17.intel.com (mga17.intel.com [192.55.52.151]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 28A2A4E3A2 for ; Thu, 5 May 2022 09:56: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=1651769805; x=1683305805; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=Gidd+fKa1j+WmPIU8bQdjxMylZvp+S5jUstGmkaU0Bk=; b=jHOVWQdOZ8dqLTTd9yVi5lIjvDoYCvuKC8HF7zAgsSjOYCOulxCslnB/ GNeKtoLU3vBmUmqy1QZegwaQEnRDNGAXUD0MLt/HmZU4Ldhv1lDshbQ/w GR6sDG1vDJfmrsecDgSIJuSgWHecX3kWyazVSZoDptMaX2evnFjEOZqPZ iO0sjjn4ktRZREc7IatTnCmLQXMlv0DcZbDsjFvIhPAUgzZWna3ZyXb50 CypXEGhwlsrbXe/gsPVIEAPsj9dAYUgWpzSHYJF+3P0hqvpX4Co2kZmvu bcScHm/Ct6WXZERl5NKNd4MxlGWsqB7c4r9XV19ZH3zARwfvXH5vHe3Wk A==; X-IronPort-AV: E=McAfee;i="6400,9594,10338"; a="248717802" X-IronPort-AV: E=Sophos;i="5.91,201,1647327600"; d="scan'208";a="248717802" Received: from fmsmga001.fm.intel.com ([10.253.24.23]) by fmsmga107.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 05 May 2022 09:56:45 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.91,201,1647327600"; d="scan'208";a="709032718" Received: from ahunter-desktop.fi.intel.com ([10.237.72.92]) by fmsmga001.fm.intel.com with ESMTP; 05 May 2022 09:56:42 -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 V1 01/23] perf intel-pt: Add a test for system-wide side band Date: Thu, 5 May 2022 19:56:17 +0300 Message-Id: <20220505165639.361733-2-adrian.hunter@intel.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20220505165639.361733-1-adrian.hunter@intel.com> References: <20220505165639.361733-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. Signed-off-by: Adrian Hunter Tested-by: Ian Rogers --- tools/perf/tests/shell/test_intel_pt.sh | 71 +++++++++++++++++++++++++ 1 file changed, 71 insertions(+) create mode 100755 tools/perf/tests/shell/test_intel_pt.sh diff --git a/tools/perf/tests/shell/test_intel_pt.sh b/tools/perf/tests/she= ll/test_intel_pt.sh new file mode 100755 index 000000000000..a3298643884d --- /dev/null +++ b/tools/perf/tests/shell/test_intel_pt.sh @@ -0,0 +1,71 @@ +#!/bin/sh +# Miscellaneous Intel PT testing +# SPDX-License-Identifier: GPL-2.0 + +set -e + +# Skip if no Intel PT +perf list | grep -q 'intel_pt//' || exit 2 + +skip_cnt=3D0 +ok_cnt=3D0 +err_cnt=3D0 + +tmpfile=3D`mktemp` +perfdatafile=3D`mktemp` + +can_cpu_wide() +{ + perf record -o ${tmpfile} -B -N --no-bpf-event -e dummy:u -C $1 true 2>&1= >/dev/null || return 2 + return 0 +} + +test_system_wide_side_band() +{ + # Need CPU 0 and CPU 1 + can_cpu_wide 0 || return $? + can_cpu_wide 1 || return $? + + # Record on CPU 0 a task running on CPU 1 + perf record -B -N --no-bpf-event -o ${perfdatafile} -e intel_pt//u -C 0 -= - taskset --cpu-list 1 uname + + # Should get MMAP events from CPU 1 because they can be needed to decode + mmap_cnt=3D`perf script -i ${perfdatafile} --no-itrace --show-mmap-events= -C 1 2>/dev/null | grep MMAP | wc -l` + + if [ ${mmap_cnt} -gt 0 ] ; then + return 0 + fi + + echo "Failed to record MMAP events on CPU 1 when tracing CPU 0" + return 1 +} + +count_result() +{ + if [ $1 -eq 2 ] ; then + skip_cnt=3D`expr ${skip_cnt} \+ 1` + return + fi + if [ $1 -eq 0 ] ; then + ok_cnt=3D`expr ${ok_cnt} \+ 1` + return + fi + err_cnt=3D`expr ${err_cnt} \+ 1` +} + +test_system_wide_side_band + +count_result $? + +rm -f ${tmpfile} +rm -f ${perfdatafile} + +if [ ${err_cnt} -gt 0 ] ; then + exit 1 +fi + +if [ ${ok_cnt} -gt 0 ] ; then + exit 0 +fi + +exit 2 --=20 2.25.1 From nobody Fri May 15 09:17:46 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 508B8C433F5 for ; Thu, 5 May 2022 16:57:02 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1382179AbiEERAj (ORCPT ); Thu, 5 May 2022 13:00:39 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:48508 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229750AbiEERA1 (ORCPT ); Thu, 5 May 2022 13:00:27 -0400 Received: from mga17.intel.com (mga17.intel.com [192.55.52.151]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id A533E5676C for ; Thu, 5 May 2022 09:56:47 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1651769807; x=1683305807; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=cl6vtEwsBomqQSxnvICeUc0UZLkreCqZW5pix9QQYGo=; b=GR6m1kxh74uZp4pRYuVTMOrddobPZL+9AdlQlcoXuBTwlznvABOmU3kV UvfrxyRR49fke85AEQR1i5xSVf5+0Yu+fD5rlxJY/faQ9HV61Rdhqyl2M 07IWYNT0p64DVPRFkOeIDRB8s4knGIqsSSTUOjeKBt0nAVKQ2bVvLbLCb WBZRl90Bh06r3R9VTO1DGdqKE0ZJov2VhXtGCM0weA5RAsLMJDaKlxa4f qejHdJ2YszDXIKmdivcXsuyRpVdDOF+wbBEZHogcTSo18vRoVtAm0B1GP oxlef5jj6ijU/cztm+ufd2rpE6vrYAiXmwRUVglcfNRKjSLgT1fdJMNC2 A==; X-IronPort-AV: E=McAfee;i="6400,9594,10338"; a="248717807" X-IronPort-AV: E=Sophos;i="5.91,201,1647327600"; d="scan'208";a="248717807" Received: from fmsmga001.fm.intel.com ([10.253.24.23]) by fmsmga107.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 05 May 2022 09:56:47 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.91,201,1647327600"; d="scan'208";a="709032733" Received: from ahunter-desktop.fi.intel.com ([10.237.72.92]) by fmsmga001.fm.intel.com with ESMTP; 05 May 2022 09:56: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 V1 02/23] libperf evsel: Add perf_evsel__enable_thread() Date: Thu, 5 May 2022 19:56:18 +0300 Message-Id: <20220505165639.361733-3-adrian.hunter@intel.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20220505165639.361733-1-adrian.hunter@intel.com> References: <20220505165639.361733-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 --- tools/lib/perf/evsel.c | 10 ++++++++++ tools/lib/perf/include/perf/evsel.h | 1 + 2 files changed, 11 insertions(+) diff --git a/tools/lib/perf/evsel.c b/tools/lib/perf/evsel.c index 20ae9f5f8b30..dcc928dd25f8 100644 --- a/tools/lib/perf/evsel.c +++ b/tools/lib/perf/evsel.c @@ -360,6 +360,16 @@ 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) +{ + int err =3D 0; + int idx; + + for (idx =3D 0; idx < xyarray__max_x(evsel->fd) && !err; idx++) + err =3D perf_evsel__ioctl(evsel, PERF_EVENT_IOC_ENABLE, NULL, idx, threa= d); + return err; +} + 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 Fri May 15 09:17:46 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 25D31C433F5 for ; Thu, 5 May 2022 16:57:07 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1382184AbiEERAp (ORCPT ); Thu, 5 May 2022 13:00:45 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:48544 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1382158AbiEERAc (ORCPT ); Thu, 5 May 2022 13:00:32 -0400 Received: from mga17.intel.com (mga17.intel.com [192.55.52.151]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 133B1580D7 for ; Thu, 5 May 2022 09:56: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=1651769810; x=1683305810; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=96NhVcF681Cf6EUdn2T2JGsKemHJ0OT0snZUFHPMbgc=; b=eyF2gEEL+Sa0/PPaq9/RA8A9b04v1Rny/We6SxiJDe8GLb52qX6ksc89 /GciW3WD1Bx1gcJpGI3NFHBtbhOPakU4bQGDBNkC9sph9kJ+LEEra8T1J NnzIzAT4QgqtMW8Di5LLiJT6enMmjLCqAr1vfeqFpaTOAjgrB0AHlykhH lHbswMAdFm+/kaxW6pv2kvC4xfDQ7aXimDTHEDVd0fV1aCs/AUMHRMbdz 2WsKQAbh8S456qnovSNfbi/XKufC5ny+rGFuDOh/mVDFmUSSCtDVD5l9Y jQFUKKjHpxnJKnUYOAbAYgoHmCRPxlGFdJlxkpkRmJaGOmd7NM7LV6M5C Q==; X-IronPort-AV: E=McAfee;i="6400,9594,10338"; a="248717812" X-IronPort-AV: E=Sophos;i="5.91,201,1647327600"; d="scan'208";a="248717812" Received: from fmsmga001.fm.intel.com ([10.253.24.23]) by fmsmga107.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 05 May 2022 09:56:50 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.91,201,1647327600"; d="scan'208";a="709032762" Received: from ahunter-desktop.fi.intel.com ([10.237.72.92]) by fmsmga001.fm.intel.com with ESMTP; 05 May 2022 09:56:47 -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 V1 03/23] perf evlist: Use libperf functions in evlist__enable_event_idx() Date: Thu, 5 May 2022 19:56:19 +0300 Message-Id: <20220505165639.361733-4-adrian.hunter@intel.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20220505165639.361733-1-adrian.hunter@intel.com> References: <20220505165639.361733-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. Signed-off-by: Adrian Hunter Acked-by: Ian Rogers --- 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 Fri May 15 09:17:46 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 186C3C433F5 for ; Thu, 5 May 2022 16:57:17 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1382212AbiEERAy (ORCPT ); Thu, 5 May 2022 13:00:54 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:48654 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1382181AbiEERAf (ORCPT ); Thu, 5 May 2022 13:00:35 -0400 Received: from mga17.intel.com (mga17.intel.com [192.55.52.151]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 055755BD23 for ; Thu, 5 May 2022 09:56:54 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1651769814; x=1683305814; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=k3Ox2DTLOs/z08IyVX3jYaM/ZpEJfS7KJmWeGCum7MI=; b=h7aMKMyMYpbEkbKDKuQvBv7JKg4lpFVxOKIiX6CdogVHlHqS0Pei5mD6 zrIvKKuCVatv1T8hf9i+XFUZ2VZJYr68bmK5EevC0QF2NkqyHT+pXdx6N lHo+VrTaJ5/D1svHbNnOP7QONgfcr1tKJIhnUZOuA0Pv48O++lIUQCNq9 MZCWPDzGo2KEtl+r/Zhee9ggz4lsKlq39xlOfAXmmT9SP1qLGQIm/kGku SD39rbgBcCA/O44okIVVP0zWtp6KeFtydCCQHWVGsi2I0cfqxVwI+0ADj yj3iBX5C1nuIz1bMElHaKejX9q5xaom/YC1kwG9Myt3XOTIRm8rlG3JxI A==; X-IronPort-AV: E=McAfee;i="6400,9594,10338"; a="248717818" X-IronPort-AV: E=Sophos;i="5.91,201,1647327600"; d="scan'208";a="248717818" Received: from fmsmga001.fm.intel.com ([10.253.24.23]) by fmsmga107.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 05 May 2022 09:56:53 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.91,201,1647327600"; d="scan'208";a="709032768" Received: from ahunter-desktop.fi.intel.com ([10.237.72.92]) by fmsmga001.fm.intel.com with ESMTP; 05 May 2022 09:56: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 V1 04/23] perf auxtrace: Move evlist__enable_event_idx() to auxtrace.c Date: Thu, 5 May 2022 19:56:20 +0300 Message-Id: <20220505165639.361733-5-adrian.hunter@intel.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20220505165639.361733-1-adrian.hunter@intel.com> References: <20220505165639.361733-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. Signed-off-by: Adrian Hunter Acked-by: Ian Rogers --- 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 Fri May 15 09:17:46 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 B457AC433EF for ; Thu, 5 May 2022 16:57:13 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S245690AbiEERAt (ORCPT ); Thu, 5 May 2022 13:00:49 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:48678 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1382188AbiEERAg (ORCPT ); Thu, 5 May 2022 13:00:36 -0400 Received: from mga17.intel.com (mga17.intel.com [192.55.52.151]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 2B6765C84B for ; Thu, 5 May 2022 09:56:56 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1651769816; x=1683305816; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=MmgLT3++XhqTWVdBdh5S0YpkjcFM/rxG/d0fFbdGMr8=; b=kXc8ehNJQWg9I47COANY75Ai2RjG9NyfbiHbplZYlhzf2neqsAaQS6BL z3V3GHIXADBsdcwsSLG6y0S6Y6Ex5fL90p+YwVm4Ebz7T+Qarp+4ZZ3Sh mM4vn34qc7MUtnE809PQgynDUl6NcZ2jSpQi4Rclc2l+W7an3x3EywtEx 6DnuAzzk0YPw8Qit4Iz9DeOoPmlK7Ov1W4igj1zgeVv+5PTGSI7aQS50H Ypg8M3yAGa8bLGtfeKVRGXYJkc5D+jdveP/s3DfmL7JjYk4kOZ88vkrE+ EuuqNqKNwlMousz8LQNmZCTeYtB8QR78xY3Cc+YDklChriPYosmN8MK5I w==; X-IronPort-AV: E=McAfee;i="6400,9594,10338"; a="248717823" X-IronPort-AV: E=Sophos;i="5.91,201,1647327600"; d="scan'208";a="248717823" Received: from fmsmga001.fm.intel.com ([10.253.24.23]) by fmsmga107.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 05 May 2022 09:56:56 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.91,201,1647327600"; d="scan'208";a="709032781" Received: from ahunter-desktop.fi.intel.com ([10.237.72.92]) by fmsmga001.fm.intel.com with ESMTP; 05 May 2022 09:56: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 V1 05/23] perf auxtrace: Do not mix up mmap idx Date: Thu, 5 May 2022 19:56:21 +0300 Message-Id: <20220505165639.361733-6-adrian.hunter@intel.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20220505165639.361733-1-adrian.hunter@intel.com> References: <20220505165639.361733-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. Signed-off-by: Adrian Hunter Acked-by: Ian Rogers --- 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 Fri May 15 09:17:46 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 23A42C433EF for ; Thu, 5 May 2022 16:57:27 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1382195AbiEERBE (ORCPT ); Thu, 5 May 2022 13:01:04 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:48870 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1382189AbiEERAq (ORCPT ); Thu, 5 May 2022 13:00:46 -0400 Received: from mga17.intel.com (mga17.intel.com [192.55.52.151]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id C1F2D5A17E for ; Thu, 5 May 2022 09:56: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=1651769818; x=1683305818; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=JeksS6bnKFmwHzFH4xpgce6NWCYiDTaFYm7w7oziyGI=; b=ke9ytB17P8mLwzwrPyiZlqPgKeIT2sWOvfEf8Ffs1TGbw5ojjwCmbMBJ AQddAse2d3HSxOhxHn1LcRZalmoptGizBF35TRJjhKuUskBtR11dgYc5h I0HSxoCsnBwhV3naZzM9HKFiBsjzv5z/1Qi6975jZj8m2pmoaLwL74Reu 1ocCt4LfolhaTS257vINvboqHICeREtmDtqEYTr4xyLFLyjb6ty8UBZ3v k0QpxaN3euaWLkuR+Me9dalwHu+vjxcACyAxROMAphcqxJJEvX0lRNlTm cDAjht7qn17B+TLFUyDWKLQLHSN1MHT4qANYVeVPpKADZiNwG5Q4X9X/d g==; X-IronPort-AV: E=McAfee;i="6400,9594,10338"; a="248717830" X-IronPort-AV: E=Sophos;i="5.91,201,1647327600"; d="scan'208";a="248717830" Received: from fmsmga001.fm.intel.com ([10.253.24.23]) by fmsmga107.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 05 May 2022 09:56:58 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.91,201,1647327600"; d="scan'208";a="709032795" Received: from ahunter-desktop.fi.intel.com ([10.237.72.92]) by fmsmga001.fm.intel.com with ESMTP; 05 May 2022 09:56:56 -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 V1 06/23] libperf evlist: Remove ->idx() per_cpu parameter Date: Thu, 5 May 2022 19:56:22 +0300 Message-Id: <20220505165639.361733-7-adrian.hunter@intel.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20220505165639.361733-1-adrian.hunter@intel.com> References: <20220505165639.361733-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. Signed-off-by: Adrian Hunter Acked-by: Ian Rogers --- 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 a09315538a30..6d0fa7b2f417 100644 --- a/tools/lib/perf/evlist.c +++ b/tools/lib/perf/evlist.c @@ -517,7 +517,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)) @@ -544,7 +544,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 Fri May 15 09:17:46 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 CD298C433EF for ; Thu, 5 May 2022 16:57:30 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1382238AbiEERBI (ORCPT ); Thu, 5 May 2022 13:01:08 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:48886 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1382153AbiEERAq (ORCPT ); Thu, 5 May 2022 13:00:46 -0400 Received: from mga17.intel.com (mga17.intel.com [192.55.52.151]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 396755BD30 for ; Thu, 5 May 2022 09:57:01 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1651769821; x=1683305821; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=OFxZCaU099DWCjXsHRUPf+lvv9DZP9KOIRECSKOskcM=; b=XR6MzhZ1dyP6lrJi9iYELgvs3WZLI/JwW7/tDhC43i4wVbDYS4JFqnre KjxzDhcDPMPPDfqAoVmyg2LUveN7shvR9b/V0qOYigU/XPCrNvvsY35Gb lD9NZsDNhudKEfhpJ5P5cQEeUXrFnL2QE5yhDK8KBsPkPlh5A/1whAu0Z 14LIcmFr8Ii08y3YBvGl14srEW52q1kP5uTwJynx6JPzhM1oFUIQqxuA1 jme8O9pmWqLX7DaW/EyVLpZ7MUJJci3fa9bVB+T7/mnbTvxBNVja7sT46 K5Rq2SeB5KXuwGeAovXnIKeJwAE7MwTc7hHhZm4Gob6ZHL8PKKbS3nNM2 w==; X-IronPort-AV: E=McAfee;i="6400,9594,10338"; a="248717839" X-IronPort-AV: E=Sophos;i="5.91,201,1647327600"; d="scan'208";a="248717839" Received: from fmsmga001.fm.intel.com ([10.253.24.23]) by fmsmga107.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 05 May 2022 09:57:01 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.91,201,1647327600"; d="scan'208";a="709032813" Received: from ahunter-desktop.fi.intel.com ([10.237.72.92]) by fmsmga001.fm.intel.com with ESMTP; 05 May 2022 09:56: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 V1 07/23] libperf evlist: Move ->idx() into mmap_per_evsel() Date: Thu, 5 May 2022 19:56:23 +0300 Message-Id: <20220505165639.361733-8-adrian.hunter@intel.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20220505165639.361733-1-adrian.hunter@intel.com> References: <20220505165639.361733-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. Signed-off-by: Adrian Hunter Acked-by: Ian Rogers --- 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 6d0fa7b2f417..673c267f900e 100644 --- a/tools/lib/perf/evlist.c +++ b/tools/lib/perf/evlist.c @@ -474,6 +474,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 @@ -516,9 +519,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; @@ -543,9 +543,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 Fri May 15 09:17:46 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 7A997C433F5 for ; Thu, 5 May 2022 16:57:37 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1382214AbiEERBO (ORCPT ); Thu, 5 May 2022 13:01:14 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:48914 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1382196AbiEERBD (ORCPT ); Thu, 5 May 2022 13:01:03 -0400 Received: from mga17.intel.com (mga17.intel.com [192.55.52.151]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 803FA5C872 for ; Thu, 5 May 2022 09:57:08 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1651769828; x=1683305828; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=AGweQIuzQjj1sqxKQzd0Iobp0kSixyJ9delafznfDK8=; b=XRVpcXojvX+PrDGXlhYj8oMiJ3LWvPimohl0d9A8E3bd7AnfvcMEH5M+ JlBbUMDEv+WYwb+X9TF3TX8W5onzzfkvF2ROOwyeFmUWmpjaOQKKLmNZX Eh8BId8Kr+RoOp/BbjZMQ8+z8TLlOyOrPEwSCz0Z+by7zUKdP2o5c4fKP NS+iNoPm5QnqfgvyQggGTf2qEwFVk5CsPi9JrxWvLBgVZaY3WxkvAMosI 2mM4jWY1M6Lyc/F5X93uBz7J9RUnxJ9PgU8Qk+qZi+kRsWt81BF1sVTbi /BYcc8BCO2w5W2t6qROio+qXgf4sKf0XjZxw6VPYQpUaXLKBcr3w8YHZ3 Q==; X-IronPort-AV: E=McAfee;i="6400,9594,10338"; a="248717885" X-IronPort-AV: E=Sophos;i="5.91,201,1647327600"; d="scan'208";a="248717885" Received: from fmsmga001.fm.intel.com ([10.253.24.23]) by fmsmga107.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 05 May 2022 09:57:03 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.91,201,1647327600"; d="scan'208";a="709032823" Received: from ahunter-desktop.fi.intel.com ([10.237.72.92]) by fmsmga001.fm.intel.com with ESMTP; 05 May 2022 09:57:01 -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 V1 08/23] libperf evlist: Add evsel as a parameter to ->idx() Date: Thu, 5 May 2022 19:56:24 +0300 Message-Id: <20220505165639.361733-9-adrian.hunter@intel.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20220505165639.361733-1-adrian.hunter@intel.com> References: <20220505165639.361733-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. Signed-off-by: Adrian Hunter Acked-by: Ian Rogers --- 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 673c267f900e..ad04da81c367 100644 --- a/tools/lib/perf/evlist.c +++ b/tools/lib/perf/evlist.c @@ -475,7 +475,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 Fri May 15 09:17:46 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 42DA4C433EF for ; Thu, 5 May 2022 16:57:47 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1382223AbiEERBY (ORCPT ); Thu, 5 May 2022 13:01:24 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:49280 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1382290AbiEERBF (ORCPT ); Thu, 5 May 2022 13:01:05 -0400 Received: from mga17.intel.com (mga17.intel.com [192.55.52.151]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 0FFF65D1BB for ; Thu, 5 May 2022 09:57: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=1651769843; x=1683305843; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=eX2ACS3WuhZJh3E7Z+BEmTb/GkO8KXR51sXFaeopJsU=; b=BR8dbMhDur472iAJTbTqTX2XJAoSRYY1zKgE/c1AJpBZh4OY3NgIb09s l9Odi6daCkB4Sv2aMrx7+Osd77VDsWmZqHm5dced8lUI0bMdCbxd7enev SpBXFId4FnDJgLyNvkqv/gJbIM6B779AaKtrc9xR6iBDRbMcJUm14HsrO rllgLhuYccCxriSf1q2RWlF5GnxypfDWOEZxU+pW0LoL2OdxXHHOqlAe2 iHDaewYpLXvKzMIiKPID/OPBEiDzb8LQQ4An+jBgnI/zgalbmLEH1kphb OEV+WMS3pIT/B1ZmG6t5xl7MQ1rdaXIfMZ2wPtOKrotta0qMqI8YPrkaB g==; X-IronPort-AV: E=McAfee;i="6400,9594,10338"; a="248717937" X-IronPort-AV: E=Sophos;i="5.91,201,1647327600"; d="scan'208";a="248717937" Received: from fmsmga001.fm.intel.com ([10.253.24.23]) by fmsmga107.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 05 May 2022 09:57:06 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.91,201,1647327600"; d="scan'208";a="709032831" Received: from ahunter-desktop.fi.intel.com ([10.237.72.92]) by fmsmga001.fm.intel.com with ESMTP; 05 May 2022 09:57:03 -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 V1 09/23] perf auxtrace: Record whether an auxtrace mmap is needed Date: Thu, 5 May 2022 19:56:25 +0300 Message-Id: <20220505165639.361733-10-adrian.hunter@intel.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20220505165639.361733-1-adrian.hunter@intel.com> References: <20220505165639.361733-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. Signed-off-by: Adrian Hunter Acked-by: Ian Rogers --- 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 Fri May 15 09:17:46 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 A9F98C433F5 for ; Thu, 5 May 2022 16:57:51 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S229814AbiEERB1 (ORCPT ); Thu, 5 May 2022 13:01:27 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:49252 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1382230AbiEERBG (ORCPT ); Thu, 5 May 2022 13:01:06 -0400 Received: from mga17.intel.com (mga17.intel.com [192.55.52.151]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id E5C6F5676C for ; Thu, 5 May 2022 09:57:26 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1651769847; x=1683305847; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=MT4CFH20WJ28ta3RYMreZTGXCj2J/KVd92odVmfc81Y=; b=jThMzacE4xo2kkSYoV4xxR3E3DfZmXcGoptOKec8j5/HIbI9523gmNqH KoUY3EvF9mzs0ybA6k9hVIk09vu4BwLCFkQFI7xogn7g+FyggMxEtQIjK JDAJ+pe/a+gIYhTvtX3g1B15A2XuSsqFMH1HaU+voMhsqjhnIYXi7Ee+B AEau0i2zhFFzBlXmfMfS7hr14pRQB012ZOt1UMz7TUlNtdtPpYmbfw6Te TN5Cj7ynRpPYDCUeQU8NzHqlecjs0iJAvTL0wM9NKktxYeUtVYPiQTlRa YT8F04BQJXqYW3aKmGwUue7GiqZ18OURmAB3hv4FRigMy5RJeJ4EfHDM/ w==; X-IronPort-AV: E=McAfee;i="6400,9594,10338"; a="248717984" X-IronPort-AV: E=Sophos;i="5.91,201,1647327600"; d="scan'208";a="248717984" Received: from fmsmga001.fm.intel.com ([10.253.24.23]) by fmsmga107.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 05 May 2022 09:57:08 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.91,201,1647327600"; d="scan'208";a="709032842" Received: from ahunter-desktop.fi.intel.com ([10.237.72.92]) by fmsmga001.fm.intel.com with ESMTP; 05 May 2022 09:57:06 -0700 From: Adrian Hunter To: Arnaldo Carvalho de Melo Cc: Jiri Olsa , Ian Rogers , Alexey Bayduraev , Namhyung Kim , Leo Yan , linux-kernel@vger.kernel.org Subject: [PATCH V1 10/23] perf auxtrace: Add mmap_needed to auxtrace_mmap_params Date: Thu, 5 May 2022 19:56:26 +0300 Message-Id: <20220505165639.361733-11-adrian.hunter@intel.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20220505165639.361733-1-adrian.hunter@intel.com> References: <20220505165639.361733-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 | 7 +++++-- tools/perf/util/evlist.c | 5 +++-- tools/perf/util/mmap.c | 1 + 4 files changed, 17 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..4e715e2d9291 100644 --- a/tools/perf/util/auxtrace.h +++ b/tools/perf/util/auxtrace.h @@ -353,6 +353,7 @@ struct auxtrace_mmap_params { int prot; int idx; pid_t tid; + bool mmap_needed; struct perf_cpu cpu; }; =20 @@ -490,7 +491,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 +865,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 Fri May 15 09:17:46 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 CC88EC433F5 for ; Thu, 5 May 2022 16:58:00 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1382340AbiEERBe (ORCPT ); Thu, 5 May 2022 13:01:34 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:49598 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1382342AbiEERBM (ORCPT ); Thu, 5 May 2022 13:01:12 -0400 Received: from mga17.intel.com (mga17.intel.com [192.55.52.151]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 0F9A95C87A for ; Thu, 5 May 2022 09:57:31 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1651769852; x=1683305852; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=UpgVFgUE2PaQffkjiMSXUxg1tvHVUR9x+gRJXm4AnpQ=; b=JP2QFuVxzmAkHtofeknsSQITcDRfAg8ED57KeALUf32nMFYFCCOjT8nK zSuAiqjjEq/SyjUafexfNIV8igYDl6h/fgmnRFnxkBH1eCCD0L09zABgZ VrOtkxi9DFefUSCkITTgx66EbK6o78xrldMIREKnzwjvo2PLR7Pw4WzIk CZSMZ7A2ts5lRedC3z+fIKKo1kI/8VodW87jj/4Ok9sYa7yp3ZBs362g6 ihnBL0i5Av/K7PwWKQBvrlo6BWx34Y6AFborkRfm2xqR8XvZtNeoCsva+ fGB2dtWD6qo52UdCgdEAgExEdo/YiR8OI7q+mO5LkcZhQpVTtr9sP033G Q==; X-IronPort-AV: E=McAfee;i="6400,9594,10338"; a="248718038" X-IronPort-AV: E=Sophos;i="5.91,201,1647327600"; d="scan'208";a="248718038" Received: from fmsmga001.fm.intel.com ([10.253.24.23]) by fmsmga107.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 05 May 2022 09:57:11 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.91,201,1647327600"; d="scan'208";a="709032859" Received: from ahunter-desktop.fi.intel.com ([10.237.72.92]) by fmsmga001.fm.intel.com with ESMTP; 05 May 2022 09:57:08 -0700 From: Adrian Hunter To: Arnaldo Carvalho de Melo Cc: Jiri Olsa , Ian Rogers , Alexey Bayduraev , Namhyung Kim , Leo Yan , linux-kernel@vger.kernel.org Subject: [PATCH V1 11/23] perf auxtrace: Remove auxtrace_mmap_params__set_idx() per_cpu parameter Date: Thu, 5 May 2022 19:56:27 +0300 Message-Id: <20220505165639.361733-12-adrian.hunter@intel.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20220505165639.361733-1-adrian.hunter@intel.com> References: <20220505165639.361733-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 --- tools/perf/util/auxtrace.c | 5 +++-- tools/perf/util/auxtrace.h | 3 +-- tools/perf/util/evlist.c | 3 +-- tools/perf/util/mmap.c | 3 +-- 4 files changed, 6 insertions(+), 8 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 4e715e2d9291..7931c34f749a 100644 --- a/tools/perf/util/auxtrace.h +++ b/tools/perf/util/auxtrace.h @@ -492,8 +492,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, 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 Fri May 15 09:17:46 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 58267C433F5 for ; Thu, 5 May 2022 16:58:06 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1382393AbiEERBm (ORCPT ); Thu, 5 May 2022 13:01:42 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:49382 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1382356AbiEERBW (ORCPT ); Thu, 5 May 2022 13:01:22 -0400 Received: from mga17.intel.com (mga17.intel.com [192.55.52.151]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 8C2425D19C for ; Thu, 5 May 2022 09:57:39 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1651769859; x=1683305859; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=L3ZSVX63/s5yaZQxGEWHbqwz2MM9wxr6WnJ4e9be/eY=; b=jPtrZus0s55VAjr3dqgkA42KotgqkWGYGzVg8v/tMCBbX56PC31/fAxC oL9GIXxMWpuKbHtoM543C9eGERw4P98kiZ5oHLKzKBa63MEHyR33LlQtP ACmQ3ElQZTnHKRic8kcEezpnVLjOOWKRY7SpZ/xZuwVdQVqzL8brwXjfr ZnKagHGXn5cyAE4Q++eN/f8hASzsIG21YBICGmyeo70+TwhzAalQ7tDfl mxmeba+AEopp88SNLRhU9rAhe9ncFNj6RpiIC3B1tGVJJQ3SI2K0ab6ep uBLMUf3U8tLPfQIIz5xqORBNSByErj8TZBOrSiJKcjUyZOSnjSvT0Iw1A Q==; X-IronPort-AV: E=McAfee;i="6400,9594,10338"; a="248718089" X-IronPort-AV: E=Sophos;i="5.91,201,1647327600"; d="scan'208";a="248718089" Received: from fmsmga001.fm.intel.com ([10.253.24.23]) by fmsmga107.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 05 May 2022 09:57:13 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.91,201,1647327600"; d="scan'208";a="709032872" Received: from ahunter-desktop.fi.intel.com ([10.237.72.92]) by fmsmga001.fm.intel.com with ESMTP; 05 May 2022 09:57:11 -0700 From: Adrian Hunter To: Arnaldo Carvalho de Melo Cc: Jiri Olsa , Ian Rogers , Alexey Bayduraev , Namhyung Kim , Leo Yan , linux-kernel@vger.kernel.org Subject: [PATCH V1 12/23] perf evlist: Factor out evlist__dummy_event() Date: Thu, 5 May 2022 19:56:28 +0300 Message-Id: <20220505165639.361733-13-adrian.hunter@intel.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20220505165639.361733-1-adrian.hunter@intel.com> References: <20220505165639.361733-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. Signed-off-by: Adrian Hunter Acked-by: Ian Rogers --- 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 Fri May 15 09:17:46 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 107BDC433F5 for ; Thu, 5 May 2022 16:58:11 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1382291AbiEERBs (ORCPT ); Thu, 5 May 2022 13:01:48 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:49396 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1382232AbiEERBX (ORCPT ); Thu, 5 May 2022 13:01:23 -0400 Received: from mga17.intel.com (mga17.intel.com [192.55.52.151]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id DC1485D5CB for ; Thu, 5 May 2022 09:57:41 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1651769861; x=1683305861; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=p3ulNQ2ht9HlNWyV+bHdO7gatp7F4Zan+NkJzDLuSUM=; b=msRU4XhKyzyHsAZNQGQ9y0gWmzrPvEW592iRSDpVqqShpbokCENaMwFp ONJ9r0WcKg3MSqwZ8tokjdTcB/QV1/y1aHX/ClW0Gks03oNL5W9NGC6or TYaG1F6x1lxPqNWYldRDVH7/HkJw03U6O07f1TwculBoriumpJfkXeMjq hBOq6hVhD44s5M14tZDN15t9SzDUoTzLyOlZ2p5Ao0Tqm2kT5J5UlW+HB l4E42p+ZbK9WUvi/znYwTC5BU20A6MydQxhDQhbtfpvaegDutnUDPtyCz PFBSU5vq8kgGFwmIdTdpHxhASYgdDVaqxaOWyzcgFyM/AAi9WTt21/S+T Q==; X-IronPort-AV: E=McAfee;i="6400,9594,10338"; a="248718118" X-IronPort-AV: E=Sophos;i="5.91,201,1647327600"; d="scan'208";a="248718118" Received: from fmsmga001.fm.intel.com ([10.253.24.23]) by fmsmga107.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 05 May 2022 09:57:15 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.91,201,1647327600"; d="scan'208";a="709032886" Received: from ahunter-desktop.fi.intel.com ([10.237.72.92]) by fmsmga001.fm.intel.com with ESMTP; 05 May 2022 09:57:13 -0700 From: Adrian Hunter To: Arnaldo Carvalho de Melo Cc: Jiri Olsa , Ian Rogers , Alexey Bayduraev , Namhyung Kim , Leo Yan , linux-kernel@vger.kernel.org Subject: [PATCH V1 13/23] perf evlist: Add evlist__add_system_wide_dummy() Date: Thu, 5 May 2022 19:56:29 +0300 Message-Id: <20220505165639.361733-14-adrian.hunter@intel.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20220505165639.361733-1-adrian.hunter@intel.com> References: <20220505165639.361733-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_system_wide_dummy() 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..58ea562ddbd2 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_system_wide(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_system_wide(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..dd1af114e033 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_system_wide_dummy(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 Fri May 15 09:17:46 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 08084C433EF for ; Thu, 5 May 2022 16:58:24 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1382436AbiEERB7 (ORCPT ); Thu, 5 May 2022 13:01:59 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:50162 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1382251AbiEERBc (ORCPT ); Thu, 5 May 2022 13:01:32 -0400 Received: from mga17.intel.com (mga17.intel.com [192.55.52.151]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 675C95D187 for ; Thu, 5 May 2022 09:57:52 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1651769872; x=1683305872; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=pTIPWG3rKADJejUjpz4vWXPl4+M9vgjae0Hy0+Q8pUM=; b=Q2GPWedLsc2qs1LcUEkmlbl5VcIa7Bz0N/Na0YznEhnMy1Y9WoN6XM69 vdALfywhryAQY+zk/D/ZeNQOqrITlcOzIBACwz00edenXGf69OhuVeq1J FPJBN9lxvb4JSMs8BMXYEpe+5c8prNYR4wSomr4HxwXbyaH2Lx0CoJeeB UmcVsCdxTYIyPG4Cze/8g2cRK1St4yvPIxdKSMnPKTRXU3G6yDmtOMXc0 yl/iTr5fusFlLcHBiy5q6OzZVVh3OKZQ9WN3NkcfElnV2qTt/KfNgsMxh wLS8qjBIvslHrBQaIYHnb7+HxNk4xhyJ94perKzPPMpTgibzAhZY/v29a A==; X-IronPort-AV: E=McAfee;i="6400,9594,10338"; a="248718196" X-IronPort-AV: E=Sophos;i="5.91,201,1647327600"; d="scan'208";a="248718196" Received: from fmsmga001.fm.intel.com ([10.253.24.23]) by fmsmga107.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 05 May 2022 09:57:18 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.91,201,1647327600"; d="scan'208";a="709032919" Received: from ahunter-desktop.fi.intel.com ([10.237.72.92]) by fmsmga001.fm.intel.com with ESMTP; 05 May 2022 09:57:16 -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 V1 14/23] perf record: Use evlist__add_system_wide_dummy() in record__config_text_poke() Date: Thu, 5 May 2022 19:56:30 +0300 Message-Id: <20220505165639.361733-15-adrian.hunter@intel.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20220505165639.361733-1-adrian.hunter@intel.com> References: <20220505165639.361733-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_system_wide_dummy() 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. Signed-off-by: Adrian Hunter Acked-by: Ian Rogers --- 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 069825c48d40..83d2f2b5dcda 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_system_wide_dummy(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 Fri May 15 09:17:46 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 C75D3C433F5 for ; Thu, 5 May 2022 16:58:32 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1382477AbiEERCJ (ORCPT ); Thu, 5 May 2022 13:02:09 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:50252 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1382354AbiEERBg (ORCPT ); Thu, 5 May 2022 13:01:36 -0400 Received: from mga17.intel.com (mga17.intel.com [192.55.52.151]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id D9F065D198 for ; Thu, 5 May 2022 09:57:56 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1651769876; x=1683305876; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=yRpvc/5+lKYY2ErIrQ4yRGXINSu1VtbNTt3ZM+FzuEQ=; b=JpJ7Etwqt2tSNQ0pI26lMIGCMD4YOBHSM7a5DT07wRLQdB4hcpsTKqDY Frxl+M3DtJWOLPJoUw0DNd41zaKB+H1Z7HrJEg91ttYkKihgVQ4+4OkJa AvovRk21xW1Y//jBvgM0wzj1uVV6JAyS1HYBCqfI58m0e7sePCkY4/SEi PWCXxkzUqzCtpHM2YTdqpx17DM4UBWCuw73PJ8pqjZjzCWkJGj4yrBGae c10gU8QyL3I1/DfmJUj5kMpp2m/IZdY+TcLbkc25vItMwGG/6QLyUCJ2V Kc+GRa8KOvbSBIoDA/HkU87bIHqT6tNuuSgJWiEgETdZkGgmjPv/opFZr Q==; X-IronPort-AV: E=McAfee;i="6400,9594,10338"; a="248718245" X-IronPort-AV: E=Sophos;i="5.91,201,1647327600"; d="scan'208";a="248718245" Received: from fmsmga001.fm.intel.com ([10.253.24.23]) by fmsmga107.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 05 May 2022 09:57:20 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.91,201,1647327600"; d="scan'208";a="709032934" Received: from ahunter-desktop.fi.intel.com ([10.237.72.92]) by fmsmga001.fm.intel.com with ESMTP; 05 May 2022 09:57: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 V1 15/23] perf intel-pt: Use evlist__add_system_wide_dummy() for switch tracking Date: Thu, 5 May 2022 19:56:31 +0300 Message-Id: <20220505165639.361733-16-adrian.hunter@intel.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20220505165639.361733-1-adrian.hunter@intel.com> References: <20220505165639.361733-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_system_wide_dummy() for switch tracking in preparation for allowing system-wide events on all CPUs while the user requested events are on only user requested CPUs. Signed-off-by: Adrian Hunter Acked-by: Ian Rogers --- 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..e45d64dec57c 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_system_wide_dummy(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 Fri May 15 09:17:46 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 EC35BC433F5 for ; Thu, 5 May 2022 16:58:35 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1382482AbiEERCN (ORCPT ); Thu, 5 May 2022 13:02:13 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:49270 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1382406AbiEERBr (ORCPT ); Thu, 5 May 2022 13:01:47 -0400 Received: from mga17.intel.com (mga17.intel.com [192.55.52.151]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id C6DC45D5DA for ; Thu, 5 May 2022 09:58:02 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1651769882; x=1683305882; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=uLF6qXh+XOVZJNuYD6lAJ6RB4iqOqKmveOdC3HuSOiQ=; b=hHPIxn3QGW8VWhPOsY7ptpnWPZhkGmwuN9e9BPqK+5uO9z2ijD7ikKvP 0MzNY8S8UDq63CwMC0mwUjpEaNxQ0ipfZj4trYqOMri16oDobF3StrP3r qVwjnL45khEbDN2a6U7ts6flsywLLEhn7e5RmplDaZI9LOUIlRq76bw8F Ia7/1lLKukH/zvQxEgjDwbOB6CvdFH9kKTGiJZJ4obA6C+ZtCy08Sw2ll bTjr8XFFPmf/JPJsk9/oa3FvaosWXj53vqcYWKYsh9EZKYDThFby4caYn FWomUHqxdLXUQfKmIs3drL+cdzb/ThjqYCguiLuF1gSJjKIWWVtEDf4H7 g==; X-IronPort-AV: E=McAfee;i="6400,9594,10338"; a="248718288" X-IronPort-AV: E=Sophos;i="5.91,201,1647327600"; d="scan'208";a="248718288" Received: from fmsmga001.fm.intel.com ([10.253.24.23]) by fmsmga107.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 05 May 2022 09:57:23 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.91,201,1647327600"; d="scan'208";a="709032957" Received: from ahunter-desktop.fi.intel.com ([10.237.72.92]) by fmsmga001.fm.intel.com with ESMTP; 05 May 2022 09:57:21 -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 V1 16/23] perf intel-pt: Track sideband system-wide when needed Date: Thu, 5 May 2022 19:56:32 +0300 Message-Id: <20220505165639.361733-17-adrian.hunter@intel.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20220505165639.361733-1-adrian.hunter@intel.com> References: <20220505165639.361733-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. Signed-off-by: Adrian Hunter Acked-by: Ian Rogers --- 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 e45d64dec57c..62be78bc90b6 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 Fri May 15 09:17:46 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 E50B3C433F5 for ; Thu, 5 May 2022 16:59:16 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1382224AbiEERCy (ORCPT ); Thu, 5 May 2022 13:02:54 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:49700 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1382419AbiEERBu (ORCPT ); Thu, 5 May 2022 13:01:50 -0400 Received: from mga17.intel.com (mga17.intel.com [192.55.52.151]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 08E345D5E5 for ; Thu, 5 May 2022 09:58: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=1651769884; x=1683305884; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=VcLcZH0f8wvIteGm3XQMLmh65rIcxVwcMWsduub+0WA=; b=PW+2YDCSth0wNs5Zyc+XVsx7esCCsxlrDhu476GadCKgixWZhs+fmL+w ACfcpAcVOPJ5zM74hgt81XICMbhb9FQ3w690jp6gSbk90nvx4L3aPRNN5 D/pDF8YP62B8eSo18rno3ddiVS4YGMJhTghdGDZYoUtT0/qez5hUGv0jU +px2lCCMQlQ+omNy2mvZIzqZL1hMOLQMTYn0whQK1IJpwmlQVbFQKCpGK XrVB5zPKEIJS2qjq5FpP8TR7kYJUPNMLSEeRTwKKBgLpKggoukv2kNtPR jDEqG2hCsqi7CncN+ILW428Cl5pjRYQTSDT/jMQtS2tWtBeyn0nmv4hI3 w==; X-IronPort-AV: E=McAfee;i="6400,9594,10338"; a="248718292" X-IronPort-AV: E=Sophos;i="5.91,201,1647327600"; d="scan'208";a="248718292" Received: from fmsmga001.fm.intel.com ([10.253.24.23]) by fmsmga107.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 05 May 2022 09:57:26 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.91,201,1647327600"; d="scan'208";a="709032968" Received: from ahunter-desktop.fi.intel.com ([10.237.72.92]) by fmsmga001.fm.intel.com with ESMTP; 05 May 2022 09:57: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 V1 17/23] perf tools: Allow all_cpus to be a superset of user_requested_cpus Date: Thu, 5 May 2022 19:56:33 +0300 Message-Id: <20220505165639.361733-18-adrian.hunter@intel.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20220505165639.361733-1-adrian.hunter@intel.com> References: <20220505165639.361733-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 ad04da81c367..048b546f9444 100644 --- a/tools/lib/perf/evlist.c +++ b/tools/lib/perf/evlist.c @@ -294,7 +294,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; @@ -426,7 +426,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 @@ -536,7 +536,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++) { @@ -561,8 +561,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; @@ -573,7 +573,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 83d2f2b5dcda..7173671abe8a 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(cpus->map[m].cpu, thread_data->mask->maps.bits)) { 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"); @@ -3667,12 +3673,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 Fri May 15 09:17:46 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 CE0C5C433EF for ; Thu, 5 May 2022 16:58:40 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S234225AbiEERCS (ORCPT ); Thu, 5 May 2022 13:02:18 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:49376 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1382418AbiEERBu (ORCPT ); Thu, 5 May 2022 13:01:50 -0400 Received: from mga17.intel.com (mga17.intel.com [192.55.52.151]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 271FE5D5E6 for ; Thu, 5 May 2022 09:58:04 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1651769884; x=1683305884; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=2xg8NMgfDJBeW9nL56be8X0CEqfuwLq35xcbONKerds=; b=LLvzmp47sD8BNYUIMfPSM0SnQg1mzE4LQJp5W+zTr0mdJBz20H2hBuWM SxXS4Ok1hTWKZs85PJL3JuBtynpUsRR3JcM+FyX9yOI/5WseGvEjkHb0K qCxfK7boIqdxDyOdzrHPjTwdMRaHOz51Hcs/r+auqSqShpt7mgOa4ItrA Za87WeMeYpGF51ijYz2dj5fWxi+yBZFOeAcaxV/F8Mp0zFGhOaGScWePw GAKLWuxA2IVVdkhKVUHp1OySWGiXdirgF4twn65xZM7FDg2vwECNbuB/a rYhvXi2qLh0zoWzDpOBOkQOhnQxXD643sQV9Wa8MAloLY8fw8JcwwgIdu g==; X-IronPort-AV: E=McAfee;i="6400,9594,10338"; a="248718299" X-IronPort-AV: E=Sophos;i="5.91,201,1647327600"; d="scan'208";a="248718299" Received: from fmsmga001.fm.intel.com ([10.253.24.23]) by fmsmga107.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 05 May 2022 09:57:28 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.91,201,1647327600"; d="scan'208";a="709032995" Received: from ahunter-desktop.fi.intel.com ([10.237.72.92]) by fmsmga001.fm.intel.com with ESMTP; 05 May 2022 09:57:26 -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 V1 18/23] libperf evlist: Allow mixing per-thread and per-cpu mmaps Date: Thu, 5 May 2022 19:56:34 +0300 Message-Id: <20220505165639.361733-19-adrian.hunter@intel.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20220505165639.361733-1-adrian.hunter@intel.com> References: <20220505165639.361733-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. Signed-off-by: Adrian Hunter Acked-by: Ian Rogers --- 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 048b546f9444..0acf43946479 100644 --- a/tools/lib/perf/evlist.c +++ b/tools/lib/perf/evlist.c @@ -508,29 +508,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) @@ -561,9 +538,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; } @@ -573,7 +555,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; @@ -592,9 +573,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 Fri May 15 09:17:46 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 B85B1C433F5 for ; Thu, 5 May 2022 16:59:20 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1382407AbiEERC5 (ORCPT ); Thu, 5 May 2022 13:02:57 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:50156 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1382264AbiEERBx (ORCPT ); Thu, 5 May 2022 13:01:53 -0400 Received: from mga17.intel.com (mga17.intel.com [192.55.52.151]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id AEBD75D5F2 for ; Thu, 5 May 2022 09:58:05 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1651769885; x=1683305885; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=i3a0uGzif9S8cOD34QWtXLAKinkX9ebBcIsx14wAdgE=; b=Oh+IvKSV0HQSoPBUn15TqzqI6LRG2cXXLcFO3VOMCwyxSClFxYsn76CQ lICvscdAJJ25PGDbS56WZ+X+QVbbU3bkYE7nxq6KVacLLruNA2XYt096T UFW4FwXT5VC1WL4hZWH8qIQHdEuZjyVw+GR+5kTdRS0IHgUofzgIaYPOq W8/WVlTiBScMZtnvWasM8dWmpKnSnEecqGTH6R4Q5CFGwVWnG+xgxVB7s VQaaz4+COfwViGAbrXUgZvF66kuNmxuYNMJTH+Lrhd80NUx8r8Dd5NQG6 J1AKD7d+0BNx9zIG4yFrhM0KVbGfJ6lHSyTTUaOgoaYddg0pfFI2Tx1rl g==; X-IronPort-AV: E=McAfee;i="6400,9594,10338"; a="248718308" X-IronPort-AV: E=Sophos;i="5.91,201,1647327600"; d="scan'208";a="248718308" Received: from fmsmga001.fm.intel.com ([10.253.24.23]) by fmsmga107.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 05 May 2022 09:57:31 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.91,201,1647327600"; d="scan'208";a="709033034" Received: from ahunter-desktop.fi.intel.com ([10.237.72.92]) by fmsmga001.fm.intel.com with ESMTP; 05 May 2022 09:57: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 V1 19/23] libperf evlist: Check nr_mmaps is correct Date: Thu, 5 May 2022 19:56:35 +0300 Message-Id: <20220505165639.361733-20-adrian.hunter@intel.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20220505165639.361733-1-adrian.hunter@intel.com> References: <20220505165639.361733-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 --- tools/lib/perf/evlist.c | 11 +++++++++-- tools/lib/perf/include/internal/mmap.h | 5 +++++ 2 files changed, 14 insertions(+), 2 deletions(-) diff --git a/tools/lib/perf/evlist.c b/tools/lib/perf/evlist.c index 0acf43946479..8a82b4b94b99 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) { @@ -424,7 +425,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; @@ -480,6 +481,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 { @@ -514,6 +517,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++) { @@ -522,11 +526,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: diff --git a/tools/lib/perf/include/internal/mmap.h b/tools/lib/perf/includ= e/internal/mmap.h index 5a062af8e9d8..9b00828e70ef 100644 --- a/tools/lib/perf/include/internal/mmap.h +++ b/tools/lib/perf/include/internal/mmap.h @@ -56,4 +56,9 @@ u64 perf_mmap__read_head(struct perf_mmap *map); =20 int perf_mmap__read_self(struct perf_mmap *map, struct perf_counts_values = *count); =20 +static inline bool perf_mmap__is_mmapped(struct perf_mmap *map) +{ + return map->base; +} + #endif /* __LIBPERF_INTERNAL_MMAP_H */ --=20 2.25.1 From nobody Fri May 15 09:17:46 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 5E721C433EF for ; Thu, 5 May 2022 16:59:32 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1382429AbiEERDJ (ORCPT ); Thu, 5 May 2022 13:03:09 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:50162 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1382274AbiEERBx (ORCPT ); Thu, 5 May 2022 13:01:53 -0400 Received: from mga17.intel.com (mga17.intel.com [192.55.52.151]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id D8BB55D5F3 for ; Thu, 5 May 2022 09:58:05 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1651769886; x=1683305886; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=LCTYZ3CJfXYPKLeiIIDwcj+fbOT+KbTWoposCCxAov8=; b=k3npbm3fWsgu65yohMAr8M9YVfkVHgmVD8lXKxqe9gxDlwcO5i2tbtTk UDwSbx/UuFaHj+l9WPE6ScrP1NqlF+9t00r5V79p0N4SM+H3TAnf07z2F n1fJMIixGvFBuoc+9SMuDW6qHZKX/n5oJ3Mxo19tHPC81SHtvwkxkNO33 rcXHILwEDZJUlU6TrVkEY8azkqp1ilIXkEr74hhr80O6IssXc7HZMEfYN f3bum8fNJshlvQ39OFwus/XgNzWm6PrjwJ/gkMarTzJ76JRP9OBDmZmnt 4aGb/CqDghgUL5zky2F2uvFoRx9m870qw9yYBn6Y7UkY92HSCwYHSWAI/ g==; X-IronPort-AV: E=McAfee;i="6400,9594,10338"; a="248718313" X-IronPort-AV: E=Sophos;i="5.91,201,1647327600"; d="scan'208";a="248718313" Received: from fmsmga001.fm.intel.com ([10.253.24.23]) by fmsmga107.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 05 May 2022 09:57:33 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.91,201,1647327600"; d="scan'208";a="709033044" Received: from ahunter-desktop.fi.intel.com ([10.237.72.92]) by fmsmga001.fm.intel.com with ESMTP; 05 May 2022 09:57:31 -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 V1 20/23] perf stat: Add requires_cpu flag for uncore Date: Thu, 5 May 2022 19:56:36 +0300 Message-Id: <20220505165639.361733-21-adrian.hunter@intel.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20220505165639.361733-1-adrian.hunter@intel.com> References: <20220505165639.361733-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' the uncore case. Signed-off-by: Adrian Hunter Acked-by: Ian Rogers --- 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 8a82b4b94b99..3bf77f9617b6 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 Fri May 15 09:17:46 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 B5583C433EF for ; Thu, 5 May 2022 16:59:24 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1382415AbiEERDB (ORCPT ); Thu, 5 May 2022 13:03:01 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:50100 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1382271AbiEERBx (ORCPT ); Thu, 5 May 2022 13:01:53 -0400 Received: from mga17.intel.com (mga17.intel.com [192.55.52.151]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id C0FBA5D5FF for ; Thu, 5 May 2022 09:58:06 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1651769886; x=1683305886; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=raq1KD4MPnIuPYUp96rbTd2w5zATae1PXN5+lX8Jm6M=; b=KR+RHik9E+4WjI/LEBjA+um7pu6JV6ZPbTuQhXzoSMNb4N1+FcjHlX6x G+T6Ps+rWcmLW51WZst52/Z85MmX+d+X9LPj1PoRpiZgpBjB6Q1GAA+LS qMGlTcOHxMBa235xepu0IfG+upbzq5jwO9UzE1EK/wDapf4s29gF+UsNm GMMXyMH7bG+doAIwEzO/pe/7BdpagVNq2Rv+YJQdmbHp6hzPr1VzM9OIi WqKBukm5uvNXxRQCBPPQl8srp+DVEb3Qul7ZY5YmYsg7ufJLuf0RRae6B mqDnX6yeCNAmTShkBsgh5Fb9D6GRs8kTeUl9PbAZDEwaAgM/QWP9O+bAH A==; X-IronPort-AV: E=McAfee;i="6400,9594,10338"; a="248718317" X-IronPort-AV: E=Sophos;i="5.91,201,1647327600"; d="scan'208";a="248718317" Received: from fmsmga001.fm.intel.com ([10.253.24.23]) by fmsmga107.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 05 May 2022 09:57:36 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.91,201,1647327600"; d="scan'208";a="709033059" Received: from ahunter-desktop.fi.intel.com ([10.237.72.92]) by fmsmga001.fm.intel.com with ESMTP; 05 May 2022 09:57: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 V1 21/23] libperf evsel: Add comments for booleans Date: Thu, 5 May 2022 19:56:37 +0300 Message-Id: <20220505165639.361733-22-adrian.hunter@intel.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20220505165639.361733-1-adrian.hunter@intel.com> References: <20220505165639.361733-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 | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/tools/lib/perf/include/internal/evsel.h b/tools/lib/perf/inclu= de/internal/evsel.h index 77fbb8b97e5c..f613c3ae868e 100644 --- a/tools/lib/perf/include/internal/evsel.h +++ b/tools/lib/perf/include/internal/evsel.h @@ -49,7 +49,15 @@ 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. + */ bool system_wide; + /* + * Some events, for example uncore events, require a CPU. + * i.e. it cannot be -1 + */ bool requires_cpu; int idx; }; --=20 2.25.1 From nobody Fri May 15 09:17:46 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 20DACC433EF for ; Thu, 5 May 2022 16:59:41 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1382449AbiEERDS (ORCPT ); Thu, 5 May 2022 13:03:18 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:50214 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1382305AbiEERB6 (ORCPT ); Thu, 5 May 2022 13:01:58 -0400 Received: from mga17.intel.com (mga17.intel.com [192.55.52.151]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id AB1455D64C for ; Thu, 5 May 2022 09:58: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=1651769887; x=1683305887; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=1ZGDTFt3ANGjVXO1SE+EorvU0Q2cnsm2qj95k+Pzic4=; b=fgsWllkfU3fRK4vzmeLUbrlDUH3mTv+kxSWjbxmysl3oR92iiqudfOrV eoXxtrbRqoDCyzqfPAbenxlR4dXjGxmAW+Z5delxvgBdkvqifqXWG9lzY BSwKNKaiPdOqOvY9wjIo2de8jYZEl6v5pJE+OF2l2LWPL41JSDBoahGe5 dxdJGO5fLxuOoLljE1ttGIZmoEmi7bg9m5huedc5MPaTuPQROUCyjehhs YucGVNPHdb4vtoco1mTUREggtm83/5POfbxHTIzy2Kvc5pxZtaWAINnLF WApfv/dBDtivK7X0Czj/p/t7ZVPuKFfcp+Jyi+9n19E0bUrz4Q/0CtagI g==; X-IronPort-AV: E=McAfee;i="6400,9594,10338"; a="248718325" X-IronPort-AV: E=Sophos;i="5.91,201,1647327600"; d="scan'208";a="248718325" Received: from fmsmga001.fm.intel.com ([10.253.24.23]) by fmsmga107.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 05 May 2022 09:57:38 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.91,201,1647327600"; d="scan'208";a="709033092" Received: from ahunter-desktop.fi.intel.com ([10.237.72.92]) by fmsmga001.fm.intel.com with ESMTP; 05 May 2022 09:57:36 -0700 From: Adrian Hunter To: Arnaldo Carvalho de Melo Cc: Jiri Olsa , Ian Rogers , Alexey Bayduraev , Namhyung Kim , Leo Yan , linux-kernel@vger.kernel.org Subject: [PATCH V1 22/23] perf tools: Allow system-wide events to keep their own CPUs Date: Thu, 5 May 2022 19:56:38 +0300 Message-Id: <20220505165639.361733-23-adrian.hunter@intel.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20220505165639.361733-1-adrian.hunter@intel.com> References: <20220505165639.361733-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. Signed-off-by: Adrian Hunter Acked-by: Ian Rogers --- 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 3bf77f9617b6..da30e88c76b9 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 Fri May 15 09:17:46 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 97A17C433EF for ; Thu, 5 May 2022 16:59:37 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1382438AbiEERDO (ORCPT ); Thu, 5 May 2022 13:03:14 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:50208 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1382303AbiEERB5 (ORCPT ); Thu, 5 May 2022 13:01:57 -0400 Received: from mga17.intel.com (mga17.intel.com [192.55.52.151]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 3EE965C759 for ; Thu, 5 May 2022 09:58:08 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1651769888; x=1683305888; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=OpTY+llOneNS1jEvqxZrqBte6QuU6k0F8hSv2vd8MgI=; b=FtGTIUljXfrwclzFkbAlOdqgdDvyTbAQd289aSlFx/QPJfA4NY2Oqj8/ owH7OQ+0MuLTQPCdB/3ia0qGK4eQUtbOSmN2L2FwIKv8gK9m6kwxIUoyr Bag+jWbnmi4XE9mcG4C11gneYzHa/CffNbLlesDXNRafk6WQVsXwpztqU Gzk1/Qzt1lmvnsOpA56gSZgn8DnG0WMcs/cBApbiafXxlN7IW33Xt0QyF TA/6lR2DaRlCEque9RLBlUclgD/g+ILM4UrohwyjUyBZ4GpJP+PFXMvaU 2CFnw0ungpnJwle2mi71yVdPpaVewAYQnUWg6Gjp401wt3D793Fhhpf93 w==; X-IronPort-AV: E=McAfee;i="6400,9594,10338"; a="248718330" X-IronPort-AV: E=Sophos;i="5.91,201,1647327600"; d="scan'208";a="248718330" Received: from fmsmga001.fm.intel.com ([10.253.24.23]) by fmsmga107.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 05 May 2022 09:57:41 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.91,201,1647327600"; d="scan'208";a="709033111" Received: from ahunter-desktop.fi.intel.com ([10.237.72.92]) by fmsmga001.fm.intel.com with ESMTP; 05 May 2022 09:57:38 -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 V1 23/23] perf tools: Allow system-wide events to keep their own threads Date: Thu, 5 May 2022 19:56:39 +0300 Message-Id: <20220505165639.361733-24-adrian.hunter@intel.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20220505165639.361733-1-adrian.hunter@intel.com> References: <20220505165639.361733-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. Signed-off-by: Adrian Hunter Acked-by: Ian Rogers --- 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 da30e88c76b9..fe75d2cf3696 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