From nobody Thu Apr 2 15:41:22 2026 Received: from mail-dl1-f74.google.com (mail-dl1-f74.google.com [74.125.82.74]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id B06EF2C21C3 for ; Wed, 11 Feb 2026 01:52:51 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=74.125.82.74 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1770774772; cv=none; b=VkO94Lw1xVSCMbgKJ2QifBnISspRLNVWY48Gs/21iog9OMr9LiSOXVSqnPnow7qzrbQq90VByfUI4XEPOI2I4qcppXrbDturFqh3a8sSH1bvIQ4PnNiSGl+xpkS9r3PqOBz2LrOyUC19MJd8s/S5fRHBWpQlU30YtPd/rT1Tqoo= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1770774772; c=relaxed/simple; bh=uNTfHUocnOftuWBq+9ueR5iUH5fQ6qeUFnzVqSchyQ0=; h=Date:In-Reply-To:Mime-Version:References:Message-ID:Subject:From: To:Content-Type; b=HqqXiK/08T5/i6nybLp/bLTgkuN+MLUupa0CWSvPMzRenwN5mtGf8Re5aPNVQ7Hy7Di++fiXo19urz38teedSAWPRFtyhHegdXin2BOhI7y0YAydTzlq14heNaoVj3+S/KOWQtleRX/bWJb6e/OEqAfH0E+R0X8b/Af6SqPCT5s= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=google.com; spf=pass smtp.mailfrom=flex--irogers.bounces.google.com; dkim=pass (2048-bit key) header.d=google.com header.i=@google.com header.b=1oHHICut; arc=none smtp.client-ip=74.125.82.74 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=google.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=flex--irogers.bounces.google.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=google.com header.i=@google.com header.b="1oHHICut" Received: by mail-dl1-f74.google.com with SMTP id a92af1059eb24-124a38e8980so6051901c88.0 for ; Tue, 10 Feb 2026 17:52:51 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20230601; t=1770774771; x=1771379571; darn=vger.kernel.org; h=to:from:subject:message-id:references:mime-version:in-reply-to:date :from:to:cc:subject:date:message-id:reply-to; bh=uakCkLkxLsaDSQ+N9t+mbyUNrdUax4weIJC3dBUXFoo=; b=1oHHICutUtiMru0r/vmHdhqSUGK6qM3lOXvuKYODq4JWnPawsRRzoBWeIkkomEldJ3 5xyvFUVd7OH4HgA4X9nIxDrRFghUXJ43oGDcC8+QNGPJVxOS5R1HUPGnBVgMyl0rDvHp TOIcXXzGZAdu7208SSk1nyOMuM9AxmWj3uvldsZAd/W9swvH1ec14AcyxOLbd8IX6QGh dL4IhWZGE8N0oh73NYK6frgaJj1HfG37qw3j3JcR/nMYzKiF1qcIAPTTGFoB38oDzw// MO/VcYNlPW7l1ApIxyrHGQXqA9x7aUEvLgFU8o0harUdk4l2DgavhpjSFsXEJL7QwFeY 3vwQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1770774771; x=1771379571; h=to:from:subject:message-id:references:mime-version:in-reply-to:date :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=uakCkLkxLsaDSQ+N9t+mbyUNrdUax4weIJC3dBUXFoo=; b=OlckdUVbuokVBsMRoStXGu++UHfAl24tH8KDAZO9dvhofWJP8uxkTRaPd53htUzYZu W8yKVJ8AdL9RHFwJ4H2AoEg5yjJWo5UAa8mrESP/PJcRtNNGJuDI1X6c2rUepD1njW+s JeZx0wgTUERNYgv2WDo/HuEEM4jEu/GCljC8Fh0pR5Moowg+QtPTKnU+t7lD1UgvWojv woiUVGc3Vq1PUs1dgr6Wjx/qxztUgeMoF7a7iwoUwGSiMgsbsI/1tewmR8OD2ovACEAz 2JHGuYQhIZ6fTQX7tg+UQDMVdJTAWhqx2VzffJDyAYR0zi3/hnoNI3kn4AW7q81NwDXa rt5w== X-Forwarded-Encrypted: i=1; AJvYcCWQ5cppUrHcogja0rEWcn0o+wvnlDTP+u50hfjFsYkaEbSSK+vfA0Rr6TZ+gAJhm4c7zsCNYa98NF4fJcE=@vger.kernel.org X-Gm-Message-State: AOJu0Yz73aZ/fYX9yg+99kwa4SrScyCkOD2if/M/N475AtvNaL+dmICh 3DenDD6zedrtqQtftMizlKFRdXPJm11uFHhgnRt8x3/LbkReTlroZCTY6hsioleze/6nxi2Oa2t ALvKlTLE1Rw== X-Received: from dlbdt17.prod.google.com ([2002:a05:7022:2591:b0:124:9fac:9425]) (user=irogers job=prod-delivery.src-stubby-dispatcher) by 2002:a05:7022:ba9:b0:11a:c8f4:3216 with SMTP id a92af1059eb24-127298460d0mr342243c88.15.1770774770658; Tue, 10 Feb 2026 17:52:50 -0800 (PST) Date: Tue, 10 Feb 2026 17:52:38 -0800 In-Reply-To: <20260211015242.2700218-1-irogers@google.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: Mime-Version: 1.0 References: <20260211015242.2700218-1-irogers@google.com> X-Mailer: git-send-email 2.53.0.239.g8d8fc8a987-goog Message-ID: <20260211015242.2700218-2-irogers@google.com> Subject: [PATCH v1 1/5] perf check: Add libbabeltrace to the listed features From: Ian Rogers To: Peter Zijlstra , Ingo Molnar , Arnaldo Carvalho de Melo , Namhyung Kim , Alexander Shishkin , Jiri Olsa , Ian Rogers , Adrian Hunter , James Clark , Derek Foreman , linux-kernel@vger.kernel.org, linux-perf-users@vger.kernel.org Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" This enables scripts to more easily determine if `perf data --to-ctf` is supported. Signed-off-by: Ian Rogers --- tools/perf/builtin-check.c | 1 + 1 file changed, 1 insertion(+) diff --git a/tools/perf/builtin-check.c b/tools/perf/builtin-check.c index 27a41beeaddf..3641d263b345 100644 --- a/tools/perf/builtin-check.c +++ b/tools/perf/builtin-check.c @@ -43,6 +43,7 @@ struct feature_status supported_features[] =3D { FEATURE_STATUS("dwarf_getlocations", HAVE_LIBDW_SUPPORT), FEATURE_STATUS("dwarf-unwind", HAVE_DWARF_UNWIND_SUPPORT), FEATURE_STATUS_TIP("libbfd", HAVE_LIBBFD_SUPPORT, "Deprecated, license in= compatibility, use BUILD_NONDISTRO=3D1 and install binutils-dev[el]"), + FEATURE_STATUS("libbabeltrace", HAVE_LIBBABELTRACE_SUPPORT), FEATURE_STATUS("libbpf-strings", HAVE_LIBBPF_STRINGS_SUPPORT), FEATURE_STATUS("libcapstone", HAVE_LIBCAPSTONE_SUPPORT), FEATURE_STATUS("libdw-dwarf-unwind", HAVE_LIBDW_SUPPORT), --=20 2.53.0.239.g8d8fc8a987-goog From nobody Thu Apr 2 15:41:22 2026 Received: from mail-dl1-f74.google.com (mail-dl1-f74.google.com [74.125.82.74]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 99B402D0C8B for ; Wed, 11 Feb 2026 01:52:53 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=74.125.82.74 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1770774774; cv=none; b=tVVbKee4NGlJHtcIykiYoQGwbsDmpeJs9zkocPq2rebwc6hozqzd2sqVZxPDo202ygwOL3jp9UD0LcI2fZbWspbKyy18kQTfwSF2Ri87sClzGnK2s2Axq/QQ9kSVK6tt+jFGtGaX2862RUPjWSCoF9cSPacoZRNs1/A3+kG4eNA= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1770774774; c=relaxed/simple; bh=GtzZQe4Cyczg2thV7yGZJSLtC9TeQUSKesXkt8zVUEA=; h=Date:In-Reply-To:Mime-Version:References:Message-ID:Subject:From: To:Content-Type; b=jAzbSaNfvmrcpOjfaGA+iWncScaz7mRrtOmiGTFoKKraJ5ruhrxAWisBsu6vigSSVPeZv1AlbvWArHx93WnoLUZrZUhAn+K7XqieNNdfa/Qg+cyhUUKhNEWuEOH/mLcct0ZLrQDwkoaCnGXhE8eyb7FiINwGCUFtrIq84cXAIyA= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=google.com; spf=pass smtp.mailfrom=flex--irogers.bounces.google.com; dkim=pass (2048-bit key) header.d=google.com header.i=@google.com header.b=btr48qNI; arc=none smtp.client-ip=74.125.82.74 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=google.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=flex--irogers.bounces.google.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=google.com header.i=@google.com header.b="btr48qNI" Received: by mail-dl1-f74.google.com with SMTP id a92af1059eb24-124aa710af7so28038804c88.1 for ; Tue, 10 Feb 2026 17:52:53 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20230601; t=1770774773; x=1771379573; darn=vger.kernel.org; h=to:from:subject:message-id:references:mime-version:in-reply-to:date :from:to:cc:subject:date:message-id:reply-to; bh=3/qLzlsqfHs+dLny8bu5w2UvyZ2sO7c+56V79RBEKH0=; b=btr48qNIUCx57yBoIEB8H5cRgXMvr/pGAh4IzBphPReW2/wgAahkcw6mcelaCDN4Pk Wf/Td8dS6A6VJDXvxUdmNtGuBUfwR+pBHyP6FHy31HtYiiQIM6bm3z61olD49RY48w8e bFCDwnACKwfyMp4TpQ5BysAqKROjBidhUIR6QC2p0azUJ3UHsqlbTdLqpJImXngwsmBe aTHyQQ9VH2ANa05Bht2XiZTRgUU5MnU8fA2FUz8l7LsfpJx6MMSwDKCfkkB515oJf50L smQ2h5u/pgfaLboBSu1hebpqPF9of0F9G1LL4hj3QQ8TStOfiGFpwUllyw+McTWN5AXF oGNQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1770774773; x=1771379573; h=to:from:subject:message-id:references:mime-version:in-reply-to:date :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=3/qLzlsqfHs+dLny8bu5w2UvyZ2sO7c+56V79RBEKH0=; b=cUUlDEsvA/mAapq9VZVHfFYvzWDYG+ZiidxvzA3RDo2/c+i4inDGqJhyxow52wVuWQ 5tx31z7pRdOJjVF89TLjMOQmwDgs4XWje1AVVAsZ6ANM0aQa70sKJXjukzLg5FYkWs0c HpkmcRvlhp/i3DtGyjH9dlMY1BJlGkTcwj+c6Fv2EjVzB9Sh4veXvZ1e7gpyI61vUfbf ptosI5g9lErC80kYOyggx5HNzcBdwXQhZTfG8qWZS+m10i16O3+olsmoyg6vrahqHlGR NBb/LmyplMh3KzKlzWIZyXoIKizmfL02TGgDcDs7nCZ5CMfB86GqJwFwNkhTkqSLDM5P 8l5g== X-Forwarded-Encrypted: i=1; AJvYcCWp/TWNU9LA4TTGU8ihPMmCwfF1QeRFVxYbqpvLubvinFK/QRvy76rtKl9F7k1yNZTNMfRlbh/wrqiHL/g=@vger.kernel.org X-Gm-Message-State: AOJu0YwYPBtj/KHGPHxI2/p9jn9ppU5pPzBkfcnzXUN4gc4ffZY3aHIm Q4FAC3kiGR59YgxiyEfejxrPeGNxpO8ATUW8pIP7RmEesDecRClfEnPW/zZeOdQaJywC1cG0Fq5 g37m+CFZUlw== X-Received: from dlbdd17.prod.google.com ([2002:a05:7022:a91:b0:127:cec:12cd]) (user=irogers job=prod-delivery.src-stubby-dispatcher) by 2002:a05:7022:102:b0:123:34e8:ae96 with SMTP id a92af1059eb24-1272437e6fdmr2166858c88.37.1770774772750; Tue, 10 Feb 2026 17:52:52 -0800 (PST) Date: Tue, 10 Feb 2026 17:52:39 -0800 In-Reply-To: <20260211015242.2700218-1-irogers@google.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: Mime-Version: 1.0 References: <20260211015242.2700218-1-irogers@google.com> X-Mailer: git-send-email 2.53.0.239.g8d8fc8a987-goog Message-ID: <20260211015242.2700218-3-irogers@google.com> Subject: [PATCH v1 2/5] perf json: Pipe mode --to-json support From: Ian Rogers To: Peter Zijlstra , Ingo Molnar , Arnaldo Carvalho de Melo , Namhyung Kim , Alexander Shishkin , Jiri Olsa , Ian Rogers , Adrian Hunter , James Clark , Derek Foreman , linux-kernel@vger.kernel.org, linux-perf-users@vger.kernel.org Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" In pipe mode the environment may not be fully initialized so be robust to fields being NULL. Add default handling of feature and attr events. Signed-off-by: Ian Rogers --- tools/perf/util/data-convert-json.c | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/tools/perf/util/data-convert-json.c b/tools/perf/util/data-con= vert-json.c index eefa3a94c813..6a626322476a 100644 --- a/tools/perf/util/data-convert-json.c +++ b/tools/perf/util/data-convert-json.c @@ -48,6 +48,9 @@ struct convert_json { static void output_json_string(FILE *out, const char *s) { fputc('"', out); + if (!s) + goto out; + while (*s) { switch (*s) { =20 @@ -71,6 +74,7 @@ static void output_json_string(FILE *out, const char *s) =20 ++s; } +out: fputc('"', out); } =20 @@ -322,6 +326,16 @@ static void output_headers(struct perf_session *sessio= n, struct convert_json *c) output_json_format(out, false, 2, "]"); } =20 +static int process_feature_event(const struct perf_tool *tool __maybe_unus= ed, + struct perf_session *session, + union perf_event *event) +{ + if (event->feat.feat_id < HEADER_LAST_FEATURE) + return perf_event__process_feature(session, event); + + return 0; +} + int bt_convert__perf2json(const char *input_name, const char *output_name, struct perf_data_convert_opts *opts __maybe_unused) { @@ -360,6 +374,8 @@ int bt_convert__perf2json(const char *input_name, const= char *output_name, c.tool.auxtrace_info =3D perf_event__process_auxtrace_info; c.tool.auxtrace =3D perf_event__process_auxtrace; c.tool.event_update =3D perf_event__process_event_update; + c.tool.attr =3D perf_event__process_attr; + c.tool.feature =3D process_feature_event; c.tool.ordering_requires_timestamps =3D true; =20 if (opts->all) { --=20 2.53.0.239.g8d8fc8a987-goog From nobody Thu Apr 2 15:41:22 2026 Received: from mail-dy1-f201.google.com (mail-dy1-f201.google.com [74.125.82.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 0409C2C1788 for ; Wed, 11 Feb 2026 01:52:55 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=74.125.82.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1770774778; cv=none; b=QFEWKyZmSa5buzfUTtXBzElU4GbmXoAJH8z3JHANiaEg7ro0HYUMwMMZ5mRe/HK6Mprr7Pg25Rhr2fO/+2TDreiL4NQhYyU6Lvp5vaVDy6hMSt1jg5u98CqocoocB9+FjukY4ZjgPcV+phja119LTAtwzcnB/SqlPoyu/d5Mmbs= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1770774778; c=relaxed/simple; bh=Q8lcCWydMDVujK6/wN03/oysJCuCldnfOF+1TNRE1EE=; h=Date:In-Reply-To:Mime-Version:References:Message-ID:Subject:From: To:Content-Type; b=q5qEWVnbUCmIzVEevpplQe9L8Kahj+TusL65gmG0vpQct+/Br6W/r8VVA30gqbRHDUa5XpRDwuefohMMdlZwWOiDssOrUq6CT312diMBrflXs00a5S0H+0srKqmfatYrX6ADBEdWdv0qTP5On/MU6OpkK7w3GXveBgsxddqH75w= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=google.com; spf=pass smtp.mailfrom=flex--irogers.bounces.google.com; dkim=pass (2048-bit key) header.d=google.com header.i=@google.com header.b=W4mjrpKs; arc=none smtp.client-ip=74.125.82.201 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=google.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=flex--irogers.bounces.google.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=google.com header.i=@google.com header.b="W4mjrpKs" Received: by mail-dy1-f201.google.com with SMTP id 5a478bee46e88-2b7ef896edcso23271337eec.0 for ; Tue, 10 Feb 2026 17:52:55 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20230601; t=1770774775; x=1771379575; darn=vger.kernel.org; h=to:from:subject:message-id:references:mime-version:in-reply-to:date :from:to:cc:subject:date:message-id:reply-to; bh=UiHopQidaKUSI5zxqKq6dP/VKpRLeTJcWrFTpufmmAw=; b=W4mjrpKsu6wDztF088m97a6k2Zrtk0ZBEQlD4mjVKt3NcUCfE5bWGITlDDXfnsqzng LIwZyjHao20adz5fsyxKx8PjV67gxUSDTbe4BMEuM5zMrDw2JsaQimyfG8OKgfxcorN/ kIY5TVtc5g7Jj+la4dpEbUvMEwn4Zy67GFTneGqL9+o4Uirbe1+CWLnj6T96nrKjWXu5 NjSdq3fvjFTidUNb2vOH+otMaPplKR4Yg05ci8u+6a2TlmQgGATxduTJTNE1qanH4yvP jBarUkwQNFN9Lh4mnr+PdHh/QoKK8I76ZGDLK0ImR/l5hkcpZlX+2uH2HyltTdue9RxU AudQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1770774775; x=1771379575; h=to:from:subject:message-id:references:mime-version:in-reply-to:date :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=UiHopQidaKUSI5zxqKq6dP/VKpRLeTJcWrFTpufmmAw=; b=LUz4DyukZYrRUCmooCHp2f/gTW/uP1Aie0TzxGgMCK92KG7ZclnVL0jNZ50ZVi/zPx dBNvTXEWq0zvPblYnKcXHNTHFNovapX0eOjcCduYx8Su4ktqe9CNa4ACFxBLwaLjF09N OHRUE75ZKoptY0e04oZMxtuIgRTiYUqCeaiW0oKCmAODk0WkT9dkbIjjnGOlC75aHl/m In90lybLuxtJAXxe0YZq28TVWI3b/2ijQ28FbDyqQCluMrx5meonj8xrnlVxUJrA3Lkc q3QpdlVOWyGPNqaYmlaxYtVkGnezFSV7xm0Eiqvx61ag/6STKwpFzl1DsQ2f1l23jcKn p9tg== X-Forwarded-Encrypted: i=1; AJvYcCXcnRSMXE7LxKzTVmVh4MxZ86KP3Aj7kjD0ra9JEq4KqXLyaMy0akFaOLxkV2hQP7m7ULsimcvwxrfEWxI=@vger.kernel.org X-Gm-Message-State: AOJu0YyxLeMmvzkJXViTc977VPuQfMgkZ3EohbrbWU3GrIQP/0GG12AE /fZx1+Iu42r+MQmBRd7xu/70gGouYWBT7Fk4jN4XKnt297wNaMtSmBACoYIvhH1ThkXRz9Hfn13 s6maQVq18dQ== X-Received: from dybgj26.prod.google.com ([2002:a05:7301:11a:b0:2b7:d91:b4a2]) (user=irogers job=prod-delivery.src-stubby-dispatcher) by 2002:a05:7300:fd07:b0:2ba:7b0b:e20a with SMTP id 5a478bee46e88-2ba9e16832bmr96757eec.37.1770774774552; Tue, 10 Feb 2026 17:52:54 -0800 (PST) Date: Tue, 10 Feb 2026 17:52:40 -0800 In-Reply-To: <20260211015242.2700218-1-irogers@google.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: Mime-Version: 1.0 References: <20260211015242.2700218-1-irogers@google.com> X-Mailer: git-send-email 2.53.0.239.g8d8fc8a987-goog Message-ID: <20260211015242.2700218-4-irogers@google.com> Subject: [PATCH v1 3/5] perf json: Pipe mode --to-ctf support From: Ian Rogers To: Peter Zijlstra , Ingo Molnar , Arnaldo Carvalho de Melo , Namhyung Kim , Alexander Shishkin , Jiri Olsa , Ian Rogers , Adrian Hunter , James Clark , Derek Foreman , linux-kernel@vger.kernel.org, linux-perf-users@vger.kernel.org Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" In pipe mode the environment may not be fully initialized so be robust to fields being NULL. Add default handling of attr events, use the feature events to populate the ctf writer environment. Signed-off-by: Ian Rogers --- tools/perf/util/data-convert-bt.c | 54 +++++++++++++++++++++++++++++-- 1 file changed, 52 insertions(+), 2 deletions(-) diff --git a/tools/perf/util/data-convert-bt.c b/tools/perf/util/data-conve= rt-bt.c index a22e9049ff30..ba1c8e48d495 100644 --- a/tools/perf/util/data-convert-bt.c +++ b/tools/perf/util/data-convert-bt.c @@ -35,6 +35,7 @@ #include "clockid.h" #include "util/sample.h" #include "util/time-utils.h" +#include "header.h" =20 #ifdef HAVE_LIBTRACEEVENT #include @@ -1338,7 +1339,8 @@ static void cleanup_events(struct perf_session *sessi= on) struct evsel_priv *priv; =20 priv =3D evsel->priv; - bt_ctf_event_class_put(priv->event_class); + if (priv) + bt_ctf_event_class_put(priv->event_class); zfree(&evsel->priv); } =20 @@ -1387,7 +1389,7 @@ static int ctf_writer__setup_env(struct ctf_writer *c= w, =20 #define ADD(__n, __v) \ do { \ - if (bt_ctf_writer_add_environment_field(writer, __n, __v)) \ + if (__v && bt_ctf_writer_add_environment_field(writer, __n, __v)) \ return -1; \ } while (0) =20 @@ -1403,6 +1405,52 @@ do { \ return 0; } =20 +static int process_feature_event(const struct perf_tool *tool, + struct perf_session *session, + union perf_event *event) +{ + struct convert *c =3D container_of(tool, struct convert, tool); + struct ctf_writer *cw =3D &c->writer; + struct perf_record_header_feature *fe =3D &event->feat; + + if (event->feat.feat_id < HEADER_LAST_FEATURE) { + int ret =3D perf_event__process_feature(session, event); + + if (ret) + return ret; + } + + switch (fe->feat_id) { + case HEADER_HOSTNAME: + if (session->header.env.hostname) { + return bt_ctf_writer_add_environment_field(cw->writer, "host", + session->header.env.hostname); + } + break; + case HEADER_OSRELEASE: + if (session->header.env.os_release) { + return bt_ctf_writer_add_environment_field(cw->writer, "release", + session->header.env.os_release); + } + break; + case HEADER_VERSION: + if (session->header.env.version) { + return bt_ctf_writer_add_environment_field(cw->writer, "version", + session->header.env.version); + } + break; + case HEADER_ARCH: + if (session->header.env.arch) { + return bt_ctf_writer_add_environment_field(cw->writer, "machine", + session->header.env.arch); + } + break; + default: + break; + } + return 0; +} + static int ctf_writer__setup_clock(struct ctf_writer *cw, struct perf_session *session, bool tod) @@ -1635,6 +1683,8 @@ int bt_convert__perf2ctf(const char *input, const cha= r *path, c.tool.tracing_data =3D perf_event__process_tracing_data; c.tool.build_id =3D perf_event__process_build_id; c.tool.namespaces =3D perf_event__process_namespaces; + c.tool.attr =3D perf_event__process_attr; + c.tool.feature =3D process_feature_event; c.tool.ordering_requires_timestamps =3D true; =20 if (opts->all) { --=20 2.53.0.239.g8d8fc8a987-goog From nobody Thu Apr 2 15:41:22 2026 Received: from mail-dy1-f202.google.com (mail-dy1-f202.google.com [74.125.82.202]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id F23112C11CD for ; Wed, 11 Feb 2026 01:52:56 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=74.125.82.202 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1770774778; cv=none; b=ETId/RvEPFCtOE43yhslDzaWcXvSTvWnoT/aPPIbQwU9a3HNr0xT7Vsqjcup27cP8zZD3YCG85MaIe9dfltTeOb0s83lzrJ5Rhqn87TCVzGmft1PKlCWkVn+a3TOY27PYUraXZzRu8mZ5RHLAIQJCI8widf04oC3dBt50tsTZHA= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1770774778; c=relaxed/simple; bh=DTG0wCe4l1QOCzgg/LUvHjey36vrzgciu/XJHppJvVg=; h=Date:In-Reply-To:Mime-Version:References:Message-ID:Subject:From: To:Content-Type; b=jbEh3iFWgyCKLFKmeHjnG80E4McfD0HdqOLQfybC9GiguFB/ga/+/VeC1wFQL18CBtVU7fzEjuUZfMm7hV6kVqBUapSfBgO0OoOpDnS2yo10bjl8I72m8AytyGgjaEXL7QwHrwLwpv+SKtSPxkJKM5/9HwoBn6LkYo+DPzG9vCE= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=google.com; spf=pass smtp.mailfrom=flex--irogers.bounces.google.com; dkim=pass (2048-bit key) header.d=google.com header.i=@google.com header.b=EPT4UQg4; arc=none smtp.client-ip=74.125.82.202 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=google.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=flex--irogers.bounces.google.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=google.com header.i=@google.com header.b="EPT4UQg4" Received: by mail-dy1-f202.google.com with SMTP id 5a478bee46e88-2b86381a107so26101655eec.1 for ; Tue, 10 Feb 2026 17:52:56 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20230601; t=1770774776; x=1771379576; darn=vger.kernel.org; h=to:from:subject:message-id:references:mime-version:in-reply-to:date :from:to:cc:subject:date:message-id:reply-to; bh=wopudxpZqJa8+pPTelgcXkgtvWVCN6h00NLP/d6pFt0=; b=EPT4UQg4wGMjKEr6fw/SZpIem8oUJTSWpL1LBvmu1UmNmLbo8USfntb+oD1GUtstI4 azGm0+zRf8aQrCXLkszSKmJdgA/EeWORur/qc0dhfaowUvyh/rrJ4GR2rem04BYNROqK XxLNIwAIxc41Gmp5FjmcHlKxEpyJu2KX3I+VnyldeKMjb6c9ZpYGcAqcEgMWaqCQupMN mOOHytKOCjyq1ozZiX5PbdKvPH0/YN+HvhFGI/13JhbPdzoGLqVId75NpxOWkAiU69It 74k0oLcl8qHrxYHsyiXSJjLt/5TdA2nejbfHWEo6EZSi1GsgHJVbkY7lgZYfy8ReL9qt MCVg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1770774776; x=1771379576; h=to:from:subject:message-id:references:mime-version:in-reply-to:date :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=wopudxpZqJa8+pPTelgcXkgtvWVCN6h00NLP/d6pFt0=; b=eFvBS6y2Qp0+HzueXQthgCm8e4aMmLmrBKIRiSxs22WDprBwdy+rF+WMKklU/xuDg7 Sd4i6OntCXjBfFhhcng2xffPjF7tZkBBCOue5kmQL/ccbXbost1cgUrAWJ1LCws8Q5B7 +FCvyyGyA5r1fXiON+fySyhRBO0lZDej29s0FgdXe/i9Z3BQXqdf/+fJ1dkHc0NfEum8 xx1Ff+QlfPwxi1Pv+MqOKEYOwWMcTk7KwW974yIsq7sj4V+n9954iz1vZa5xiI5+IPTJ 12NQJnDXR7YPXaVygo7rok/Cnk4bUlxYaIgaGZxf4AA8WHsPaxtI7HOR9iyfYOfChqQU eflQ== X-Forwarded-Encrypted: i=1; AJvYcCX4exNdPD1HpP/yoJvTqmmysA/Zgh0/i0qPOFbQsXyE6R8RCWPVqlyO47+W8uj7BJOa8p3r9o5NfZXL3KY=@vger.kernel.org X-Gm-Message-State: AOJu0YwObAq3Qy/eWNqDA1U+3ci5gB9qC6ljnWTe+Rvcf6/WQ55t8HY2 NK3h3LrJssu/3mkcs3LhrZqRNOfmpjUpx0ERSWBzE2icxgkLHKfZchJuOGP/asZF2K0wjkJ/AZv MqEML29axcw== X-Received: from dycnr4-n2.prod.google.com ([2002:a05:7300:e9c4:20b0:2ba:895a:ddb2]) (user=irogers job=prod-delivery.src-stubby-dispatcher) by 2002:a05:7300:dc05:b0:2ba:8f47:fe4f with SMTP id 5a478bee46e88-2ba9e080163mr116493eec.18.1770774776135; Tue, 10 Feb 2026 17:52:56 -0800 (PST) Date: Tue, 10 Feb 2026 17:52:41 -0800 In-Reply-To: <20260211015242.2700218-1-irogers@google.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: Mime-Version: 1.0 References: <20260211015242.2700218-1-irogers@google.com> X-Mailer: git-send-email 2.53.0.239.g8d8fc8a987-goog Message-ID: <20260211015242.2700218-5-irogers@google.com> Subject: [PATCH v1 4/5] perf test: Test pipe mode with data conversion --to-json From: Ian Rogers To: Peter Zijlstra , Ingo Molnar , Arnaldo Carvalho de Melo , Namhyung Kim , Alexander Shishkin , Jiri Olsa , Ian Rogers , Adrian Hunter , James Clark , Derek Foreman , linux-kernel@vger.kernel.org, linux-perf-users@vger.kernel.org Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Add pipe mode test for json data conversion. Tidy up exit and cleanup code. Signed-off-by: Ian Rogers --- .../shell/test_perf_data_converter_json.sh | 33 ++++++++++++++----- 1 file changed, 24 insertions(+), 9 deletions(-) diff --git a/tools/perf/tests/shell/test_perf_data_converter_json.sh b/tool= s/perf/tests/shell/test_perf_data_converter_json.sh index c4f1b59d116f..35d81e39a26c 100755 --- a/tools/perf/tests/shell/test_perf_data_converter_json.sh +++ b/tools/perf/tests/shell/test_perf_data_converter_json.sh @@ -15,29 +15,42 @@ result=3D$(mktemp /tmp/__perf_test.output.json.XXXXX) =20 cleanup() { - rm -f "${perfdata}" + rm -f "${perfdata}*" rm -f "${result}" trap - exit term int } =20 trap_cleanup() { + echo "Unexpected signal in ${FUNCNAME[1]}" cleanup - exit ${err} + exit 1 } trap trap_cleanup exit term int =20 test_json_converter_command() { - echo "Testing Perf Data Convertion Command to JSON" - perf record -o "$perfdata" -F 99 -g -- perf test -w noploop > /dev/null 2= >&1 - perf data convert --to-json "$result" --force -i "$perfdata" >/dev/null 2= >&1 + echo "Testing Perf Data Conversion Command to JSON" + perf record -o "$perfdata" -F 99 -g -- perf test -w noploop + perf data convert --to-json "$result" --force -i "$perfdata" if [ "$(cat ${result} | wc -l)" -gt "0" ] ; then echo "Perf Data Converter Command to JSON [SUCCESS]" else echo "Perf Data Converter Command to JSON [FAILED]" err=3D1 - exit + fi +} + +test_json_converter_pipe() +{ + echo "Testing Perf Data Conversion Command to JSON (Pipe mode)" + perf record -o - -F 99 -g -- perf test -w noploop > "$perfdata" + cat "$perfdata" | perf data convert --to-json "$result" --force -i - + if [ "$(cat ${result} | wc -l)" -gt "0" ] ; then + echo "Perf Data Converter Command to JSON (Pipe mode) [SUCCESS]" + else + echo "Perf Data Converter Command to JSON (Pipe mode) [FAILED]" + err=3D1 fi } =20 @@ -50,16 +63,18 @@ validate_json_format() else echo "The file does not contain valid JSON format [FAILED]" err=3D1 - exit fi else echo "File not found [FAILED]" - err=3D2 - exit + err=3D1 fi } =20 test_json_converter_command validate_json_format =20 +test_json_converter_pipe +validate_json_format + +cleanup exit ${err} --=20 2.53.0.239.g8d8fc8a987-goog From nobody Thu Apr 2 15:41:22 2026 Received: from mail-dy1-f202.google.com (mail-dy1-f202.google.com [74.125.82.202]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id BDDE72D6407 for ; Wed, 11 Feb 2026 01:52:58 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=74.125.82.202 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1770774780; cv=none; b=dMcdXdF90eDu3HRv06RBcXaeaFSdTv3p9bYnBG4u29rc8qcd33oQDN9GHohAyHqICAgWu6/0A0oVXquoyOj5o6SW2aED06znAD9DLaA3BiCoPN1a7zHY6ar7papl2ebXpg+LRVhvWUiGLqqGmTxYJdvQ88tHiseh63fYfXGFh1o= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1770774780; c=relaxed/simple; bh=tQHrkngzVLUEqGsMf/7XWZpqU1lbr91is2l0EGQbIBI=; h=Date:In-Reply-To:Mime-Version:References:Message-ID:Subject:From: To:Content-Type; b=Wo6iezXsCbER9bB5YdUpMqOVrITWcv5IYT6DmMWp/1rxlKeVq8CH17/8Y8LvE+yizJskZlAGEfEajgtKIuI4K+lRixXxvPUehH8gUPqe68mWlG1GkPbBjRCc31U06tIV8aU5tWgou1P1CRWcpzfXTk02xVzsxX1e+zZUMtLtkts= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=google.com; spf=pass smtp.mailfrom=flex--irogers.bounces.google.com; dkim=pass (2048-bit key) header.d=google.com header.i=@google.com header.b=X+dUx1/k; arc=none smtp.client-ip=74.125.82.202 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=google.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=flex--irogers.bounces.google.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=google.com header.i=@google.com header.b="X+dUx1/k" Received: by mail-dy1-f202.google.com with SMTP id 5a478bee46e88-2ba9a744f7dso466564eec.0 for ; Tue, 10 Feb 2026 17:52:58 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20230601; t=1770774778; x=1771379578; darn=vger.kernel.org; h=to:from:subject:message-id:references:mime-version:in-reply-to:date :from:to:cc:subject:date:message-id:reply-to; bh=z/GTs5A9yek4he0BUlqIoIsxHRmHOoQilOIUJRqh028=; b=X+dUx1/ku5ehRavVOUt0AZynPHHNl8iFUuUVzloC2yPNiyIEHMDljQ/vjrCa+9BJn5 Uim4Wc5uHjX1sCWJYyQUOOj+cVc8SDkmpeUiLXENeeyQQUwy8oSML1g/4DahWrDlH4GF x99/zFFs02mOZw2ur/u/IUDJ2mxh526I87TsOwNQg6yZ0/zKgdhpaGoxij48ZGyzTCQv 8ChBipy+mQMy4qzPAtV/FlezuW64ELL3VAeXUw9PSMrjUGrQsTUUfLkA1q1Tpn6em2yt hEXJA0MEMtpZzzm87BRH07TL8JFGLgNrIjIuB/eNcjfYBwgC3fogy8+3ltDFiy1NK7sC 91LQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1770774778; x=1771379578; h=to:from:subject:message-id:references:mime-version:in-reply-to:date :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=z/GTs5A9yek4he0BUlqIoIsxHRmHOoQilOIUJRqh028=; b=mixfBQmKiAXH+iEE1wo7miTW9UtdvIOrHPiDevEjKaXIR3Li1Smbe7ZEa+eK8QOZZZ teOneGMlrVI5vKnVpgbo9Ed2lHc6nS3BSxgp3xK8oRLZeQkeiMFLx+LUoMDGr1w4xO6t 06uFiKiKXZX5wtNC7a2W6ZiVnFxoLx3kF+qzRdE8wV4wOorFwiyEoy45FVBaRldUeDnS 9ey7J8DURq4Tzx+3NtrxBQwYyoQjXetartSTElv/j2tMb3AgJQaKst77oDr4pNVZyyLH bwNAilRW75mKHbnGqqKvYu1pT7RY/167zDTaSBHHdHHtvqYJtbsqFFG6ZenfHNcQXnc2 P2Gw== X-Forwarded-Encrypted: i=1; AJvYcCX8Sgq2ydN3VeadLRgtRDYCwUAUmNa6MVIZr77bf6U1QaVvQq+3dXfdFGom7rBqxdyqR1gs84t1e19LSh8=@vger.kernel.org X-Gm-Message-State: AOJu0YwWD4zrWpI5mgWO4M8WhWHMNrjWPCxVCJcBpZhGuPXQJm3P2tK+ xlAMNUqavMYGlHOtT8GzG4+hM2oQYKDVuYp7yRdJ2V2f5ttxrJ8GyxPqAvy3XrlIhCgsDLX+a+X 0m2kwvOE89A== X-Received: from dybhf8.prod.google.com ([2002:a05:7301:2a08:b0:2ac:3025:bdaa]) (user=irogers job=prod-delivery.src-stubby-dispatcher) by 2002:a05:7301:2f99:b0:2b7:2664:ae9f with SMTP id 5a478bee46e88-2ba9e01564emr134737eec.1.1770774778056; Tue, 10 Feb 2026 17:52:58 -0800 (PST) Date: Tue, 10 Feb 2026 17:52:42 -0800 In-Reply-To: <20260211015242.2700218-1-irogers@google.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: Mime-Version: 1.0 References: <20260211015242.2700218-1-irogers@google.com> X-Mailer: git-send-email 2.53.0.239.g8d8fc8a987-goog Message-ID: <20260211015242.2700218-6-irogers@google.com> Subject: [PATCH v1 5/5] perf test: perf data --to-ctf testing From: Ian Rogers To: Peter Zijlstra , Ingo Molnar , Arnaldo Carvalho de Melo , Namhyung Kim , Alexander Shishkin , Jiri Olsa , Ian Rogers , Adrian Hunter , James Clark , Derek Foreman , linux-kernel@vger.kernel.org, linux-perf-users@vger.kernel.org Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" If babeltrace is detected check that --to-ctf functions with a data file and in pipe mode. Signed-off-by: Ian Rogers --- .../shell/test_perf_data_converter_ctf.sh | 104 ++++++++++++++++++ 1 file changed, 104 insertions(+) create mode 100755 tools/perf/tests/shell/test_perf_data_converter_ctf.sh diff --git a/tools/perf/tests/shell/test_perf_data_converter_ctf.sh b/tools= /perf/tests/shell/test_perf_data_converter_ctf.sh new file mode 100755 index 000000000000..334eebc9945e --- /dev/null +++ b/tools/perf/tests/shell/test_perf_data_converter_ctf.sh @@ -0,0 +1,104 @@ +#!/bin/bash +# 'perf data convert --to-ctf' command test +# SPDX-License-Identifier: GPL-2.0 + +set -e + +err=3D0 + +perfdata=3D$(mktemp /tmp/__perf_test.perf.data.XXXXX) +ctf_dir=3D$(mktemp -d /tmp/__perf_test.ctf.XXXXX) + +cleanup() +{ + rm -f "${perfdata}" + rm -rf "${ctf_dir}" + trap - exit term int +} + +trap_cleanup() +{ + echo "Unexpected signal in ${FUNCNAME[1]}" + cleanup + exit ${err} +} +trap trap_cleanup exit term int + +check_babeltrace_support() +{ + if ! perf check feature libbabeltrace + then + echo "perf not linked with libbabeltrace, skipping test" + exit 2 + fi +} + +test_ctf_converter_file() +{ + echo "Testing Perf Data Conversion Command to CTF (File input)" + # Record some data + if ! perf record -o "$perfdata" -F 99 -g -- perf test -w noploop + then + echo "Failed to record perf data" + err=3D1 + return + fi + + # Cleanup previous ctf dir + rm -rf "${ctf_dir}" + + # Convert + if ! perf data convert --to-ctf "$ctf_dir" --force -i "$perfdata" + then + echo "Perf Data Converter Command to CTF (File input) [FAILED]" + err=3D1 + return + fi + + if [ -d "${ctf_dir}" ] && [ "$(ls -A "${ctf_dir}")" ] + then + echo "Perf Data Converter Command to CTF (File input) [SUCCESS]" + else + echo "Perf Data Converter Command to CTF (File input) [FAILED]" + echo " Output directory empty or missing" + err=3D1 + fi +} + +test_ctf_converter_pipe() +{ + echo "Testing Perf Data Conversion Command to CTF (Pipe mode)" + + # Cleanup previous ctf dir + rm -rf "${ctf_dir}" + + # Record to stdout and pipe to $perfdata file + if ! perf record -o - -F 99 -g -- perf test -w noploop > "$perfdata" + then + echo "Failed to record perf data" + err=3D1 + return + fi + + if ! perf data convert --to-ctf "$ctf_dir" --force -i "$perfdata" + then + echo "Perf Data Converter Command to CTF (Pipe mode) [FAILED]" + err=3D1 + return + fi + + if [ -d "${ctf_dir}" ] && [ "$(ls -A "${ctf_dir}")" ] + then + echo "Perf Data Converter Command to CTF (Pipe mode) [SUCCESS]" + else + echo "Perf Data Converter Command to CTF (Pipe mode) [FAILED]" + echo " Output directory empty or missing" + err=3D1 + fi +} + +check_babeltrace_support +test_ctf_converter_file +test_ctf_converter_pipe + +exit ${err} --=20 2.53.0.239.g8d8fc8a987-goog