From nobody Sun May 10 22:40:17 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 B004BC433F5 for ; Fri, 22 Apr 2022 16:25:02 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1385749AbiDVQ1c (ORCPT ); Fri, 22 Apr 2022 12:27:32 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:56104 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1349391AbiDVQ1V (ORCPT ); Fri, 22 Apr 2022 12:27:21 -0400 Received: from mga14.intel.com (mga14.intel.com [192.55.52.115]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 0D3E95E154 for ; Fri, 22 Apr 2022 09:24:27 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1650644667; x=1682180667; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=/9mnztbVnyldzRTetwx2U1m/QSQPsG+fgVUfId7SMwU=; b=mp2jSdKiNkrvo4jHlSIW+j/FmjiNvyBjYbvgJggB23WheuZ3hb9H0gpE TfOES18L1CYrsje4lrYeA4lTuOJYr4Hfg0d/KvFl+AMijr/4r/FYASxXj XxxxcqlZrLOn8hmidXkaVXN/WL/txP9WCMUtDWqLBt9jTMTPTtl+wHole QAlMIdl/yCLk04O9fYrQ24sfAXDtm1v1dOXTOwpbc44E5byujqarDjxNo GHD95e5pk/QQ82QvaytX/k4r1O7VpyA7Q5z3oEMCwsione8VEsZAj+gzp H8HwP1VRl17LW+Y0RfRc1jo0z8/8EQlyLFG2qV2d02TsmykuychyPwk04 g==; X-IronPort-AV: E=McAfee;i="6400,9594,10324"; a="264885791" X-IronPort-AV: E=Sophos;i="5.90,282,1643702400"; d="scan'208";a="264885791" Received: from orsmga008.jf.intel.com ([10.7.209.65]) by fmsmga103.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 22 Apr 2022 09:24:08 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.90,282,1643702400"; d="scan'208";a="577978578" Received: from ahunter-desktop.fi.intel.com ([10.237.72.92]) by orsmga008.jf.intel.com with ESMTP; 22 Apr 2022 09:24: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 RFC 01/21] libperf evsel: Factor out perf_evsel__ioctl() Date: Fri, 22 Apr 2022 19:23:42 +0300 Message-Id: <20220422162402.147958-2-adrian.hunter@intel.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20220422162402.147958-1-adrian.hunter@intel.com> References: <20220422162402.147958-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 perf_evsel__ioctl() so it can be reused. Signed-off-by: Adrian Hunter --- tools/lib/perf/evsel.c | 19 ++++++++++++------- 1 file changed, 12 insertions(+), 7 deletions(-) diff --git a/tools/lib/perf/evsel.c b/tools/lib/perf/evsel.c index 210ea7c06ce8..20ae9f5f8b30 100644 --- a/tools/lib/perf/evsel.c +++ b/tools/lib/perf/evsel.c @@ -328,6 +328,17 @@ int perf_evsel__read(struct perf_evsel *evsel, int cpu= _map_idx, int thread, return 0; } =20 +static int perf_evsel__ioctl(struct perf_evsel *evsel, int ioc, void *arg, + int cpu_map_idx, int thread) +{ + int *fd =3D FD(evsel, cpu_map_idx, thread); + + if (fd =3D=3D NULL || *fd < 0) + return -1; + + return ioctl(*fd, ioc, arg); +} + static int perf_evsel__run_ioctl(struct perf_evsel *evsel, int ioc, void *arg, int cpu_map_idx) @@ -335,13 +346,7 @@ static int perf_evsel__run_ioctl(struct perf_evsel *ev= sel, int thread; =20 for (thread =3D 0; thread < xyarray__max_y(evsel->fd); thread++) { - int err; - int *fd =3D FD(evsel, cpu_map_idx, thread); - - if (fd =3D=3D NULL || *fd < 0) - return -1; - - err =3D ioctl(*fd, ioc, arg); + int err =3D perf_evsel__ioctl(evsel, ioc, arg, cpu_map_idx, thread); =20 if (err) return err; --=20 2.25.1 From nobody Sun May 10 22:40:17 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 ED36EC433FE for ; Fri, 22 Apr 2022 16:25:02 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1387209AbiDVQ1e (ORCPT ); Fri, 22 Apr 2022 12:27:34 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:56140 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1384259AbiDVQ10 (ORCPT ); Fri, 22 Apr 2022 12:27:26 -0400 Received: from mga14.intel.com (mga14.intel.com [192.55.52.115]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id E6EF05E177 for ; Fri, 22 Apr 2022 09:24:32 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1650644672; x=1682180672; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=crxuzt4gLoX8IcXFkNYs+Aei/k0QGJ6XtDfeNQ1ym+k=; b=lf05/Bl3Pw/MJPoL8l1UuChcK+4ly02qJQJyDJFdLnQZ6MYB4Sl4H5aJ R8owLjIoXLd5RqiSbwwnYPAXeXox5f8WUqz05sIESz2Ez6Zr2BQ+ZoVJy AxPGQw3f7XFZAcUdMCGzP0VS1Iuq4nl6o/m8BO52AMVkEQcZBOkNs0hKA O9PUjLV+a/Na8J4VGOjE6+XyrOAKxrG/hSmjmt2XNQ2dxJBihQn/RRlOH ugj9NImt+4SNSc9gYSu8NE/K3KRc97jp1AX4Qtshsc0ghjeYmdVkeWRuO 0pItSuP5PjTKPyB64/e1BgUZabofaVQ5M3qZlQkzPqGYYPwK3CGg35OD7 A==; X-IronPort-AV: E=McAfee;i="6400,9594,10324"; a="264885812" X-IronPort-AV: E=Sophos;i="5.90,282,1643702400"; d="scan'208";a="264885812" Received: from orsmga008.jf.intel.com ([10.7.209.65]) by fmsmga103.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 22 Apr 2022 09:24:11 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.90,282,1643702400"; d="scan'208";a="577978602" Received: from ahunter-desktop.fi.intel.com ([10.237.72.92]) by orsmga008.jf.intel.com with ESMTP; 22 Apr 2022 09:24:09 -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 RFC 02/21] libperf evsel: Add perf_evsel__enable_thread() Date: Fri, 22 Apr 2022 19:23:43 +0300 Message-Id: <20220422162402.147958-3-adrian.hunter@intel.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20220422162402.147958-1-adrian.hunter@intel.com> References: <20220422162402.147958-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..2a1f07f877be 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 i; + + for (i =3D 0; i < xyarray__max_x(evsel->fd) && !err; i++) + err =3D perf_evsel__ioctl(evsel, PERF_EVENT_IOC_ENABLE, NULL, i, thread); + 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 Sun May 10 22:40:17 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 1966EC433EF for ; Fri, 22 Apr 2022 16:25:12 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1384259AbiDVQ2A (ORCPT ); Fri, 22 Apr 2022 12:28:00 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:56190 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1384296AbiDVQ13 (ORCPT ); Fri, 22 Apr 2022 12:27:29 -0400 Received: from mga14.intel.com (mga14.intel.com [192.55.52.115]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id DED595E15B for ; Fri, 22 Apr 2022 09:24:33 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1650644673; x=1682180673; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=96NhVcF681Cf6EUdn2T2JGsKemHJ0OT0snZUFHPMbgc=; b=LfdsGX3bb1T10cZcqGW5X+5ecOdrmuRAFCjl2vtBGV8dmQFPbQ3KQMEn dublefkvCmnLPasFZawTe0eVfG1jsT2flgGxZMpZ8LMs/t1mEmplANYuo JWYdq12XHSga4F9yj3kosPNhB0SpGDoteSq+PePcre2/oNJsVpbOOUPvn lmx7StghxReKrmLY0WccgOa7anbUva4S6Otbki/Q9JnbunjSL/J5rSRo/ BOfAfCxAjzGqPH7YD3NIdqxYEIEsBU9KUdic+IG7tuhckSRM9xFoowKH2 t87juokpAgO5wMHu/z+pF8EXoj7CpvrjDiIVlhRu5Uc/+eIYWG7WZqqun Q==; X-IronPort-AV: E=McAfee;i="6400,9594,10324"; a="264885824" X-IronPort-AV: E=Sophos;i="5.90,282,1643702400"; d="scan'208";a="264885824" Received: from orsmga008.jf.intel.com ([10.7.209.65]) by fmsmga103.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 22 Apr 2022 09:24:14 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.90,282,1643702400"; d="scan'208";a="577978618" Received: from ahunter-desktop.fi.intel.com ([10.237.72.92]) by orsmga008.jf.intel.com with ESMTP; 22 Apr 2022 09:24: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 RFC 03/21] perf evlist: Use libperf functions in evlist__enable_event_idx() Date: Fri, 22 Apr 2022 19:23:44 +0300 Message-Id: <20220422162402.147958-4-adrian.hunter@intel.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20220422162402.147958-1-adrian.hunter@intel.com> References: <20220422162402.147958-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 --- 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 Sun May 10 22:40:17 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 59076C433EF for ; Fri, 22 Apr 2022 16:25:17 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1392032AbiDVQ2J (ORCPT ); Fri, 22 Apr 2022 12:28:09 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:56206 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S231828AbiDVQ1a (ORCPT ); Fri, 22 Apr 2022 12:27:30 -0400 Received: from mga14.intel.com (mga14.intel.com [192.55.52.115]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id BCBBB5E178 for ; Fri, 22 Apr 2022 09:24:35 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1650644675; x=1682180675; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=k3Ox2DTLOs/z08IyVX3jYaM/ZpEJfS7KJmWeGCum7MI=; b=Xwmw0eJ7OlwIrcopvh2oqFwjVn9toSkptjUVUj+BAaarcStgHqFo3+dv 3nc4m7L2Y11f2rWCjQj+wCEYEtLjwPW8VWrjFs7/JijqBqHwm95UVBrzb Qr7G/TItO1LM+MUVzneYtgRJ/gNZZr7eATHw4rrM8ay9v8KxLFYdYd6lr tSVZLj64NqqMyIK1juoNxaGMQ9Bd4SIXc49B0Gr5qjpPMSCWg+ClBX9Dl 4jhM9u3g0S9gCT0lCKfllQeR5rTTU/j9qZOJtpE8weEXPRxvBG0DBtXZR H6nxZQOnrGBE4AmQFqK/Mfpm5xC+6uQ5yISy2726jqdOlJji7N+xQt7LQ g==; X-IronPort-AV: E=McAfee;i="6400,9594,10324"; a="264885841" X-IronPort-AV: E=Sophos;i="5.90,282,1643702400"; d="scan'208";a="264885841" Received: from orsmga008.jf.intel.com ([10.7.209.65]) by fmsmga103.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 22 Apr 2022 09:24:17 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.90,282,1643702400"; d="scan'208";a="577978672" Received: from ahunter-desktop.fi.intel.com ([10.237.72.92]) by orsmga008.jf.intel.com with ESMTP; 22 Apr 2022 09:24:14 -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 RFC 04/21] perf auxtrace: Move evlist__enable_event_idx() to auxtrace.c Date: Fri, 22 Apr 2022 19:23:45 +0300 Message-Id: <20220422162402.147958-5-adrian.hunter@intel.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20220422162402.147958-1-adrian.hunter@intel.com> References: <20220422162402.147958-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 --- 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 Sun May 10 22:40:17 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 6256EC433EF for ; Fri, 22 Apr 2022 16:25:21 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1391593AbiDVQ2M (ORCPT ); Fri, 22 Apr 2022 12:28:12 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:56244 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1384521AbiDVQ1a (ORCPT ); Fri, 22 Apr 2022 12:27:30 -0400 Received: from mga14.intel.com (mga14.intel.com [192.55.52.115]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 106585E154 for ; Fri, 22 Apr 2022 09:24:37 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1650644677; x=1682180677; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=9DOXfRd3f3OReVW0h+/JBRH8U4w0AkNB8ioN2ETNxZ4=; b=CCtLxcUAjzIBC1e0PsSRoHFA0CKqreR/1Wx9Cmj8eRe3vYpVpnIpYvss Lcyh6EITY8Xd7ZFMINtjTdyHb8J8RpNeHeBlLl3p89mqDm/HgMVf8Qe5j 2+yBwaPfBn6WTUCUTiPPUCcniFPYZVHDa1MgpiSQpBzeGFH4GCf7AVw8x 2dp7GR9/YIOsdU2uD3GQ9lGbruNzls2yEv2L7HQs0FlthLEGNuGTw5U9b Ps+LBgbJByF+iM3D9IAHnVvT+anobiG3lgpzb/9JI5R2GBJ5TLtweR8Je bHa5ooxB7VA8ThUk7mMuWDDEuv9bNI8i434wmAciC6fBffFEKUvkpTcbF g==; X-IronPort-AV: E=McAfee;i="6400,9594,10324"; a="264885856" X-IronPort-AV: E=Sophos;i="5.90,282,1643702400"; d="scan'208";a="264885856" Received: from orsmga008.jf.intel.com ([10.7.209.65]) by fmsmga103.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 22 Apr 2022 09:24:20 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.90,282,1643702400"; d="scan'208";a="577978690" Received: from ahunter-desktop.fi.intel.com ([10.237.72.92]) by orsmga008.jf.intel.com with ESMTP; 22 Apr 2022 09:24:17 -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 RFC 05/21] perf auxtrace: Do not mix up mmap idx Date: Fri, 22 Apr 2022 19:23:46 +0300 Message-Id: <20220422162402.147958-6-adrian.hunter@intel.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20220422162402.147958-1-adrian.hunter@intel.com> References: <20220422162402.147958-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 --- 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..2d015b0be549 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 =3D perf_cpu_map__idx(evsel->core.cpus, evlist_cpu); + + if (cpu =3D=3D -1) + return -EINVAL; + return perf_evsel__enable_cpu(&evsel->core, cpu); + } =20 return perf_evsel__enable_thread(&evsel->core, idx); } --=20 2.25.1 From nobody Sun May 10 22:40:17 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 7E686C433EF for ; Fri, 22 Apr 2022 16:25:30 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1442143AbiDVQ2T (ORCPT ); Fri, 22 Apr 2022 12:28:19 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:56280 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S234367AbiDVQ1c (ORCPT ); Fri, 22 Apr 2022 12:27:32 -0400 Received: from mga14.intel.com (mga14.intel.com [192.55.52.115]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id D22345E177 for ; Fri, 22 Apr 2022 09:24:37 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1650644677; x=1682180677; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=JeksS6bnKFmwHzFH4xpgce6NWCYiDTaFYm7w7oziyGI=; b=JAG8OLS7uCA1w+eS3sBzY3y0zX+mhb9szyCrMZ8oOWcQOWB32GXdxurI 43exNpZzJ3M5axfiN63NktlZcLBjurqKOuVR6m4yC20bhQ+RysIX1aN8C zhoCvhd06th0yDLcbmmCKe6joLiCY/dX6OA6g+xLTDBv3/VV2V1WQfKXV YszzAJu/Bw8lFisDafTUPPx21L1/BY0vmed4MdhlR1mzy+G4GuwU9SoWm O1RUTQIgVl3+CtrgnKP5z0u3cIQ3gWXjxhg/4U76/01jpNCqmJU/PwJs+ EgLS1DH8FezuK/cmGkGqt00Vue4t5sjYjNJIqIQPCxT+rwz+XfXginSkd g==; X-IronPort-AV: E=McAfee;i="6400,9594,10324"; a="264885870" X-IronPort-AV: E=Sophos;i="5.90,282,1643702400"; d="scan'208";a="264885870" Received: from orsmga008.jf.intel.com ([10.7.209.65]) by fmsmga103.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 22 Apr 2022 09:24:22 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.90,282,1643702400"; d="scan'208";a="577978711" Received: from ahunter-desktop.fi.intel.com ([10.237.72.92]) by orsmga008.jf.intel.com with ESMTP; 22 Apr 2022 09:24:20 -0700 From: Adrian Hunter To: Arnaldo Carvalho de Melo Cc: Jiri Olsa , Ian Rogers , Alexey Bayduraev , Namhyung Kim , Leo Yan , linux-kernel@vger.kernel.org Subject: [PATCH RFC 06/21] libperf evlist: Remove ->idx() per_cpu parameter Date: Fri, 22 Apr 2022 19:23:47 +0300 Message-Id: <20220422162402.147958-7-adrian.hunter@intel.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20220422162402.147958-1-adrian.hunter@intel.com> References: <20220422162402.147958-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 --- 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 Sun May 10 22:40:17 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 CD6D2C433F5 for ; Fri, 22 Apr 2022 16:25:24 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1387856AbiDVQ2Q (ORCPT ); Fri, 22 Apr 2022 12:28:16 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:56286 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1385768AbiDVQ1d (ORCPT ); Fri, 22 Apr 2022 12:27:33 -0400 Received: from mga14.intel.com (mga14.intel.com [192.55.52.115]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 934E35E154 for ; Fri, 22 Apr 2022 09:24:38 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1650644678; x=1682180678; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=OFxZCaU099DWCjXsHRUPf+lvv9DZP9KOIRECSKOskcM=; b=ULtW8UtsrCf/HBlgE9N64JIbwQ8d90h2WGx5Z7/f78ZSDd3LgEh5bYI8 nQHsSnoO7gb7aZZQ4eSohd2styvRftvlGjdUP/ql5Pp7vHr7l2ADzUP24 CyJLKTdhyQBw6KxjszNWTncXZp6hd2vdz1TKEE6m5/ozCniyLudMjR7Za DstZszr2mDrBlCNdQegffmH46LMW17T3mXw+VcN9SPnDAVjNShk91Dn/T siHNuzohLD2wmjMHzMKoLmO300OizlHwn89BczE4bl1G6wsQI1SPGpmrr H30VtBTB0eby+V8jlXBZ7XcEpLu2yZAbVkZhdIThLhUFxLR1ssD8Z/TWw A==; X-IronPort-AV: E=McAfee;i="6400,9594,10324"; a="264885892" X-IronPort-AV: E=Sophos;i="5.90,282,1643702400"; d="scan'208";a="264885892" Received: from orsmga008.jf.intel.com ([10.7.209.65]) by fmsmga103.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 22 Apr 2022 09:24:25 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.90,282,1643702400"; d="scan'208";a="577978731" Received: from ahunter-desktop.fi.intel.com ([10.237.72.92]) by orsmga008.jf.intel.com with ESMTP; 22 Apr 2022 09:24: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 RFC 07/21] libperf evlist: Move ->idx() into mmap_per_evsel() Date: Fri, 22 Apr 2022 19:23:48 +0300 Message-Id: <20220422162402.147958-8-adrian.hunter@intel.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20220422162402.147958-1-adrian.hunter@intel.com> References: <20220422162402.147958-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 --- 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 Sun May 10 22:40:17 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 6D050C433F5 for ; Fri, 22 Apr 2022 16:25:38 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1387682AbiDVQ21 (ORCPT ); Fri, 22 Apr 2022 12:28:27 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:56300 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1385777AbiDVQ1d (ORCPT ); Fri, 22 Apr 2022 12:27:33 -0400 Received: from mga14.intel.com (mga14.intel.com [192.55.52.115]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 690955E17E for ; Fri, 22 Apr 2022 09:24: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=1650644679; x=1682180679; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=AGweQIuzQjj1sqxKQzd0Iobp0kSixyJ9delafznfDK8=; b=H6OGgUYHCI7OnZtFTPAyFIaFelfNnHf7Nu5Ir+cVF5RhJWFgnQm8u0dS ScaSPuMCutks4gNNfXzp10EwM4Y2OURZmstrQhh35WXyWBpcVIwX7f/JO 37RGaDrBcsIODTSAlECf9QDPwnYxX1zWm5dY/cV3DMyifg4oF2lWSWNQy 2pJ4JkwKoexjkE7EBb6VpqnnmZ578P+2JYRcIhsMd2Ex21fWkkK6tyCEV 6i+LWXg1ynKnX4n8PEJzjqM9e+91qr5ZELJFfvQYetuPvv4/2OzIZvIG+ /3SziYtuNo3bpUpM/skKfqLvWUTPcEs2k46P0NvUPAKqFb93e3nfDgq/1 Q==; X-IronPort-AV: E=McAfee;i="6400,9594,10324"; a="264885902" X-IronPort-AV: E=Sophos;i="5.90,282,1643702400"; d="scan'208";a="264885902" Received: from orsmga008.jf.intel.com ([10.7.209.65]) by fmsmga103.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 22 Apr 2022 09:24:28 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.90,282,1643702400"; d="scan'208";a="577978750" Received: from ahunter-desktop.fi.intel.com ([10.237.72.92]) by orsmga008.jf.intel.com with ESMTP; 22 Apr 2022 09:24:25 -0700 From: Adrian Hunter To: Arnaldo Carvalho de Melo Cc: Jiri Olsa , Ian Rogers , Alexey Bayduraev , Namhyung Kim , Leo Yan , linux-kernel@vger.kernel.org Subject: [PATCH RFC 08/21] libperf evlist: Add evsel as a parameter to ->idx() Date: Fri, 22 Apr 2022 19:23:49 +0300 Message-Id: <20220422162402.147958-9-adrian.hunter@intel.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20220422162402.147958-1-adrian.hunter@intel.com> References: <20220422162402.147958-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 --- 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 Sun May 10 22:40:17 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 CFF8BC433EF for ; Fri, 22 Apr 2022 16:25:42 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1443614AbiDVQ2e (ORCPT ); Fri, 22 Apr 2022 12:28:34 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:56306 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1386928AbiDVQ1e (ORCPT ); Fri, 22 Apr 2022 12:27:34 -0400 Received: from mga14.intel.com (mga14.intel.com [192.55.52.115]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 039555E17C for ; Fri, 22 Apr 2022 09:24:40 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1650644681; x=1682180681; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=KDDd3yERNtoT2PkpLsQySdUm3VZv85NFv8i534AYOD8=; b=INQ9brdQqRFPS0MYuen0/AjjYleABCI6PZk61LJRW6ZJHVpLN0aya+Dh VSl7oQeCfjpgKKVlyDoCd1ngeymKuVYCuwUMWRFKFacDtR7VvqwxNkuFl 3sP4p5Hg3GrysT77nRg3+79P3eUZ3A0ibDjaxBxq7ki7VQabTqP1pRDiS Yxa/xkcrSmnAq2KgB5jTnnh4uYp81CvQbaSR2UKcxJLMfB8EuFcuoyaxz Zqi1rpaMK7M0mcoxL8a7wvV8aZ1kEmFrP9SPnw+KoFrufseXZn4VhP5/l 2mllxkK/ySbZQ5G4ZWZvPToWfVPuuRzG75jyIaQS/FOru3W+qKannDJDK w==; X-IronPort-AV: E=McAfee;i="6400,9594,10324"; a="264885913" X-IronPort-AV: E=Sophos;i="5.90,282,1643702400"; d="scan'208";a="264885913" Received: from orsmga008.jf.intel.com ([10.7.209.65]) by fmsmga103.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 22 Apr 2022 09:24:31 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.90,282,1643702400"; d="scan'208";a="577978772" Received: from ahunter-desktop.fi.intel.com ([10.237.72.92]) by orsmga008.jf.intel.com with ESMTP; 22 Apr 2022 09:24: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 RFC 09/21] perf auxtrace: Record whether an auxtrace mmap is needed Date: Fri, 22 Apr 2022 19:23:50 +0300 Message-Id: <20220422162402.147958-10-adrian.hunter@intel.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20220422162402.147958-1-adrian.hunter@intel.com> References: <20220422162402.147958-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 --- 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 af4d63af8072..e24c22f187df 100644 --- a/tools/perf/arch/arm64/util/arm-spe.c +++ b/tools/perf/arch/arm64/util/arm-spe.c @@ -159,6 +159,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 041b42d33bf5..1a07694afbdd 100644 --- a/tools/perf/util/evsel.h +++ b/tools/perf/util/evsel.h @@ -120,6 +120,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 Sun May 10 22:40:17 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 64682C433F5 for ; Fri, 22 Apr 2022 16:25:52 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1445263AbiDVQ2n (ORCPT ); Fri, 22 Apr 2022 12:28:43 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:56350 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1387885AbiDVQ1l (ORCPT ); Fri, 22 Apr 2022 12:27:41 -0400 Received: from mga14.intel.com (mga14.intel.com [192.55.52.115]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 4EC7A5E15B for ; Fri, 22 Apr 2022 09:24:46 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1650644686; x=1682180686; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=Vt1k0LQ7FZrACCG80zbmslw1bj5E6h5aWaZBqnwMCLU=; b=KTqeMHwLwQyY0RmIsyrXB+I6EazsUC1oy5pj637Wz6bOygG0dISN20wQ 7k8i0uxPVN03ut5RXdqjZs2yI824iMYnmieWUjexEr/8TXVDAxiAd0A9g DoE0BV7fL3aHo+CyHWvc3qeQYjmHyjIuzWGgdkW3TxsSqjzpJJNLn5D+F RQmXv99ANyRUzG5aWScWkCLntKp5eq16qg8uQ46V2bLAo/xnp4aZhmVnh e/9MHJrH58L/hait/JDBzRODrdzU+le6BFJdn3FIQ0TDWQIqsR1CE5l4T L7sGus2H8S6/lJkbntghbGiV750rifggjb/hJVDKfPnIN761FCpGb56pn A==; X-IronPort-AV: E=McAfee;i="6400,9594,10324"; a="264885925" X-IronPort-AV: E=Sophos;i="5.90,282,1643702400"; d="scan'208";a="264885925" Received: from orsmga008.jf.intel.com ([10.7.209.65]) by fmsmga103.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 22 Apr 2022 09:24:34 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.90,282,1643702400"; d="scan'208";a="577978784" Received: from ahunter-desktop.fi.intel.com ([10.237.72.92]) by orsmga008.jf.intel.com with ESMTP; 22 Apr 2022 09:24: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 RFC 10/21] perf auxctrace: Add mmap_needed to auxtrace_mmap_params Date: Fri, 22 Apr 2022 19:23:51 +0300 Message-Id: <20220422162402.147958-11-adrian.hunter@intel.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20220422162402.147958-1-adrian.hunter@intel.com> References: <20220422162402.147958-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 2d015b0be549..9f01ce405971 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 Sun May 10 22:40:17 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 B1A09C433EF for ; Fri, 22 Apr 2022 16:25:47 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1445313AbiDVQ2i (ORCPT ); Fri, 22 Apr 2022 12:28:38 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:56352 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1387886AbiDVQ1l (ORCPT ); Fri, 22 Apr 2022 12:27:41 -0400 Received: from mga14.intel.com (mga14.intel.com [192.55.52.115]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id BC6A55E154 for ; Fri, 22 Apr 2022 09:24: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=1650644687; x=1682180687; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=ys8Hk8eQF8BRhiZkARHIem+hTKbaKHklfvSW0EfMEQ0=; b=Xye53/Q/jH0Em9EEEby69n7nzQeiDcIoIDdFB1yJMtXNggtWztL3uPhI Iir2LCsgKub5LW1UNu2AXaeCDFLWDloQHTA6b/uIbt315Xhedmz8kH7i+ vVOtcjDO1KTHoOLptyCfGJL8VqZ+GA00/9EjxFB2/1EAGpFZZiunatGV7 GJ5Os2/5jypfG9PvbhCyJJrm9EWfChGOaoL+a6Z4Qw+g3K1aWfxo+VPWz apFdFshE8UP/rIIkdfvcelvprnExAX0y6nIauu9gMzd1Aah8f4tj00C1Q NMeawdErTSWqfUzHUux76GUAKUk64eyiHX31bxLxuXW2sQeJcc+/3Pkcl Q==; X-IronPort-AV: E=McAfee;i="6400,9594,10324"; a="264885946" X-IronPort-AV: E=Sophos;i="5.90,282,1643702400"; d="scan'208";a="264885946" Received: from orsmga008.jf.intel.com ([10.7.209.65]) by fmsmga103.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 22 Apr 2022 09:24:37 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.90,282,1643702400"; d="scan'208";a="577978822" Received: from ahunter-desktop.fi.intel.com ([10.237.72.92]) by orsmga008.jf.intel.com with ESMTP; 22 Apr 2022 09:24:34 -0700 From: Adrian Hunter To: Arnaldo Carvalho de Melo Cc: Jiri Olsa , Ian Rogers , Alexey Bayduraev , Namhyung Kim , Leo Yan , linux-kernel@vger.kernel.org Subject: [PATCH RFC 11/21] perf auxtrace: Remove auxtrace_mmap_params__set_idx() per_cpu parameter Date: Fri, 22 Apr 2022 19:23:52 +0300 Message-Id: <20220422162402.147958-12-adrian.hunter@intel.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20220422162402.147958-1-adrian.hunter@intel.com> References: <20220422162402.147958-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 9f01ce405971..246afe99a7fb 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 Sun May 10 22:40:17 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 CF46DC433EF for ; Fri, 22 Apr 2022 16:25:56 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1445278AbiDVQ2q (ORCPT ); Fri, 22 Apr 2022 12:28:46 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:56622 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1389635AbiDVQ1r (ORCPT ); Fri, 22 Apr 2022 12:27:47 -0400 Received: from mga14.intel.com (mga14.intel.com [192.55.52.115]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id AC2E4C5 for ; Fri, 22 Apr 2022 09:24: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=1650644692; x=1682180692; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=L3ZSVX63/s5yaZQxGEWHbqwz2MM9wxr6WnJ4e9be/eY=; b=LMKjjSOxZn40p8IC+WmW8t7/1UruEK7K1J7cONdyFMmFtSl1ey3oSrML 0bBTzH4QLn45v+IGLA7nc/LwULt3IQ9/CUVIr7aG7ifmPuzYorUZS43WT Wx3Bj/K3R7EJpgOcfsATVoe/TrknFmqe2QhVdnF7SVFYgtu7lUtm6gSVe vrE1nxilnISuQBF2tJJF2OqqApZnN4p2tvP6lBMF6njhyaQtKdhQt4RXv SlWGYSmyjY0++upASuPHSMRTv7W1g16pYUVO64HqImdzWrSvqgQKBMgrl Rwt3beU2RHXTPvmxhvysF8NHZHENw/IjkWz6TayH3J2Mms3i6mZUJ6Yx1 w==; X-IronPort-AV: E=McAfee;i="6400,9594,10324"; a="264885968" X-IronPort-AV: E=Sophos;i="5.90,282,1643702400"; d="scan'208";a="264885968" Received: from orsmga008.jf.intel.com ([10.7.209.65]) by fmsmga103.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 22 Apr 2022 09:24:39 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.90,282,1643702400"; d="scan'208";a="577978880" Received: from ahunter-desktop.fi.intel.com ([10.237.72.92]) by orsmga008.jf.intel.com with ESMTP; 22 Apr 2022 09:24:37 -0700 From: Adrian Hunter To: Arnaldo Carvalho de Melo Cc: Jiri Olsa , Ian Rogers , Alexey Bayduraev , Namhyung Kim , Leo Yan , linux-kernel@vger.kernel.org Subject: [PATCH RFC 12/21] perf evlist: Factor out evlist__dummy_event() Date: Fri, 22 Apr 2022 19:23:53 +0300 Message-Id: <20220422162402.147958-13-adrian.hunter@intel.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20220422162402.147958-1-adrian.hunter@intel.com> References: <20220422162402.147958-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 --- 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 Sun May 10 22:40:17 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 96ADBC433EF for ; Fri, 22 Apr 2022 16:26:03 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1446935AbiDVQ2y (ORCPT ); Fri, 22 Apr 2022 12:28:54 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:56676 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1390577AbiDVQ1t (ORCPT ); Fri, 22 Apr 2022 12:27:49 -0400 Received: from mga14.intel.com (mga14.intel.com [192.55.52.115]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 779D5C52 for ; Fri, 22 Apr 2022 09:24: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=1650644694; x=1682180694; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=p3ulNQ2ht9HlNWyV+bHdO7gatp7F4Zan+NkJzDLuSUM=; b=CnlG4Zmky8MXAPpwaMvi2C8M7nJkhmv8pZVisKJWes77JeZPIDEGY3pE FY0qoaVS1crBfT5zijoOdeTmTTvM/2ceHBtP3IUhkLAbxhlnhiuYDNmnm ynPcuDQn1DjjkdCo8Ll0VnMjA9zaMhRACU8owuw9CsY81+kHbEuAGfCsz JU23xxOWHPvt5NYSnPwBn6cTLMfN3W+YHUigQn5NWNdCdYV9msQib65wp chHPVs59Mr117AD6EigR+Y+AWFtV6wTP3g1QEFXTn61pNDiIKHYu07xf7 E9gnCGCOh/5Dau3j1Xh6CU1t/o/SIXrYmoXOnybPnhT8rX/Vahsfr/8tr A==; X-IronPort-AV: E=McAfee;i="6400,9594,10324"; a="264885978" X-IronPort-AV: E=Sophos;i="5.90,282,1643702400"; d="scan'208";a="264885978" Received: from orsmga008.jf.intel.com ([10.7.209.65]) by fmsmga103.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 22 Apr 2022 09:24:43 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.90,282,1643702400"; d="scan'208";a="577978926" Received: from ahunter-desktop.fi.intel.com ([10.237.72.92]) by orsmga008.jf.intel.com with ESMTP; 22 Apr 2022 09:24:40 -0700 From: Adrian Hunter To: Arnaldo Carvalho de Melo Cc: Jiri Olsa , Ian Rogers , Alexey Bayduraev , Namhyung Kim , Leo Yan , linux-kernel@vger.kernel.org Subject: [PATCH RFC 13/21] perf evlist: Add evlist__add_system_wide_dummy() Date: Fri, 22 Apr 2022 19:23:54 +0300 Message-Id: <20220422162402.147958-14-adrian.hunter@intel.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20220422162402.147958-1-adrian.hunter@intel.com> References: <20220422162402.147958-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 Sun May 10 22:40:17 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 EE4CFC433EF for ; Fri, 22 Apr 2022 16:26:10 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1445590AbiDVQ3C (ORCPT ); Fri, 22 Apr 2022 12:29:02 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:56678 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1390678AbiDVQ1t (ORCPT ); Fri, 22 Apr 2022 12:27:49 -0400 Received: from mga14.intel.com (mga14.intel.com [192.55.52.115]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id CF269DD1 for ; Fri, 22 Apr 2022 09:24: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=1650644694; x=1682180694; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=pTIPWG3rKADJejUjpz4vWXPl4+M9vgjae0Hy0+Q8pUM=; b=S8KC4m6A5k9W5r1bWRWe0j6OJKVfkAZNz0jVlIcAjncPwttz4+dLe4Tp XPvr7NHu59er8F3ZPciEOUChJC7WdNx8Fsy2DdXfSAFxDSfZR0AvP8+QZ Yrjj3nEPKsQmnigbWEMWiSZRDF5P6RznijJ7GEwXSXFr12dQ688mniNg6 2DrsVwypuJJaXz+46rY5yaZJ9J2oSv5toHnWEAtpFCV2lZSxB9AvjtRdp NY5aFWdRngkiTYRtT1Q2u8EljqqyN2/HzwDP9E0sqsVHRPnKDQX6Zks4B /uEwQjlvsFuzm86Zu7CmAvQ4tX6TbIkuJAU1beJYo++sn+krQhk0Urq6L w==; X-IronPort-AV: E=McAfee;i="6400,9594,10324"; a="264885992" X-IronPort-AV: E=Sophos;i="5.90,282,1643702400"; d="scan'208";a="264885992" Received: from orsmga008.jf.intel.com ([10.7.209.65]) by fmsmga103.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 22 Apr 2022 09:24:45 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.90,282,1643702400"; d="scan'208";a="577978962" Received: from ahunter-desktop.fi.intel.com ([10.237.72.92]) by orsmga008.jf.intel.com with ESMTP; 22 Apr 2022 09:24: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 RFC 14/21] perf record: Use evlist__add_system_wide_dummy() in record__config_text_poke() Date: Fri, 22 Apr 2022 19:23:55 +0300 Message-Id: <20220422162402.147958-15-adrian.hunter@intel.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20220422162402.147958-1-adrian.hunter@intel.com> References: <20220422162402.147958-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 --- 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 Sun May 10 22:40:17 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 2D145C433EF for ; Fri, 22 Apr 2022 16:26:07 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1447012AbiDVQ26 (ORCPT ); Fri, 22 Apr 2022 12:28:58 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:56680 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1390632AbiDVQ1t (ORCPT ); Fri, 22 Apr 2022 12:27:49 -0400 Received: from mga14.intel.com (mga14.intel.com [192.55.52.115]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 9E285F3D for ; Fri, 22 Apr 2022 09:24:55 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1650644695; x=1682180695; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=yRpvc/5+lKYY2ErIrQ4yRGXINSu1VtbNTt3ZM+FzuEQ=; b=CH7wft1TsXLGXU0lCNh8lNC6SassYSn7Z/EDAPDfwSFTQSwbPTOV41wC 4Ftb2OfGSQFfj9z2Kc4nUh0qoijLID3Irj9fQb1iAVlu5wOuRQfGjs1+T e/ilAMbaOR6d67NKpa8BaHsTCeLeJEwzIn/hJWos7myjx/amKBab1NOCU 18m15M0hFre2gNGEUjYo2LPgjbIG6i+Ac9CJefUSI1lJv1d9ZttujmXHt aefoaJ5OuEuQCNNFsK4WQ+we+zxIh7aiTTCq1jhrkEpZ4s73/mScZ6rdw UTTfxfRnSpUdEk9WNoiGPi8pmUx+zhkKub9UtX+APTk0X/PDn4gvlO7TV A==; X-IronPort-AV: E=McAfee;i="6400,9594,10324"; a="264886003" X-IronPort-AV: E=Sophos;i="5.90,282,1643702400"; d="scan'208";a="264886003" Received: from orsmga008.jf.intel.com ([10.7.209.65]) by fmsmga103.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 22 Apr 2022 09:24:48 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.90,282,1643702400"; d="scan'208";a="577979045" Received: from ahunter-desktop.fi.intel.com ([10.237.72.92]) by orsmga008.jf.intel.com with ESMTP; 22 Apr 2022 09:24: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 RFC 15/21] perf intel-pt: Use evlist__add_system_wide_dummy() for switch tracking Date: Fri, 22 Apr 2022 19:23:56 +0300 Message-Id: <20220422162402.147958-16-adrian.hunter@intel.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20220422162402.147958-1-adrian.hunter@intel.com> References: <20220422162402.147958-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 --- 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 Sun May 10 22:40:17 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 4549BC433EF for ; Fri, 22 Apr 2022 16:25:59 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1446356AbiDVQ2v (ORCPT ); Fri, 22 Apr 2022 12:28:51 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:56692 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1390699AbiDVQ1t (ORCPT ); Fri, 22 Apr 2022 12:27:49 -0400 Received: from mga14.intel.com (mga14.intel.com [192.55.52.115]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 8A053F5C for ; Fri, 22 Apr 2022 09:24: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=1650644696; x=1682180696; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=uLF6qXh+XOVZJNuYD6lAJ6RB4iqOqKmveOdC3HuSOiQ=; b=NFMIkR1P8GCbmaQcIhc78tBMLgqxGdHOWXeURDLicnbhUQkSmDMiABtY rbJ8XgF2kPhzncB0sZMv+ncEqOmLHpbxrA6WCYFou/KHBgZ2oV4iurQBF YKL0KP/j76pK7eNGmwwkWC3loLJp20GqokgSQox4q+P/D0mvrCYD2ik5D zNe/KOebxcyjdO936JYL4ZEJbCUVo3p0LmefaEB1U9ko+lUslmrlE+RE0 ZfFCp60A9+5MsjJPB05NqbpzlQfsRIPdPTiQghUGp7w1ofhIUIG+4bYm3 uz7dqcqQ9QWuRDydc4+ITfsJBeJXQ46+siKSdbO7VKMGE0QhjsdZE1j1B g==; X-IronPort-AV: E=McAfee;i="6400,9594,10324"; a="264886024" X-IronPort-AV: E=Sophos;i="5.90,282,1643702400"; d="scan'208";a="264886024" Received: from orsmga008.jf.intel.com ([10.7.209.65]) by fmsmga103.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 22 Apr 2022 09:24:51 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.90,282,1643702400"; d="scan'208";a="577979087" Received: from ahunter-desktop.fi.intel.com ([10.237.72.92]) by orsmga008.jf.intel.com with ESMTP; 22 Apr 2022 09:24:48 -0700 From: Adrian Hunter To: Arnaldo Carvalho de Melo Cc: Jiri Olsa , Ian Rogers , Alexey Bayduraev , Namhyung Kim , Leo Yan , linux-kernel@vger.kernel.org Subject: [PATCH RFC 16/21] perf intel-pt: Track sideband system-wide when needed Date: Fri, 22 Apr 2022 19:23:57 +0300 Message-Id: <20220422162402.147958-17-adrian.hunter@intel.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20220422162402.147958-1-adrian.hunter@intel.com> References: <20220422162402.147958-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 --- 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 Sun May 10 22:40:17 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 C9332C433EF for ; Fri, 22 Apr 2022 16:26:13 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1448544AbiDVQ3E (ORCPT ); Fri, 22 Apr 2022 12:29:04 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:56710 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1390750AbiDVQ1u (ORCPT ); Fri, 22 Apr 2022 12:27:50 -0400 Received: from mga14.intel.com (mga14.intel.com [192.55.52.115]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id E5BFED3 for ; Fri, 22 Apr 2022 09:24: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=1650644696; x=1682180696; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=mn97wix6KuEnrkmvZoRJV7qzJ02kU04RKfYf9B9+Cws=; b=BwCp9z0abbtj6iIEmp4HXV8+vSE6qM7Wzs4eAXTTrDAvtitwAm9GKzPB jAd2oR4fAlR9Qy18GHjKt/Q8S4QoB2XmPYXWsKedGEn0o4ApJFO/AfwBj Hawsv7d+eP+oUSoHlVF8lapjJjOgXwCBX+a/g4YmEDNLEKlxeYxjscHQZ qvDx3mq6yUUr4gUle5wWlTEj5fekNp7d+EIUn2L2Ld2kPHReFeTQQcq/C AxHZus9lNkumLrAq2LxyOAgBSV2ysTh1PKJ5jWpI1ggycNFZ+9JLmSkSt GKlXl3RXCBjefAaqd3lH9g/hsrfIxcTTWLHHQgBivWF6bseGYdS0tG0IR w==; X-IronPort-AV: E=McAfee;i="6400,9594,10324"; a="264886049" X-IronPort-AV: E=Sophos;i="5.90,282,1643702400"; d="scan'208";a="264886049" Received: from orsmga008.jf.intel.com ([10.7.209.65]) by fmsmga103.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 22 Apr 2022 09:24:54 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.90,282,1643702400"; d="scan'208";a="577979154" Received: from ahunter-desktop.fi.intel.com ([10.237.72.92]) by orsmga008.jf.intel.com with ESMTP; 22 Apr 2022 09:24:51 -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 RFC 17/21] perf tools: Allow all_cpus to be a superset of user_requested_cpus Date: Fri, 22 Apr 2022 19:23:58 +0300 Message-Id: <20220422162402.147958-18-adrian.hunter@intel.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20220422162402.147958-1-adrian.hunter@intel.com> References: <20220422162402.147958-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. Signed-off-by: Adrian Hunter Acked-by: Ian Rogers --- 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..42127cfd9cc1 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 evlst__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 evlst__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 (evlst__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 246afe99a7fb..bac1f1eb95a7 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 Sun May 10 22:40:17 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 0749DC433EF for ; Fri, 22 Apr 2022 16:26:17 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1387692AbiDVQ3I (ORCPT ); Fri, 22 Apr 2022 12:29:08 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:56774 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1391246AbiDVQ1z (ORCPT ); Fri, 22 Apr 2022 12:27:55 -0400 Received: from mga14.intel.com (mga14.intel.com [192.55.52.115]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 1325210FE for ; Fri, 22 Apr 2022 09:25: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=1650644701; x=1682180701; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=KDhM/WmO5qwWzplHvUxX9lpSM1PSGCnUMDibz7ihk2M=; b=hTfuvk24ME5ZUZ28kQ7r4oy8Vm1HJDAkaBS4lB3nubPV7F+CJ/3SYbwZ xzXN9O8fM6RJxqqC5BPo+KBBrtoPa0av3Cu1ytbhRsV4VvjWWL++7JB93 rzKf4bgnRyEBmbL/IcR2jKD8V1eMLz55uZiY18dzQyAC7CepIm2adXFl7 GuP3DfFuFmu34oiCRV51bcMUfdgXgebKPcYPg5cJwjJrVdfbeu4FcwynX zQrt12+9RjieWhF1QXwKLBXsOwiZORLuCKzCS5r91/k9/DnuwHm2cQxYu maXTL+3HejPmSth5WIhw/fm41l5XvCGBLB8yNsFIxltUPWnT+De1RrVZV g==; X-IronPort-AV: E=McAfee;i="6400,9594,10324"; a="264886057" X-IronPort-AV: E=Sophos;i="5.90,282,1643702400"; d="scan'208";a="264886057" Received: from orsmga008.jf.intel.com ([10.7.209.65]) by fmsmga103.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 22 Apr 2022 09:24:57 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.90,282,1643702400"; d="scan'208";a="577979190" Received: from ahunter-desktop.fi.intel.com ([10.237.72.92]) by orsmga008.jf.intel.com with ESMTP; 22 Apr 2022 09:24:55 -0700 From: Adrian Hunter To: Arnaldo Carvalho de Melo Cc: Jiri Olsa , Ian Rogers , Alexey Bayduraev , Namhyung Kim , Leo Yan , linux-kernel@vger.kernel.org Subject: [PATCH RFC 18/21] libperf evlist: Allow mixing per-thread and per-cpu mmaps Date: Fri, 22 Apr 2022 19:23:59 +0300 Message-Id: <20220422162402.147958-19-adrian.hunter@intel.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20220422162402.147958-1-adrian.hunter@intel.com> References: <20220422162402.147958-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 --- tools/lib/perf/evlist.c | 34 +++++----------------------------- 1 file changed, 5 insertions(+), 29 deletions(-) diff --git a/tools/lib/perf/evlist.c b/tools/lib/perf/evlist.c index 048b546f9444..37dfa9d936a7 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,12 @@ 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); + /* One for each thread */ + nr_mmaps +=3D perf_thread_map__nr(evlist->threads); + /* Minus the dummy CPU or dummy thread */ + nr_mmaps -=3D 1; =20 return nr_mmaps; } @@ -573,7 +553,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 +571,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 Sun May 10 22:40:17 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 521F8C433F5 for ; Fri, 22 Apr 2022 16:26:24 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1358264AbiDVQ3N (ORCPT ); Fri, 22 Apr 2022 12:29:13 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:56802 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1381177AbiDVQ14 (ORCPT ); Fri, 22 Apr 2022 12:27:56 -0400 Received: from mga14.intel.com (mga14.intel.com [192.55.52.115]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id A877538B6 for ; Fri, 22 Apr 2022 09:25: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=1650644702; x=1682180702; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=kh5GrxX7BtQNX/p26r5XNPIn2pP8qTcb4tHRBFpRyNw=; b=GZE1IKkflgHp7evaKz9rXJb4TmXFq2XoRlK4CweeJYeFZvpjAf9Oc3XE u4Y21LEphwdhG5Q2O2iPuL0m3d2/2CkZPo/5gh1/tW3kVe/ryroq+XXqA qKzVfjhDRxC+SGrknlb9cqylLXImKJEIMk9vX77DOQfqb+hQSB321tV3J HhRLpIXjd9+XhUeGTsw8ekFt0S7Z7DjLWttkaTjKq8xhFFITrnJCe8Nx1 vhwjiJY+xG+5S9FPylaG0HyrwRQZA9OfKPWnyn98i6UfkQZM93Peqt/6T W1znKi9S9r3Qb6FWjQyx5NeycHXAXkhaI4Okc7fPeLki2LB6YZABArIrU w==; X-IronPort-AV: E=McAfee;i="6400,9594,10324"; a="264886074" X-IronPort-AV: E=Sophos;i="5.90,282,1643702400"; d="scan'208";a="264886074" Received: from orsmga008.jf.intel.com ([10.7.209.65]) by fmsmga103.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 22 Apr 2022 09:25:01 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.90,282,1643702400"; d="scan'208";a="577979224" Received: from ahunter-desktop.fi.intel.com ([10.237.72.92]) by orsmga008.jf.intel.com with ESMTP; 22 Apr 2022 09:24: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 RFC 19/21] perf stat: Add requires_cpu flag for uncore Date: Fri, 22 Apr 2022 19:24:00 +0300 Message-Id: <20220422162402.147958-20-adrian.hunter@intel.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20220422162402.147958-1-adrian.hunter@intel.com> References: <20220422162402.147958-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 --- 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 37dfa9d936a7..9fbcca3fc836 100644 --- a/tools/lib/perf/evlist.c +++ b/tools/lib/perf/evlist.c @@ -42,7 +42,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 a96f106dc93a..8972ae546cfe 100644 --- a/tools/perf/builtin-stat.c +++ b/tools/perf/builtin-stat.c @@ -364,9 +364,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 @@ -2224,7 +2221,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 2a1729e7aee4..81bbddb6fbc0 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 dd84fed698a3..783359017548 100644 --- a/tools/perf/util/parse-events.c +++ b/tools/perf/util/parse-events.c @@ -350,7 +350,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 Sun May 10 22:40:17 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 2F47CC433EF for ; Fri, 22 Apr 2022 16:26:29 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1390383AbiDVQ3U (ORCPT ); Fri, 22 Apr 2022 12:29:20 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:56934 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1384264AbiDVQ2D (ORCPT ); Fri, 22 Apr 2022 12:28:03 -0400 Received: from mga14.intel.com (mga14.intel.com [192.55.52.115]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 7E0DA11155 for ; Fri, 22 Apr 2022 09:25: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=1650644706; x=1682180706; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=yeBgAM+azx5UIk4Q54bxYbRGOTwsttwK2yuNrO0b0h0=; b=O4jgleHjsAzzAEHivZBCvpNGUQk77JOCb4rVV3F+klDzUm4VGhwNy+Gn Eitd5ZqIKaiVAvAIfIsrT2Ih8El9urkY5eRHZlfXGi+wtCBjRISOmyrWI d37TiiKHxKAw/LYJ20elfUJplB4SiCU/G45crIrkJhLTg3oxUkkTBSPJG wywKB/5L+rp88UynqfWGveFQBHFGR3ZgxpOlgxqFq5DQWW59po4NijNvx yoh65gfMpNpjnKi6q8G6piZfRqrWLwLWMZ3uapZR32HFg3JEUKKXKnV/T AcUb0MZaFeUuzZemKj7gXB6iJUZ4jjLisbs4S3Ld4oWrGUoD9AximTumP g==; X-IronPort-AV: E=McAfee;i="6400,9594,10324"; a="264886091" X-IronPort-AV: E=Sophos;i="5.90,282,1643702400"; d="scan'208";a="264886091" Received: from orsmga008.jf.intel.com ([10.7.209.65]) by fmsmga103.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 22 Apr 2022 09:25:03 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.90,282,1643702400"; d="scan'208";a="577979268" Received: from ahunter-desktop.fi.intel.com ([10.237.72.92]) by orsmga008.jf.intel.com with ESMTP; 22 Apr 2022 09:25: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 RFC 20/21] perf tools: Allow system-wide events to keep their own CPUs Date: Fri, 22 Apr 2022 19:24:01 +0300 Message-Id: <20220422162402.147958-21-adrian.hunter@intel.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20220422162402.147958-1-adrian.hunter@intel.com> References: <20220422162402.147958-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 --- 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 9fbcca3fc836..51fd550e326f 100644 --- a/tools/lib/perf/evlist.c +++ b/tools/lib/perf/evlist.c @@ -39,12 +39,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 Sun May 10 22:40:17 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 AB17DC433EF for ; Fri, 22 Apr 2022 16:26:35 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1387585AbiDVQ3Y (ORCPT ); Fri, 22 Apr 2022 12:29:24 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:56938 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1384500AbiDVQ2D (ORCPT ); Fri, 22 Apr 2022 12:28:03 -0400 Received: from mga14.intel.com (mga14.intel.com [192.55.52.115]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id BB5A05F4D for ; Fri, 22 Apr 2022 09:25: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=1650644707; x=1682180707; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=+j3iX2VD2lFE9udYfL2G3MvXc1UL3QsUfNRYOFA+AGI=; b=cVUim6ki3o/FtLSYueYsJV1xaTihWCpuxKd1bH8U+8ZSw4Ey5pAGrTD5 ZL4q888LStejmZtPnatAAVGxcJiAfQWCjugmO5Dwq54xw1+skre7VzzEa oUS8k7O3P66XGOipwcYknYqKHMk15b0lFX5Adj/yLwssT7Kz74NjT/8Gr 0bCPAapO5QqabonrcZLiKfasZZmJ5TqngDky89wV3Av5hg0JvuLbmJ3CS jgskNg5JG3SWpgZR5t2yhMk2VYzcwMebiXFpnXdkBNVcVDFgVr0KTmEI0 s6TSrPTs+Fhr18QcHYMPW+jGIiDMqnM0GE+iW+jPRkn0T9pjVGI51YKaP A==; X-IronPort-AV: E=McAfee;i="6400,9594,10324"; a="264886111" X-IronPort-AV: E=Sophos;i="5.90,282,1643702400"; d="scan'208";a="264886111" Received: from orsmga008.jf.intel.com ([10.7.209.65]) by fmsmga103.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 22 Apr 2022 09:25:07 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.90,282,1643702400"; d="scan'208";a="577979314" Received: from ahunter-desktop.fi.intel.com ([10.237.72.92]) by orsmga008.jf.intel.com with ESMTP; 22 Apr 2022 09:25:04 -0700 From: Adrian Hunter To: Arnaldo Carvalho de Melo Cc: Jiri Olsa , Ian Rogers , Alexey Bayduraev , Namhyung Kim , Leo Yan , linux-kernel@vger.kernel.org Subject: [PATCH RFC 21/21] perf tools: Allow system-wide events to keep their own threads Date: Fri, 22 Apr 2022 19:24:02 +0300 Message-Id: <20220422162402.147958-22-adrian.hunter@intel.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20220422162402.147958-1-adrian.hunter@intel.com> References: <20220422162402.147958-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 --- 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 51fd550e326f..076a27650491 100644 --- a/tools/lib/perf/evlist.c +++ b/tools/lib/perf/evlist.c @@ -51,8 +51,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