From nobody Wed Apr 29 08:07:30 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 E4F64C43334 for ; Fri, 10 Jun 2022 11:33:47 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1349272AbiFJLdn (ORCPT ); Fri, 10 Jun 2022 07:33:43 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:35872 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S243972AbiFJLdh (ORCPT ); Fri, 10 Jun 2022 07:33:37 -0400 Received: from mga11.intel.com (mga11.intel.com [192.55.52.93]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 6D51B6D4E6 for ; Fri, 10 Jun 2022 04:33:36 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1654860816; x=1686396816; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=7mNQZJduS5Qbm45AG8/qW2Xj9yJinjx1/z60P16hri4=; b=ijByJ1GKWmhw1yqlHPmav5q1OX94wSZWdHvAAjJY/ptI8/gtAtWXisJT LGRamJQ7BXhT283RQdIXDkVjYAHREt5R2TKqetf5CXWds+fHsdw5kH5AU p/GrXN//bZ9TR+7Ndk9Tn7RLnJwdTI8g5g2Mhh6M2F4voSsYIhfWmwoxw VNTXg2T3lFeX8CV6Nvty2St6sY8oM0vIjaWji8iFXAUSDKCluZVkhs60n H8W2okn8PhK/FxHHy449L9gT0nQKPuE5spqaHsCnYsbXU1aWGvAVw8GEP exRkhbm2+moXkOCYL4yd/VOpYvTM9RcVBMee2jdZyYofObgCXRKxnj8uF w==; X-IronPort-AV: E=McAfee;i="6400,9594,10373"; a="275134330" X-IronPort-AV: E=Sophos;i="5.91,290,1647327600"; d="scan'208";a="275134330" Received: from orsmga001.jf.intel.com ([10.7.209.18]) by fmsmga102.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 10 Jun 2022 04:33:36 -0700 X-IronPort-AV: E=Sophos;i="5.91,290,1647327600"; d="scan'208";a="616446311" Received: from ahunter6-mobl1.ger.corp.intel.com (HELO ahunter-VirtualBox.home\044ger.corp.intel.com) ([10.252.56.178]) by orsmga001-auth.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 10 Jun 2022 04:33:34 -0700 From: Adrian Hunter To: Arnaldo Carvalho de Melo Cc: Jiri Olsa , Ian Rogers , Namhyung Kim , linux-kernel@vger.kernel.org Subject: [PATCH 1/5] perf record: Always get text_poke events with --kcore option Date: Fri, 10 Jun 2022 14:33:12 +0300 Message-Id: <20220610113316.6682-2-adrian.hunter@intel.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20220610113316.6682-1-adrian.hunter@intel.com> References: <20220610113316.6682-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" kcore provides a copy of the running kernel including any modified code. A trace that benefits from that also benefits from text_poke events, so enable them. Signed-off-by: Adrian Hunter Acked-by: Ian Rogers --- tools/perf/builtin-record.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/tools/perf/builtin-record.c b/tools/perf/builtin-record.c index 9a71f0330137..3959a1b86afb 100644 --- a/tools/perf/builtin-record.c +++ b/tools/perf/builtin-record.c @@ -3805,6 +3805,9 @@ int cmd_record(int argc, const char **argv) goto out_opts; } =20 + if (rec->opts.kcore) + rec->opts.text_poke =3D true; + if (rec->opts.kcore || record__threads_enabled(rec)) rec->data.is_dir =3D true; =20 --=20 2.25.1 From nobody Wed Apr 29 08:07:30 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 4730AC433EF for ; Fri, 10 Jun 2022 11:33:53 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1349326AbiFJLdv (ORCPT ); Fri, 10 Jun 2022 07:33:51 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:36030 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S239649AbiFJLdj (ORCPT ); Fri, 10 Jun 2022 07:33:39 -0400 Received: from mga11.intel.com (mga11.intel.com [192.55.52.93]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 8B0BB6D4CC for ; Fri, 10 Jun 2022 04:33: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=1654860818; x=1686396818; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=NcnXb+DwGIBsEjgZbwiIKWIgHUj+IhZGk6fraGSrh4Y=; b=lAgmnUyskujTvt6jzVUSiDnhgbmBx2mt4lWrn7zJYb8Mf/BcDdwl8hcO Xbxb0/MG+cvAY5V8iDZzeq/eX7ANm84YuvKwnmBGYpChBN5jR/tEkzYFt I1g4h4Ba2UGzBbUs2sP+dL6h3HB73OhnZKbBI4ovZQ4fT7I0TOkX0P991 iNfUJZiIK1Oo3wSfOHif39BZou5aunKDO6ba5+0BWWNLU8aFh61tEcm/X 47sShVKdPOIKpQSqFPOjBgsMJApBabaYwqHo/YJRyCcqwtO2iRq4gcyRY ChDuUyZTh4pSFoFgFN44EcaYXRF/UYquOfh012hqlF/U8yQKqqhdczw9E A==; X-IronPort-AV: E=McAfee;i="6400,9594,10373"; a="275134346" X-IronPort-AV: E=Sophos;i="5.91,290,1647327600"; d="scan'208";a="275134346" Received: from orsmga001.jf.intel.com ([10.7.209.18]) by fmsmga102.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 10 Jun 2022 04:33:38 -0700 X-IronPort-AV: E=Sophos;i="5.91,290,1647327600"; d="scan'208";a="616446316" Received: from ahunter6-mobl1.ger.corp.intel.com (HELO ahunter-VirtualBox.home\044ger.corp.intel.com) ([10.252.56.178]) by orsmga001-auth.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 10 Jun 2022 04:33:36 -0700 From: Adrian Hunter To: Arnaldo Carvalho de Melo Cc: Jiri Olsa , Ian Rogers , Namhyung Kim , linux-kernel@vger.kernel.org Subject: [PATCH 2/5] perf record: Always record id index Date: Fri, 10 Jun 2022 14:33:13 +0300 Message-Id: <20220610113316.6682-3-adrian.hunter@intel.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20220610113316.6682-1-adrian.hunter@intel.com> References: <20220610113316.6682-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" In preparation for recording sideband events in a virtual machine guest so that they can be injected into a host perf.data file. Adjust the logic so that if there are IDs then the id index is recorded. Signed-off-by: Adrian Hunter Acked-by: Ian Rogers --- tools/perf/builtin-record.c | 12 +++++------- tools/perf/util/synthetic-events.c | 7 +++++-- 2 files changed, 10 insertions(+), 9 deletions(-) diff --git a/tools/perf/builtin-record.c b/tools/perf/builtin-record.c index 3959a1b86afb..00c2a6cdf1be 100644 --- a/tools/perf/builtin-record.c +++ b/tools/perf/builtin-record.c @@ -1834,13 +1834,11 @@ static int record__synthesize(struct record *rec, b= ool tail) goto out; =20 /* Synthesize id_index before auxtrace_info */ - if (rec->opts.auxtrace_sample_mode || rec->opts.full_auxtrace) { - err =3D perf_event__synthesize_id_index(tool, - process_synthesized_event, - session->evlist, machine); - if (err) - goto out; - } + err =3D perf_event__synthesize_id_index(tool, + process_synthesized_event, + session->evlist, machine); + if (err) + goto out; =20 if (rec->opts.full_auxtrace) { err =3D perf_event__synthesize_auxtrace_info(rec->itr, tool, diff --git a/tools/perf/util/synthetic-events.c b/tools/perf/util/synthetic= -events.c index 27acdc5e5723..d75074486a55 100644 --- a/tools/perf/util/synthetic-events.c +++ b/tools/perf/util/synthetic-events.c @@ -1719,14 +1719,17 @@ int perf_event__synthesize_id_index(struct perf_too= l *tool, perf_event__handler_ size_t nr =3D 0, i =3D 0, sz, max_nr, n; int err; =20 - pr_debug2("Synthesizing id index\n"); - max_nr =3D (UINT16_MAX - sizeof(struct perf_record_id_index)) / sizeof(struct id_index_entry); =20 evlist__for_each_entry(evlist, evsel) nr +=3D evsel->core.ids; =20 + if (!nr) + return 0; + + pr_debug2("Synthesizing id index\n"); + n =3D nr > max_nr ? max_nr : nr; sz =3D sizeof(struct perf_record_id_index) + n * sizeof(struct id_index_e= ntry); ev =3D zalloc(sz); --=20 2.25.1 From nobody Wed Apr 29 08:07:30 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 31357C43334 for ; Fri, 10 Jun 2022 11:33:57 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1349314AbiFJLdy (ORCPT ); Fri, 10 Jun 2022 07:33:54 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:36162 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1348119AbiFJLdm (ORCPT ); Fri, 10 Jun 2022 07:33:42 -0400 Received: from mga11.intel.com (mga11.intel.com [192.55.52.93]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id BB7D86D4CC for ; Fri, 10 Jun 2022 04:33: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=1654860820; x=1686396820; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=e1vhPHLiSQValJAhw3CDZixau0Aa6PRtpiOeWk3R4o8=; b=avtAGkNR/Q9JneoeB12FmzaWFY5837LbWmiLWvPeyRAHF8gKYa/Qvd5z NwPcBSIdZAK/tAoUWoJVw393IZwiR4/UAAVjXNMRLkul8lcGR33548jhG GccTdwAtkHnFb5bpG1eA6CQpf2/8UkkNi5z9GZI9GFXN2hHf55WM4W53A ty5LcX+pfqBc/QWYGsYSV3ayLeUvQ9Rq2eps2pd323k89zzhSQUhbF1u/ Vm6lFLYtCGrBOOJekj72HdQEGxX9D7z5pYEnuYOHRMO7oo1N/gGWSrIcB 1nV0P2OxPICjJZCbv3/5fRiqtguBd7AYc2c0+xSWuI1XgFin4PGUcyrh8 A==; X-IronPort-AV: E=McAfee;i="6400,9594,10373"; a="275134355" X-IronPort-AV: E=Sophos;i="5.91,290,1647327600"; d="scan'208";a="275134355" Received: from orsmga001.jf.intel.com ([10.7.209.18]) by fmsmga102.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 10 Jun 2022 04:33:40 -0700 X-IronPort-AV: E=Sophos;i="5.91,290,1647327600"; d="scan'208";a="616446327" Received: from ahunter6-mobl1.ger.corp.intel.com (HELO ahunter-VirtualBox.home\044ger.corp.intel.com) ([10.252.56.178]) by orsmga001-auth.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 10 Jun 2022 04:33:38 -0700 From: Adrian Hunter To: Arnaldo Carvalho de Melo Cc: Jiri Olsa , Ian Rogers , Namhyung Kim , linux-kernel@vger.kernel.org Subject: [PATCH 3/5] perf record: Add new option to sample identifier Date: Fri, 10 Jun 2022 14:33:14 +0300 Message-Id: <20220610113316.6682-4-adrian.hunter@intel.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20220610113316.6682-1-adrian.hunter@intel.com> References: <20220610113316.6682-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" In preparation for recording sideband events in a virtual machine guest so that they can be injected into a host perf.data file. Add an option to always include sample type PERF_SAMPLE_IDENTIFIER. Signed-off-by: Adrian Hunter Acked-by: Ian Rogers --- tools/perf/Documentation/perf-record.txt | 3 +++ tools/perf/builtin-record.c | 2 ++ tools/perf/util/record.c | 2 +- tools/perf/util/record.h | 1 + 4 files changed, 7 insertions(+), 1 deletion(-) diff --git a/tools/perf/Documentation/perf-record.txt b/tools/perf/Document= ation/perf-record.txt index cf8ad50f3de1..8fcea74fe3c2 100644 --- a/tools/perf/Documentation/perf-record.txt +++ b/tools/perf/Documentation/perf-record.txt @@ -313,6 +313,9 @@ OPTIONS --sample-cpu:: Record the sample cpu. =20 +--sample-identifier:: + Record the sample identifier. + -n:: --no-samples:: Don't sample. diff --git a/tools/perf/builtin-record.c b/tools/perf/builtin-record.c index 00c2a6cdf1be..40dca1fba4e3 100644 --- a/tools/perf/builtin-record.c +++ b/tools/perf/builtin-record.c @@ -3191,6 +3191,8 @@ static struct option __record_options[] =3D { OPT_BOOLEAN(0, "code-page-size", &record.opts.sample_code_page_size, "Record the sampled code address (ip) page size"), OPT_BOOLEAN(0, "sample-cpu", &record.opts.sample_cpu, "Record the sample = cpu"), + OPT_BOOLEAN(0, "sample-identifier", &record.opts.sample_identifier, + "Record the sample identifier"), OPT_BOOLEAN_SET('T', "timestamp", &record.opts.sample_time, &record.opts.sample_time_set, "Record the sample timestamps"), diff --git a/tools/perf/util/record.c b/tools/perf/util/record.c index 5b09ecbb05dc..b529636ab3ea 100644 --- a/tools/perf/util/record.c +++ b/tools/perf/util/record.c @@ -121,7 +121,7 @@ void evlist__config(struct evlist *evlist, struct recor= d_opts *opts, struct call evlist__for_each_entry(evlist, evsel) evsel__config_leader_sampling(evsel, evlist); =20 - if (opts->full_auxtrace) { + if (opts->full_auxtrace || opts->sample_identifier) { /* * Need to be able to synthesize and parse selected events with * arbitrary sample types, which requires always being able to diff --git a/tools/perf/util/record.h b/tools/perf/util/record.h index be9a957501f4..4269e916f450 100644 --- a/tools/perf/util/record.h +++ b/tools/perf/util/record.h @@ -28,6 +28,7 @@ struct record_opts { bool sample_time; bool sample_time_set; bool sample_cpu; + bool sample_identifier; bool period; bool period_set; bool running_time; --=20 2.25.1 From nobody Wed Apr 29 08:07:30 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 D9C41C433EF for ; Fri, 10 Jun 2022 11:34:01 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1344048AbiFJLd7 (ORCPT ); Fri, 10 Jun 2022 07:33:59 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:36262 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1349292AbiFJLdn (ORCPT ); Fri, 10 Jun 2022 07:33:43 -0400 Received: from mga11.intel.com (mga11.intel.com [192.55.52.93]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id E66936D94D for ; Fri, 10 Jun 2022 04:33:42 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1654860822; x=1686396822; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=DP04M9CvR3YFdJBU75oAgWcXukIu95k8odDTFy6luJA=; b=TLy906fwYzshGKGEU/OmnJkRp7jMfJaWvhGYkGUlPdP+hiVYHk1fl4ko 2BSRmVsytVWW5QiG7K7mJCLnRaAef/c1os8GzGzXtAayn6RHVaP+TioAX 7i7vGUyU3lDbjxPx68HGMPb2xyHTuHBnGDwVIJWQxjUuqTnSCSBoJtRDn yECqLT1FnN6MzFH6fn6KzkgG2xlDON+cm7Lw+aFAjLRgqxl7aiAyoEmha 3JqWbKwxAJqzJUBo9z3RXejdEqGiin14jQHoPKpRds2KZck5dL2rFj/5q s4jfZVLQ6M7oILKQ9L/pNHH6Iyppg9Mso1Qc9WNWJslZVxVQqv/qKNJKW A==; X-IronPort-AV: E=McAfee;i="6400,9594,10373"; a="275134376" X-IronPort-AV: E=Sophos;i="5.91,290,1647327600"; d="scan'208";a="275134376" Received: from orsmga001.jf.intel.com ([10.7.209.18]) by fmsmga102.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 10 Jun 2022 04:33:42 -0700 X-IronPort-AV: E=Sophos;i="5.91,290,1647327600"; d="scan'208";a="616446333" Received: from ahunter6-mobl1.ger.corp.intel.com (HELO ahunter-VirtualBox.home\044ger.corp.intel.com) ([10.252.56.178]) by orsmga001-auth.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 10 Jun 2022 04:33:40 -0700 From: Adrian Hunter To: Arnaldo Carvalho de Melo Cc: Jiri Olsa , Ian Rogers , Namhyung Kim , linux-kernel@vger.kernel.org Subject: [PATCH 4/5] perf record: Add finished init event Date: Fri, 10 Jun 2022 14:33:15 +0300 Message-Id: <20220610113316.6682-5-adrian.hunter@intel.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20220610113316.6682-1-adrian.hunter@intel.com> References: <20220610113316.6682-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" In preparation for recording sideband events in a virtual machine guest so that they can be injected into a host perf.data file. This is needed to enable injecting events after the initial synthesized user events (that have an all zero id sample) but before regular events. Signed-off-by: Adrian Hunter Acked-by: Ian Rogers --- tools/lib/perf/include/perf/event.h | 1 + tools/perf/builtin-inject.c | 1 + tools/perf/builtin-record.c | 27 +++++++++++++++++++++++++++ tools/perf/util/event.c | 1 + tools/perf/util/session.c | 4 ++++ tools/perf/util/tool.h | 3 ++- 6 files changed, 36 insertions(+), 1 deletion(-) diff --git a/tools/lib/perf/include/perf/event.h b/tools/lib/perf/include/p= erf/event.h index e7758707cadd..9f7ca070da87 100644 --- a/tools/lib/perf/include/perf/event.h +++ b/tools/lib/perf/include/perf/event.h @@ -389,6 +389,7 @@ enum perf_user_event_type { /* above any possible kerne= l type */ PERF_RECORD_TIME_CONV =3D 79, PERF_RECORD_HEADER_FEATURE =3D 80, PERF_RECORD_COMPRESSED =3D 81, + PERF_RECORD_FINISHED_INIT =3D 82, PERF_RECORD_HEADER_MAX }; =20 diff --git a/tools/perf/builtin-inject.c b/tools/perf/builtin-inject.c index a75bf11585b5..42e2918fd1cc 100644 --- a/tools/perf/builtin-inject.c +++ b/tools/perf/builtin-inject.c @@ -1059,6 +1059,7 @@ int cmd_inject(int argc, const char **argv) .stat =3D perf_event__repipe_op2_synth, .stat_round =3D perf_event__repipe_op2_synth, .feature =3D perf_event__repipe_op2_synth, + .finished_init =3D perf_event__repipe_op2_synth, .compressed =3D perf_event__repipe_op4_synth, .auxtrace =3D perf_event__repipe_auxtrace, }, diff --git a/tools/perf/builtin-record.c b/tools/perf/builtin-record.c index 40dca1fba4e3..cf5c5379ceaa 100644 --- a/tools/perf/builtin-record.c +++ b/tools/perf/builtin-record.c @@ -1388,6 +1388,11 @@ static struct perf_event_header finished_round_event= =3D { .type =3D PERF_RECORD_FINISHED_ROUND, }; =20 +static struct perf_event_header finished_init_event =3D { + .size =3D sizeof(struct perf_event_header), + .type =3D PERF_RECORD_FINISHED_INIT, +}; + static void record__adjust_affinity(struct record *rec, struct mmap *map) { if (rec->opts.affinity !=3D PERF_AFFINITY_SYS && @@ -1696,6 +1701,14 @@ static int record__synthesize_workload(struct record= *rec, bool tail) return err; } =20 +static int write_finished_init(struct record *rec, bool tail) +{ + if (rec->opts.tail_synthesize !=3D tail) + return 0; + + return record__write(rec, NULL, &finished_init_event, sizeof(finished_ini= t_event)); +} + static int record__synthesize(struct record *rec, bool tail); =20 static int @@ -1710,6 +1723,8 @@ record__switch_output(struct record *rec, bool at_exi= t) =20 record__aio_mmap_read_sync(rec); =20 + write_finished_init(rec, true); + record__synthesize(rec, true); if (target__none(&rec->opts.target)) record__synthesize_workload(rec, true); @@ -1764,6 +1779,7 @@ record__switch_output(struct record *rec, bool at_exi= t) */ if (target__none(&rec->opts.target)) record__synthesize_workload(rec, false); + write_finished_init(rec, false); } return fd; } @@ -2419,6 +2435,15 @@ static int __cmd_record(struct record *rec, int argc= , const char **argv) trigger_ready(&auxtrace_snapshot_trigger); trigger_ready(&switch_output_trigger); perf_hooks__invoke_record_start(); + + /* + * Must write FINISHED_INIT so it will be seen after all other + * synthesized user events, but before any regular events. + */ + err =3D write_finished_init(rec, false); + if (err < 0) + goto out_child; + for (;;) { unsigned long long hits =3D thread->samples; =20 @@ -2563,6 +2588,8 @@ static int __cmd_record(struct record *rec, int argc,= const char **argv) fprintf(stderr, "[ perf record: Woken up %ld times to write data ]\n", record__waking(rec)); =20 + write_finished_init(rec, true); + if (target__none(&rec->opts.target)) record__synthesize_workload(rec, true); =20 diff --git a/tools/perf/util/event.c b/tools/perf/util/event.c index 0476bb3a4188..1fa14598b916 100644 --- a/tools/perf/util/event.c +++ b/tools/perf/util/event.c @@ -76,6 +76,7 @@ static const char *perf_event__names[] =3D { [PERF_RECORD_TIME_CONV] =3D "TIME_CONV", [PERF_RECORD_HEADER_FEATURE] =3D "FEATURE", [PERF_RECORD_COMPRESSED] =3D "COMPRESSED", + [PERF_RECORD_FINISHED_INIT] =3D "FINISHED_INIT", }; =20 const char *perf_event__name(unsigned int id) diff --git a/tools/perf/util/session.c b/tools/perf/util/session.c index 0aa818977d2b..37f833c3c81b 100644 --- a/tools/perf/util/session.c +++ b/tools/perf/util/session.c @@ -562,6 +562,8 @@ void perf_tool__fill_defaults(struct perf_tool *tool) tool->feature =3D process_event_op2_stub; if (tool->compressed =3D=3D NULL) tool->compressed =3D perf_session__process_compressed_event; + if (tool->finished_init =3D=3D NULL) + tool->finished_init =3D process_event_op2_stub; } =20 static void swap_sample_id_all(union perf_event *event, void *data) @@ -1706,6 +1708,8 @@ static s64 perf_session__process_user_event(struct pe= rf_session *session, if (err) dump_event(session->evlist, event, file_offset, &sample, file_path); return err; + case PERF_RECORD_FINISHED_INIT: + return tool->finished_init(session, event); default: return -EINVAL; } diff --git a/tools/perf/util/tool.h b/tools/perf/util/tool.h index f2352dba1875..c957fb849ac6 100644 --- a/tools/perf/util/tool.h +++ b/tools/perf/util/tool.h @@ -76,7 +76,8 @@ struct perf_tool { stat_config, stat, stat_round, - feature; + feature, + finished_init; event_op4 compressed; event_op3 auxtrace; bool ordered_events; --=20 2.25.1 From nobody Wed Apr 29 08:07:30 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 428EEC43334 for ; Fri, 10 Jun 2022 11:34:06 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S242966AbiFJLeF (ORCPT ); Fri, 10 Jun 2022 07:34:05 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:36452 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1349311AbiFJLdp (ORCPT ); Fri, 10 Jun 2022 07:33:45 -0400 Received: from mga11.intel.com (mga11.intel.com [192.55.52.93]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 0AD466D971 for ; Fri, 10 Jun 2022 04:33:45 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1654860825; x=1686396825; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=kf7/+6h+TKchnxu3qzFXkCkggkGUpmXXxa1pbt5obz4=; b=GUCtUTHTRTCw+warPjtRW/fwzGr4BxXt8AjxR6KKHRb4+Wg2sAIfGbdK tf89fzHGxb1oDKiCtmXJ/pkkjtDNN329GLnetsxVaqyDiXAf+4qYvCykL JlnkN1uopitMZrXP5jTBtT1XTxi/CmBF3J9RrUvo5+wjoZClRPoaurYkw dVdYmYtRgY9w2GL3qccyedzcYkzovZhroGxsT8Lx1VMiLde54dM2US3p7 aE95Y97NXJ4BEJWnwPt4vpJoJjMt7jdVwVbtegZ52cLU8H0gN5OXqPsJS rkG0g6nq7l95IPYRLb4xQfTuPYhFsG9KBK4A1WEDarDdrtcBHqNusO+gD w==; X-IronPort-AV: E=McAfee;i="6400,9594,10373"; a="275134394" X-IronPort-AV: E=Sophos;i="5.91,290,1647327600"; d="scan'208";a="275134394" Received: from orsmga001.jf.intel.com ([10.7.209.18]) by fmsmga102.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 10 Jun 2022 04:33:44 -0700 X-IronPort-AV: E=Sophos;i="5.91,290,1647327600"; d="scan'208";a="616446336" Received: from ahunter6-mobl1.ger.corp.intel.com (HELO ahunter-VirtualBox.home\044ger.corp.intel.com) ([10.252.56.178]) by orsmga001-auth.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 10 Jun 2022 04:33:42 -0700 From: Adrian Hunter To: Arnaldo Carvalho de Melo Cc: Jiri Olsa , Ian Rogers , Namhyung Kim , linux-kernel@vger.kernel.org Subject: [PATCH 5/5] perf script: Add some missing event dumps Date: Fri, 10 Jun 2022 14:33:16 +0300 Message-Id: <20220610113316.6682-6-adrian.hunter@intel.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20220610113316.6682-1-adrian.hunter@intel.com> References: <20220610113316.6682-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" When the -D option is used, the details of thread-map, cpu-map and event-update events are not currently dumped. Add prints so that they are. Example: # perf record --kcore sleep 0.1 [ perf record: Woken up 1 times to write data ] [ perf record: Captured and wrote 0.021 MB perf.data (7 samples) ] # perf script -D | grep 'THREAD\|CPU' 0 0x4950 [0x28]: PERF_RECORD_THREAD_MAP nr: 1 thread: 35116 0 0x4978 [0x20]: PERF_RECORD_CPU_MAP: 0-7 # perf script -D | grep -A4 'UPDATE' 0 0x4920 [0x30]: PERF_RECORD_EVENT_UPDATE ... id: 147 ... 0-7 Signed-off-by: Adrian Hunter Acked-by: Ian Rogers --- tools/perf/builtin-script.c | 6 ++++++ tools/perf/util/header.c | 3 +++ 2 files changed, 9 insertions(+) diff --git a/tools/perf/builtin-script.c b/tools/perf/builtin-script.c index c689054002cc..7cf21ab16f4f 100644 --- a/tools/perf/builtin-script.c +++ b/tools/perf/builtin-script.c @@ -3633,6 +3633,9 @@ int process_thread_map_event(struct perf_session *ses= sion, struct perf_tool *tool =3D session->tool; struct perf_script *script =3D container_of(tool, struct perf_script, too= l); =20 + if (dump_trace) + perf_event__fprintf_thread_map(event, stdout); + if (script->threads) { pr_warning("Extra thread map event, ignoring.\n"); return 0; @@ -3652,6 +3655,9 @@ int process_cpu_map_event(struct perf_session *sessio= n, struct perf_tool *tool =3D session->tool; struct perf_script *script =3D container_of(tool, struct perf_script, too= l); =20 + if (dump_trace) + perf_event__fprintf_cpu_map(event, stdout); + if (script->cpus) { pr_warning("Extra cpu map event, ignoring.\n"); return 0; diff --git a/tools/perf/util/header.c b/tools/perf/util/header.c index 53332da100e8..de5b7a023e9e 100644 --- a/tools/perf/util/header.c +++ b/tools/perf/util/header.c @@ -4349,6 +4349,9 @@ int perf_event__process_event_update(struct perf_tool= *tool __maybe_unused, struct evsel *evsel; struct perf_cpu_map *map; =20 + if (dump_trace) + perf_event__fprintf_event_update(event, stdout); + if (!pevlist || *pevlist =3D=3D NULL) return -EINVAL; =20 --=20 2.25.1