From nobody Sun Feb 8 01:31:26 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 30E42EB64DC for ; Tue, 27 Jun 2023 04:35:37 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S229681AbjF0Efg (ORCPT ); Tue, 27 Jun 2023 00:35:36 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:33278 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229789AbjF0EfW (ORCPT ); Tue, 27 Jun 2023 00:35:22 -0400 Received: from mail-yw1-x114a.google.com (mail-yw1-x114a.google.com [IPv6:2607:f8b0:4864:20::114a]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 63500171A for ; Mon, 26 Jun 2023 21:35:21 -0700 (PDT) Received: by mail-yw1-x114a.google.com with SMTP id 00721157ae682-56942667393so52760737b3.2 for ; Mon, 26 Jun 2023 21:35:21 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20221208; t=1687840520; x=1690432520; h=to:from:subject:references:mime-version:message-id:in-reply-to:date :from:to:cc:subject:date:message-id:reply-to; bh=BRovkRSYzzjqItxtlGi5Ku78WYBIH4P5/AOwfUisZaE=; b=y7XhmE6qt1wChXjoDS+amZuWN+3tzf72jlmLxYvuJ85fONhTQPUIb/F+mszvVP069K RYCJ6hp9Yn1ZbUDyTRc/BasJ06VeZkEb/64XvzUxBFQSqn2nOUzey0B11GQ6pt88MDq1 iWkPGM4lVO3ItKcsgzX6wKjz66an+RwYxpMp+4wySxFgY4pgpyfHsbr5+N+AxlNyygEM wDz0YkNfXg6oPie74s4LC/3PxiSj+htPxLiPMiUwYbAV2l9wcAHOr43JQAqIwOz4SmwA bvmpEZYkoFxOxg0FibSun4dRq7PpyEsXscRED19dPk/sht5NHf/2tcmCohIkmQKgkWkU 1Q0w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1687840520; x=1690432520; h=to:from:subject:references:mime-version:message-id:in-reply-to:date :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=BRovkRSYzzjqItxtlGi5Ku78WYBIH4P5/AOwfUisZaE=; b=AoutNPNShkklpNHr2dtLZo6lvVUTIHFNDF66YpM90KVD2suYwV4HQjG8c5JgPFgm3z sGu25/HPES+m+/NJd3jUZRjJBPA4GTJaiYcPBgMxJX5kiPJabMZDlzbQoWnfa4Z4qz5M oWDdc/Qb+wxzuXnb+2JlxohXqPkcBqe0NTh7nKYApMryXufAFRTOaSM1N3rjaLtV0v51 uRoEvZLYDIEY2yKlnwT9bvEQy53HUfJmfRIHqMwQi6W407HrLm4VOaL34ZwIB7eH8RLb gkVc8cdafs0bG1Tx4UspzRQYZ937J4omUKVMMk1jFxg8iVbVCWrVcHmMh6o3cpRtfTgX zwrw== X-Gm-Message-State: AC+VfDzsfpQ+Th92Ygu4X8OQES5wLyX85PT2GIOmHcXe81/nYzBHGJva 8vjkM4QP9jD1gimdCqcSoDMr5Bo0M9OP X-Google-Smtp-Source: ACHHUZ5adrH9QxrfVpGnVbiCFm0ZVbLk8evGNPERtoi+luU3p2+mWKg7qpZ0o1EVh6dmty6SQXsFqvRcHw2H X-Received: from irogers.svl.corp.google.com ([2620:15c:2a3:200:497e:a125:3cde:94f]) (user=irogers job=sendgmr) by 2002:a81:b647:0:b0:56c:f8b7:d4fa with SMTP id h7-20020a81b647000000b0056cf8b7d4famr12901202ywk.7.1687840520655; Mon, 26 Jun 2023 21:35:20 -0700 (PDT) Date: Mon, 26 Jun 2023 21:34:46 -0700 In-Reply-To: <20230627043458.662048-1-irogers@google.com> Message-Id: <20230627043458.662048-2-irogers@google.com> Mime-Version: 1.0 References: <20230627043458.662048-1-irogers@google.com> X-Mailer: git-send-email 2.41.0.162.gfafddb0af9-goog Subject: [PATCH v1 01/13] perf parse-events: Remove unused PE_PMU_EVENT_FAKE token From: Ian Rogers To: Peter Zijlstra , Ingo Molnar , Arnaldo Carvalho de Melo , Mark Rutland , Alexander Shishkin , Jiri Olsa , Namhyung Kim , Ian Rogers , Adrian Hunter , Athira Rajeev , Kan Liang , linux-perf-users@vger.kernel.org, linux-kernel@vger.kernel.org, bpf@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Removed by commit 70c90e4a6b2f ("perf parse-events: Avoid scanning PMUs before parsing"). Signed-off-by: Ian Rogers --- tools/perf/util/parse-events.y | 42 ++-------------------------------- 1 file changed, 2 insertions(+), 40 deletions(-) diff --git a/tools/perf/util/parse-events.y b/tools/perf/util/parse-events.y index 9f28d4b5502f..64755f9cd600 100644 --- a/tools/perf/util/parse-events.y +++ b/tools/perf/util/parse-events.y @@ -63,7 +63,7 @@ static void free_list_evsel(struct list_head* list_evsel) %token PE_LEGACY_CACHE %token PE_PREFIX_MEM PE_PREFIX_RAW PE_PREFIX_GROUP %token PE_ERROR -%token PE_KERNEL_PMU_EVENT PE_PMU_EVENT_FAKE +%token PE_KERNEL_PMU_EVENT %token PE_ARRAY_ALL PE_ARRAY_RANGE %token PE_DRV_CFG_TERM %token PE_TERM_HW @@ -81,7 +81,7 @@ static void free_list_evsel(struct list_head* list_evsel) %type PE_MODIFIER_EVENT %type PE_MODIFIER_BP %type PE_EVENT_NAME -%type PE_KERNEL_PMU_EVENT PE_PMU_EVENT_FAKE +%type PE_KERNEL_PMU_EVENT %type PE_DRV_CFG_TERM %type name_or_raw name_or_legacy %destructor { free ($$); } @@ -394,44 +394,6 @@ PE_KERNEL_PMU_EVENT opt_pmu_config YYABORT; $$ =3D list; } -| -PE_PMU_EVENT_FAKE sep_dc -{ - struct list_head *list; - int err; - - list =3D alloc_list(); - if (!list) - YYABORT; - - err =3D parse_events_add_pmu(_parse_state, list, $1, /*head_config=3D*/NU= LL, - /*auto_merge_stats=3D*/false); - free($1); - if (err < 0) { - free(list); - YYABORT; - } - $$ =3D list; -} -| -PE_PMU_EVENT_FAKE opt_pmu_config -{ - struct list_head *list; - int err; - - list =3D alloc_list(); - if (!list) - YYABORT; - - err =3D parse_events_add_pmu(_parse_state, list, $1, $2, /*auto_merge_sta= ts=3D*/false); - free($1); - parse_events_terms__delete($2); - if (err < 0) { - free(list); - YYABORT; - } - $$ =3D list; -} =20 value_sym: PE_VALUE_SYM_HW --=20 2.41.0.162.gfafddb0af9-goog From nobody Sun Feb 8 01:31:26 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 999EFEB64DC for ; Tue, 27 Jun 2023 04:35:41 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S229819AbjF0Efj (ORCPT ); Tue, 27 Jun 2023 00:35:39 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:33304 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229653AbjF0EfZ (ORCPT ); Tue, 27 Jun 2023 00:35:25 -0400 Received: from mail-yw1-x114a.google.com (mail-yw1-x114a.google.com [IPv6:2607:f8b0:4864:20::114a]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 8F4EB1720 for ; Mon, 26 Jun 2023 21:35:23 -0700 (PDT) Received: by mail-yw1-x114a.google.com with SMTP id 00721157ae682-564fb1018bcso58077447b3.0 for ; Mon, 26 Jun 2023 21:35:23 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20221208; t=1687840523; x=1690432523; h=to:from:subject:references:mime-version:message-id:in-reply-to:date :from:to:cc:subject:date:message-id:reply-to; bh=DWCGE0gvk+pE+CmFQOT3NcABG9fSPb9UJ3AYuKosiSs=; b=2Jn/3eS5PxyyQnamzxRI6RjMyYVpdcyI00HwvxuiINbYigj65DQNk54DcCPLXQ1CkL aV5hbe0G9kzAJK7q/rrehTSfNKBA9solwsuMX0Yc8FbWiUsTMYFtYSedqBBbkIZCvfEk /qb3ehecptdg8oawr/mUOjF20uwONq3gmzUUUKhoOVlWpw8qa0sHY1gBylF9cAG+zUrF PPszeHwdWspAQfcuki0tedenET8k/rV4nu42V/Nd26FThAHozlDydfIZ0UEEu035u/Eg +DMxVeSRShN3AUXP88ruhaabmjc7GSiyeEtIzE1sMAO4CO0ClLIy254CrCo5bdoim9yc gaNg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1687840523; x=1690432523; h=to:from:subject:references:mime-version:message-id:in-reply-to:date :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=DWCGE0gvk+pE+CmFQOT3NcABG9fSPb9UJ3AYuKosiSs=; b=N0IYFSYWSfQZmKscNZA9Glv5cBF3skXrnh+IQQkTIYQMjPuQ19FYMhCkwGj1PE1NX3 U4dX1daDR+mPcwwdcyhA+x1MFBGzWJsITu1v8RO4iBkYq2pMeHKIEMjheQw7HYaFcpdv 0GMTeV8IU8j36L9VDHIIK3hFlgBKd3H4Vb9ZHjWJ4l4ffBXeA1ls30moW2gvQaAdRihE WXmuWQBNG4of+PWqKwDQSVUBC26hl2rJWTvf3GbWd8AeT+IEgRhAkx8BbNR1wgx1u4dC nKbrti6ckXYxRiIouvL+rRbymMHql4kXo6LLXJMmnPtYi4/NqpXSMXYQy0/w8pZIWjy/ rCFQ== X-Gm-Message-State: AC+VfDyHfy9IQqHZg1QFPBrTcaUkKkJomQFZ5lIDvny2UidKkBJcHFdO VmqCfA6geSe5zYdc2h183FxQ1dejr9ZA X-Google-Smtp-Source: ACHHUZ5L4BiUBOJjf+avwMOmOIAytu8fXGtgMaH/uVfAhmb9Gx/TXTrJF2s+gprOCKEnxgaJ5h3D6CV9M6vT X-Received: from irogers.svl.corp.google.com ([2620:15c:2a3:200:497e:a125:3cde:94f]) (user=irogers job=sendgmr) by 2002:a25:ae22:0:b0:bc0:bfa7:7647 with SMTP id a34-20020a25ae22000000b00bc0bfa77647mr13096016ybj.0.1687840522861; Mon, 26 Jun 2023 21:35:22 -0700 (PDT) Date: Mon, 26 Jun 2023 21:34:47 -0700 In-Reply-To: <20230627043458.662048-1-irogers@google.com> Message-Id: <20230627043458.662048-3-irogers@google.com> Mime-Version: 1.0 References: <20230627043458.662048-1-irogers@google.com> X-Mailer: git-send-email 2.41.0.162.gfafddb0af9-goog Subject: [PATCH v1 02/13] perf parse-events: Remove unused PE_KERNEL_PMU_EVENT token From: Ian Rogers To: Peter Zijlstra , Ingo Molnar , Arnaldo Carvalho de Melo , Mark Rutland , Alexander Shishkin , Jiri Olsa , Namhyung Kim , Ian Rogers , Adrian Hunter , Athira Rajeev , Kan Liang , linux-perf-users@vger.kernel.org, linux-kernel@vger.kernel.org, bpf@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Removed by commit 70c90e4a6b2f ("perf parse-events: Avoid scanning PMUs before parsing"). Signed-off-by: Ian Rogers --- tools/perf/util/parse-events.y | 27 --------------------------- 1 file changed, 27 deletions(-) diff --git a/tools/perf/util/parse-events.y b/tools/perf/util/parse-events.y index 64755f9cd600..4ee6c6865655 100644 --- a/tools/perf/util/parse-events.y +++ b/tools/perf/util/parse-events.y @@ -63,7 +63,6 @@ static void free_list_evsel(struct list_head* list_evsel) %token PE_LEGACY_CACHE %token PE_PREFIX_MEM PE_PREFIX_RAW PE_PREFIX_GROUP %token PE_ERROR -%token PE_KERNEL_PMU_EVENT %token PE_ARRAY_ALL PE_ARRAY_RANGE %token PE_DRV_CFG_TERM %token PE_TERM_HW @@ -81,7 +80,6 @@ static void free_list_evsel(struct list_head* list_evsel) %type PE_MODIFIER_EVENT %type PE_MODIFIER_BP %type PE_EVENT_NAME -%type PE_KERNEL_PMU_EVENT %type PE_DRV_CFG_TERM %type name_or_raw name_or_legacy %destructor { free ($$); } @@ -358,18 +356,6 @@ PE_NAME opt_pmu_config #undef CLEANUP_YYABORT } | -PE_KERNEL_PMU_EVENT sep_dc -{ - struct list_head *list; - int err; - - err =3D parse_events_multi_pmu_add(_parse_state, $1, NULL, &list); - free($1); - if (err < 0) - YYABORT; - $$ =3D list; -} -| PE_NAME sep_dc { struct list_head *list; @@ -381,19 +367,6 @@ PE_NAME sep_dc YYABORT; $$ =3D list; } -| -PE_KERNEL_PMU_EVENT opt_pmu_config -{ - struct list_head *list; - int err; - - /* frees $2 */ - err =3D parse_events_multi_pmu_add(_parse_state, $1, $2, &list); - free($1); - if (err < 0) - YYABORT; - $$ =3D list; -} =20 value_sym: PE_VALUE_SYM_HW --=20 2.41.0.162.gfafddb0af9-goog From nobody Sun Feb 8 01:31:26 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 CA63CEB64D9 for ; Tue, 27 Jun 2023 04:35:46 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S230016AbjF0Efo (ORCPT ); Tue, 27 Jun 2023 00:35:44 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:33330 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230037AbjF0Ef0 (ORCPT ); Tue, 27 Jun 2023 00:35:26 -0400 Received: from mail-yb1-xb49.google.com (mail-yb1-xb49.google.com [IPv6:2607:f8b0:4864:20::b49]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 7A2BB1729 for ; Mon, 26 Jun 2023 21:35:25 -0700 (PDT) Received: by mail-yb1-xb49.google.com with SMTP id 3f1490d57ef6-bb2fae9b286so5216290276.3 for ; Mon, 26 Jun 2023 21:35:25 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20221208; t=1687840524; x=1690432524; h=to:from:subject:references:mime-version:message-id:in-reply-to:date :from:to:cc:subject:date:message-id:reply-to; bh=E3xFrkPN2+sT/sY0g+uTpgnQ+XoDit6j6d+F4zxTHTs=; b=4d3w3RvalUiNW3Mlb4z7HeI5eBjdXXDanREtvLdEKO0zQi97uPJqEAka6AkjE86nHr 8XB9/kEFUBJi8AJsTHf+Le/uRRo4F8PlxgFfJ/QhHtx7RE1YA19aVI5CB6rteNYWMxzE 6n6OGPHdPePP7cMhoRbGT+p3rmFQF+q1HJ/OOV86BQSDSr7Twmk6ZxkwKauuZj0TndZH TQKbHM17RL+GTOXnsmyZA/8cpIHv6l6wrAnczusUqxDxlMiVldoxXYrU57qaSOmxg6Fg /s+2yJNgYjpZZGOI1BVuzzUs54DDKCmy3GkSEGRjSZ290zx1wq0ulPCtK/hQ6mcu/Zh/ VwCg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1687840524; x=1690432524; h=to:from:subject:references:mime-version:message-id:in-reply-to:date :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=E3xFrkPN2+sT/sY0g+uTpgnQ+XoDit6j6d+F4zxTHTs=; b=WxWS5JOkUcbsZSK3uhBB1SVomEr00yijdHJdeoU7GeYhILXjv74J03Pwhy+T9g2dBd rOj2hJNU3wU0uxKLNqJ3X0ENEWJTeVaEyXTc5kZIqf41F1Aja/ssks1KNIcXXxSUCxGx EeBOfpXznLWgzuvU4Hww4XN1JjXKrIp0trloebP2cRVxgWY/mU9niwUyjLt6rlehxq8G 56t4U4Urm+OoiBlcImNRdsIYHXvzn3Q+6s4Njr3QgUN/X2ShcM9CzU3TB7moKObNFkPd LLiJhPGa6L++j+hIpH6ouZVwMgUslLCNDrhDOeJCvoI/XoPTW7bofvV+xzrNH2cKPf+c OmNQ== X-Gm-Message-State: AC+VfDwNzO7MAP9B1JDrk445DXp0frJLkxzNt9z4N1j6tR0NZmxobkjF 7O6lAQzXvUME0J8SihLT8Mu8KaFjrg1E X-Google-Smtp-Source: ACHHUZ6g1UtttxcfnGpIgZXisAiPfloJoRAyLGmtDUzPqS7qoDZxsCECTY17v1QG6FMB/7F3Ug7qZRC3lipr X-Received: from irogers.svl.corp.google.com ([2620:15c:2a3:200:497e:a125:3cde:94f]) (user=irogers job=sendgmr) by 2002:a05:6902:b13:b0:c17:4115:620a with SMTP id ch19-20020a0569020b1300b00c174115620amr2426866ybb.11.1687840524751; Mon, 26 Jun 2023 21:35:24 -0700 (PDT) Date: Mon, 26 Jun 2023 21:34:48 -0700 In-Reply-To: <20230627043458.662048-1-irogers@google.com> Message-Id: <20230627043458.662048-4-irogers@google.com> Mime-Version: 1.0 References: <20230627043458.662048-1-irogers@google.com> X-Mailer: git-send-email 2.41.0.162.gfafddb0af9-goog Subject: [PATCH v1 03/13] perf parse-events: Remove two unused tokens From: Ian Rogers To: Peter Zijlstra , Ingo Molnar , Arnaldo Carvalho de Melo , Mark Rutland , Alexander Shishkin , Jiri Olsa , Namhyung Kim , Ian Rogers , Adrian Hunter , Athira Rajeev , Kan Liang , linux-perf-users@vger.kernel.org, linux-kernel@vger.kernel.org, bpf@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" The tokens PE_PREFIX_RAW and PE_PREFIX_GROUP are unused so remove them. Signed-off-by: Ian Rogers --- tools/perf/util/parse-events.y | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools/perf/util/parse-events.y b/tools/perf/util/parse-events.y index 4ee6c6865655..b09a5fa92144 100644 --- a/tools/perf/util/parse-events.y +++ b/tools/perf/util/parse-events.y @@ -61,7 +61,7 @@ static void free_list_evsel(struct list_head* list_evsel) %token PE_BPF_OBJECT PE_BPF_SOURCE %token PE_MODIFIER_EVENT PE_MODIFIER_BP PE_BP_COLON PE_BP_SLASH %token PE_LEGACY_CACHE -%token PE_PREFIX_MEM PE_PREFIX_RAW PE_PREFIX_GROUP +%token PE_PREFIX_MEM %token PE_ERROR %token PE_ARRAY_ALL PE_ARRAY_RANGE %token PE_DRV_CFG_TERM --=20 2.41.0.162.gfafddb0af9-goog From nobody Sun Feb 8 01:31:26 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 6097EEB64D9 for ; Tue, 27 Jun 2023 04:35:52 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S230229AbjF0Eft (ORCPT ); Tue, 27 Jun 2023 00:35:49 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:33354 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229910AbjF0Ef3 (ORCPT ); Tue, 27 Jun 2023 00:35:29 -0400 Received: from mail-yb1-xb4a.google.com (mail-yb1-xb4a.google.com [IPv6:2607:f8b0:4864:20::b4a]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id B1BA81718 for ; Mon, 26 Jun 2023 21:35:27 -0700 (PDT) Received: by mail-yb1-xb4a.google.com with SMTP id 3f1490d57ef6-bfe702f99b8so5429786276.1 for ; Mon, 26 Jun 2023 21:35:27 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20221208; t=1687840527; x=1690432527; h=to:from:subject:references:mime-version:message-id:in-reply-to:date :from:to:cc:subject:date:message-id:reply-to; bh=pylB9mwmAKl3TUVj6l4nL/JaxRJCwOWbixQnNb1VbG4=; b=nE40fnnx3qIWki2nYoA1/v+G94eRqvQnMCSdQVEcoIAqwcEqwdH5xGRvoHMULswyJf hhKw9DtpPkkz8cb54YlMMwGZgQ8O12QZhSxRQ5mvhMtNxGcTapD1UlIbIKPgEPWELXX3 C5iwOLn3MqPpb4wj/NtGS00FbCmi9fArMLRxr5XvmkOrIRIfseXua16fYYLG8sVa6+pv C4w+3TfaroczYIfF8GVov0g4BHnB0pL3rFgPayuOz1LU4ZKTyEwMypxfoCQU65zCV9yl QYRQfwHZewdzPshBiNrkAkTu1pDGQJ4M7zb+pCqqXiXUB3rh4hqdWm9maUqJDjphnREL jgWw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1687840527; x=1690432527; h=to:from:subject:references:mime-version:message-id:in-reply-to:date :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=pylB9mwmAKl3TUVj6l4nL/JaxRJCwOWbixQnNb1VbG4=; b=ODrQW/lAYX8s5/cjoJsa2kcblHEcNuKhuLGFzO4iM6yHxGFppsxO7OBzDK2EMJo/rJ 4ag2d7U6FwqC5GRQHGeLoAgLbMH0IkN2ucln1gFWOTrxcFUPFgz/I0qe3QFdWQOG2zMw xoI7CXLnecyk7yBvqvm4nFsYv8VtZCSLNdBou9bx/VAgBRbSWgH/psj79JFm+kwwFB4G lprTzGQj9YOqBvD5nXCYbd+DipYIHTk8Ze3w5wUmFQEoiZclye3oifwuaOkrsqinNDLS sZw9dcbQUk5XT+OZnsFNxsw1RY/uRx2I++q2PULdZ/jjW97YRMxH3NHsxeEjOSsXpa5+ r/TA== X-Gm-Message-State: AC+VfDz1W9OXW/oJH5NgKhGPht5fkKw9iP1kS+egif07UKALfk4FLVUl gjOZGpETF6T79gjpnMtH6X2EeZDpvWpw X-Google-Smtp-Source: ACHHUZ5Gu3B+VYc3wNgtTeuuaO+/RDP6QeL6/VJYxih1YVprHtkiMZEOVqkUu5UNnJWhXb+9Y1cwSlJTY8bA X-Received: from irogers.svl.corp.google.com ([2620:15c:2a3:200:497e:a125:3cde:94f]) (user=irogers job=sendgmr) by 2002:a25:74c9:0:b0:ba8:4ff5:3217 with SMTP id p192-20020a2574c9000000b00ba84ff53217mr6843137ybc.3.1687840526866; Mon, 26 Jun 2023 21:35:26 -0700 (PDT) Date: Mon, 26 Jun 2023 21:34:49 -0700 In-Reply-To: <20230627043458.662048-1-irogers@google.com> Message-Id: <20230627043458.662048-5-irogers@google.com> Mime-Version: 1.0 References: <20230627043458.662048-1-irogers@google.com> X-Mailer: git-send-email 2.41.0.162.gfafddb0af9-goog Subject: [PATCH v1 04/13] perf parse-events: Add more comments to parse_events_state From: Ian Rogers To: Peter Zijlstra , Ingo Molnar , Arnaldo Carvalho de Melo , Mark Rutland , Alexander Shishkin , Jiri Olsa , Namhyung Kim , Ian Rogers , Adrian Hunter , Athira Rajeev , Kan Liang , linux-perf-users@vger.kernel.org, linux-kernel@vger.kernel.org, bpf@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Improve documentation of struct parse_events_state. Signed-off-by: Ian Rogers --- tools/perf/util/parse-events.h | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/tools/perf/util/parse-events.h b/tools/perf/util/parse-events.h index b0eb95f93e9c..b37e5ee193a8 100644 --- a/tools/perf/util/parse-events.h +++ b/tools/perf/util/parse-events.h @@ -121,17 +121,25 @@ struct parse_events_error { }; =20 struct parse_events_state { + /* The list parsed events are placed on. */ struct list_head list; + /* The updated index used by entries as they are added. */ int idx; + /* Error information. */ struct parse_events_error *error; + /* Used by BPF event creation. */ struct evlist *evlist; + /* Holds returned terms for term parsing. */ struct list_head *terms; + /* Start token. */ int stoken; + /* Special fake PMU marker for testing. */ struct perf_pmu *fake_pmu; /* If non-null, when wildcard matching only match the given PMU. */ const char *pmu_filter; /* Should PE_LEGACY_NAME tokens be generated for config terms? */ bool match_legacy_cache_terms; + /* Were multiple PMUs scanned to find events? */ bool wild_card_pmus; }; =20 --=20 2.41.0.162.gfafddb0af9-goog From nobody Sun Feb 8 01:31:26 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 16BF7EB64D9 for ; Tue, 27 Jun 2023 04:36:02 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S230002AbjF0Ef7 (ORCPT ); Tue, 27 Jun 2023 00:35:59 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:33376 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230052AbjF0Efb (ORCPT ); Tue, 27 Jun 2023 00:35:31 -0400 Received: from mail-yw1-x114a.google.com (mail-yw1-x114a.google.com [IPv6:2607:f8b0:4864:20::114a]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id C648C1726 for ; Mon, 26 Jun 2023 21:35:29 -0700 (PDT) Received: by mail-yw1-x114a.google.com with SMTP id 00721157ae682-56942442eb0so52808987b3.1 for ; Mon, 26 Jun 2023 21:35:29 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20221208; t=1687840529; x=1690432529; h=to:from:subject:references:mime-version:message-id:in-reply-to:date :from:to:cc:subject:date:message-id:reply-to; bh=7W0MHDI7A/36EtneRiQenQbjO4j0vMg3AtMW+Ct7r1E=; b=GGhHei1HXQ2/eDuwm+x2TRZUoV9KBsZ+Y1XPf//HboZJ0pXVaXRqoxpqXkT4G2FLd4 LaNiwn4Da8qGrPbQJ1SsadtrnJPqutB3BWihU34E3qtpBswwOq72yejdwQwXoWzMtPwt +y5uRhYhPOw4jHxwVvqqQuUT639J2WhZpb91636YlufXm9IF8Nl6uRQgVEhtSqBLlPRE dwCL25Cikuvdfs4zaLso7TKsY/bxhm/5gWCtqE7vN1Zzz/R07iXPDz8OV6DBJ++Y7LVz XXs2BcP9ujeoVCc34lFY+GmgRn8oIAVxueOaIiXXCf768u2txj0KvJkegEH5ngzuzd91 yj1w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1687840529; x=1690432529; h=to:from:subject:references:mime-version:message-id:in-reply-to:date :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=7W0MHDI7A/36EtneRiQenQbjO4j0vMg3AtMW+Ct7r1E=; b=X8Z1bICoPlVDQr0ryE/H8G8q+ezZEqW0KZliCsrPgkitcu7zTpAdgiLp83pSGQZTnr KiuQWCxBkQzNj+v5jvA20oTOdOdtNlXcyKFObOt507r8JMz2Xq9TJulJoE1z4eN8Wwuq AoJwX/+ysjiXL7h3cXGrQ6//sfwRmtYdkbpJPKyIAl0GGFTFHxIkDalaopNNh+U2cA2/ U+VATedJHTeRQKXmaPu/cdMX7ff6gn+NGwEDOsnBSyWh1NmYx8GoeF3WPp8y1WA29Oz/ E+HzGlu4Tfo2PFE5se6xNtucS4O5mvARF5wdUAqtCFSBERSZWhLNThvOG5jG6vLtE0TM metg== X-Gm-Message-State: AC+VfDxGVzE5cf4nVfJAHv6w5/q6ENOlGmbi3+XRjAXDv56GKvSRXtjn G6TP9ifuEieuXUALg8S940wf7b50ZYgo X-Google-Smtp-Source: ACHHUZ6vOZIoR5CLG0J9dOgf3ZrdWfNkMBb9GwaJMfM09LU8pQxeBDqYATdE7/ljR1d1snX1nwvtdZ7/2vqK X-Received: from irogers.svl.corp.google.com ([2620:15c:2a3:200:497e:a125:3cde:94f]) (user=irogers job=sendgmr) by 2002:a25:ca0b:0:b0:bcd:5dd5:848b with SMTP id a11-20020a25ca0b000000b00bcd5dd5848bmr6656602ybg.3.1687840529090; Mon, 26 Jun 2023 21:35:29 -0700 (PDT) Date: Mon, 26 Jun 2023 21:34:50 -0700 In-Reply-To: <20230627043458.662048-1-irogers@google.com> Message-Id: <20230627043458.662048-6-irogers@google.com> Mime-Version: 1.0 References: <20230627043458.662048-1-irogers@google.com> X-Mailer: git-send-email 2.41.0.162.gfafddb0af9-goog Subject: [PATCH v1 05/13] perf parse-events: Avoid regrouped warning for wild card events From: Ian Rogers To: Peter Zijlstra , Ingo Molnar , Arnaldo Carvalho de Melo , Mark Rutland , Alexander Shishkin , Jiri Olsa , Namhyung Kim , Ian Rogers , Adrian Hunter , Athira Rajeev , Kan Liang , linux-perf-users@vger.kernel.org, linux-kernel@vger.kernel.org, bpf@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" There is logic to avoid printing the regrouping warning for wild card PMUs, this logic also needs to apply for wild card events. Before: ``` $ perf stat -e '{data_read,data_write}' -a sleep 1 WARNING: events were regrouped to match PMUs Performance counter stats for 'system wide': 2,979.16 MiB data_read 410.26 MiB data_write 1.001541923 seconds time elapsed ``` After: ``` $ perf stat -e '{data_read,data_write}' -a sleep 1 Performance counter stats for 'system wide': 2,975.94 MiB data_read 432.05 MiB data_write 1.001119499 seconds time elapsed ``` Signed-off-by: Ian Rogers --- tools/perf/util/parse-events.c | 1 + 1 file changed, 1 insertion(+) diff --git a/tools/perf/util/parse-events.c b/tools/perf/util/parse-events.c index 5dcfbf316bf6..0aa4308edb6c 100644 --- a/tools/perf/util/parse-events.c +++ b/tools/perf/util/parse-events.c @@ -1722,6 +1722,7 @@ int parse_events_multi_pmu_add(struct parse_events_st= ate *parse_state, auto_merge_stats)) { pr_debug("%s -> %s/%s/\n", str, pmu->name, alias->str); + parse_state->wild_card_pmus =3D true; ok++; } parse_events_terms__delete(orig_head); --=20 2.41.0.162.gfafddb0af9-goog From nobody Sun Feb 8 01:31:26 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 85AB8EB64D9 for ; Tue, 27 Jun 2023 04:36:08 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S229699AbjF0EgG (ORCPT ); Tue, 27 Jun 2023 00:36:06 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:33602 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230232AbjF0Efl (ORCPT ); Tue, 27 Jun 2023 00:35:41 -0400 Received: from mail-yw1-x114a.google.com (mail-yw1-x114a.google.com [IPv6:2607:f8b0:4864:20::114a]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 5E420173A for ; Mon, 26 Jun 2023 21:35:32 -0700 (PDT) Received: by mail-yw1-x114a.google.com with SMTP id 00721157ae682-57003dac4a8so106053387b3.1 for ; Mon, 26 Jun 2023 21:35:32 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20221208; t=1687840531; x=1690432531; h=to:from:subject:references:mime-version:message-id:in-reply-to:date :from:to:cc:subject:date:message-id:reply-to; bh=hfYhuJ0XDyvK4n4WNbDnoJ3i1epMtBqut75yAMaV+gY=; b=R/IL8Qtvta8I6gMtIPvKZfXLn9VTYmA587Tv+dTHUirDNSkyXVLPZDiit2FitWHr99 lSTKLBRUrUspIpM71s788To4ybkNzZcGq9YzFT9kE1p7MbjjgHr9LJ82k7aqtE3GoLIq R46s5zrBO6zVKG+m1aJEdeDABQ9+C+Be9j3PAJCNfLhzZ70P9nZBBgtZCzLSOcQ9ELEU cTvehHTyprk4jPGIO/4xLBH86Fo7sqz64NRvm76MTdKX9y3ASFdsxxmyae+SpEg8JnrB VN4wAEtCrlRcMTDG/CNpA+q5UBt3cNAMBDDt/fbhIXmuBgKyeblyG5LJw+IlY8hPzjrR iFnA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1687840531; x=1690432531; h=to:from:subject:references:mime-version:message-id:in-reply-to:date :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=hfYhuJ0XDyvK4n4WNbDnoJ3i1epMtBqut75yAMaV+gY=; b=EZoWFBXtMOLoSo0QFIcuEn6BeX0a7L4GVr6qOJ4EMJjX+Pj2QoAObx8887IXVblz91 hhFnyamrV6NThftj6x8dM413mQ05swt74BOrSkzqhbvhJNN3kb0XsUrCy98Lvr4eSRpP TkNLbQYsRcnIU2cZhn1i/x8VlZ10setaA8ujMRHBbOzW9YGIVFrSzoPNT0kKUU3HugSo /do4vGnMNGeMVTgikpUbhowIivFmWLt3VR1vxPQUcgZmDSflTWPnfM+XxaLn148eFJXm dpcUzPbab/5wKKETo4Ec3uLrU2ab1cl+4TNRFC3tNaivs0DWz03VIC0en3twCNqpL9JF ViyA== X-Gm-Message-State: AC+VfDxATta9gEsDXr30GO46u44G9e96YMuPzSN3rWPraS38jTVM7YBu ooLq9Ffv8dBdIkP+Z0AM7bxW2b72b2IQ X-Google-Smtp-Source: ACHHUZ6Hjnmam6yC5miKWuIWrL/VYqDWBxDrW14sUhpNBhQvwwGI3NXEDUbrFE3QZqDy02Mt5nZYzLYamadv X-Received: from irogers.svl.corp.google.com ([2620:15c:2a3:200:497e:a125:3cde:94f]) (user=irogers job=sendgmr) by 2002:a81:a988:0:b0:568:ed75:8b2f with SMTP id g130-20020a81a988000000b00568ed758b2fmr14576278ywh.0.1687840531455; Mon, 26 Jun 2023 21:35:31 -0700 (PDT) Date: Mon, 26 Jun 2023 21:34:51 -0700 In-Reply-To: <20230627043458.662048-1-irogers@google.com> Message-Id: <20230627043458.662048-7-irogers@google.com> Mime-Version: 1.0 References: <20230627043458.662048-1-irogers@google.com> X-Mailer: git-send-email 2.41.0.162.gfafddb0af9-goog Subject: [PATCH v1 06/13] perf parse-event: Add memory allocation test for name terms From: Ian Rogers To: Peter Zijlstra , Ingo Molnar , Arnaldo Carvalho de Melo , Mark Rutland , Alexander Shishkin , Jiri Olsa , Namhyung Kim , Ian Rogers , Adrian Hunter , Athira Rajeev , Kan Liang , linux-perf-users@vger.kernel.org, linux-kernel@vger.kernel.org, bpf@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" If the name memory allocation fails then propagate to the parser. Signed-off-by: Ian Rogers --- tools/perf/util/parse-events.c | 5 ++++- tools/perf/util/parse-events.y | 2 +- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/tools/perf/util/parse-events.c b/tools/perf/util/parse-events.c index 0aa4308edb6c..f31f233e395f 100644 --- a/tools/perf/util/parse-events.c +++ b/tools/perf/util/parse-events.c @@ -1965,8 +1965,11 @@ int parse_events_name(struct list_head *list, const = char *name) struct evsel *evsel; =20 __evlist__for_each_entry(list, evsel) { - if (!evsel->name) + if (!evsel->name) { evsel->name =3D strdup(name); + if (!evsel->name) + return -ENOMEM; + } } =20 return 0; diff --git a/tools/perf/util/parse-events.y b/tools/perf/util/parse-events.y index b09a5fa92144..3ee351768433 100644 --- a/tools/perf/util/parse-events.y +++ b/tools/perf/util/parse-events.y @@ -263,7 +263,7 @@ PE_EVENT_NAME event_def free($1); if (err) { free_list_evsel($2); - YYABORT; + YYNOMEM; } $$ =3D $2; } --=20 2.41.0.162.gfafddb0af9-goog From nobody Sun Feb 8 01:31:26 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 DCE07EB64DC for ; Tue, 27 Jun 2023 04:36:14 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S230372AbjF0EgN (ORCPT ); Tue, 27 Jun 2023 00:36:13 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:33586 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230355AbjF0Efq (ORCPT ); Tue, 27 Jun 2023 00:35:46 -0400 Received: from mail-yb1-xb4a.google.com (mail-yb1-xb4a.google.com [IPv6:2607:f8b0:4864:20::b4a]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 76D87198D for ; Mon, 26 Jun 2023 21:35:34 -0700 (PDT) Received: by mail-yb1-xb4a.google.com with SMTP id 3f1490d57ef6-c17812e30b4so3269243276.1 for ; Mon, 26 Jun 2023 21:35:34 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20221208; t=1687840533; x=1690432533; h=to:from:subject:references:mime-version:message-id:in-reply-to:date :from:to:cc:subject:date:message-id:reply-to; bh=OhrU9btQvSNouRLprL5042Ez2uv0eRQsGm9r0lF36Cc=; b=UQgWuOSPjS4w1rMPsL0J/CZjVxaM/VUd+1pMFZNBzn0srRWPnx6bPhMtbf8eXBRbh/ AL9/KVrzAglwaIm9UyGn0hx5al4bFrYf648fJlvsQYy7tSCvxKkzs/jQI/PY61IhD1ZH HQsGAv5dEupLTRjuzrzDSHz27+sqoOw9LCj/u0pbyseP19a40j65KX273BseEjhA7m1w K2adIf2Sn5bqewB9+HvFGrA55bfsokDWkEiED5YYmKVIz1RUosPzH9OEYVRJpabz98wc /gYpeH37GGYxkOUD5OXEwXhpU3xbG5eNhim72EIO70e9Vib4Q+EEKuMgZiDWlAqGNFog YBxQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1687840533; x=1690432533; h=to:from:subject:references:mime-version:message-id:in-reply-to:date :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=OhrU9btQvSNouRLprL5042Ez2uv0eRQsGm9r0lF36Cc=; b=dWu/xTbbvz58kULI0Mi/Aa6V/FGymx7hqBSFIygWZut+O+chsjjNNuD1zjfdvsV84X gCd6VTIvc9TITEJSX7FuzMpQqDlRNZb216z44vTYnTXjjWcR21sdnD81gVaL3GWu/L6h 2WC/xQbJWURtFkjiILq/r15lbW702seXC8twrT1z0yn9/3uNL3qUMwGPMZFRXhbYr90V 2vugtzNYmQyNQTxeGUN7ub1yaJmEGAqCUCv5hp1GoQEWOp4LI5A/V+L/V1sCl0D/FT6E 6/EIuqmAU3DOsg5GYCXzvk3kEmzzoMi1qKGfYdKdRnPMtOuUQPI0DvJ1cCMJSfnIXMHG uCng== X-Gm-Message-State: AC+VfDwHT6WIWqSsoeN8xm7nehBWJ04ICg9TrSQ5eQw3gojBpWAbDzzW +tywm9G72QNwaQK40sBHddZtI4chPMom X-Google-Smtp-Source: ACHHUZ4Ghj6Dv7mjes+yNMKxzWLRWCXGOog1H3oKSZhjBK6PXWZIIT3wWM6SDMMYOhNAb9o8tWvHSytjFt0e X-Received: from irogers.svl.corp.google.com ([2620:15c:2a3:200:497e:a125:3cde:94f]) (user=irogers job=sendgmr) by 2002:a25:6988:0:b0:c1d:4fce:460 with SMTP id e130-20020a256988000000b00c1d4fce0460mr2290320ybc.4.1687840533748; Mon, 26 Jun 2023 21:35:33 -0700 (PDT) Date: Mon, 26 Jun 2023 21:34:52 -0700 In-Reply-To: <20230627043458.662048-1-irogers@google.com> Message-Id: <20230627043458.662048-8-irogers@google.com> Mime-Version: 1.0 References: <20230627043458.662048-1-irogers@google.com> X-Mailer: git-send-email 2.41.0.162.gfafddb0af9-goog Subject: [PATCH v1 07/13] perf parse-events: Separate YYABORT and YYNOMEM cases From: Ian Rogers To: Peter Zijlstra , Ingo Molnar , Arnaldo Carvalho de Melo , Mark Rutland , Alexander Shishkin , Jiri Olsa , Namhyung Kim , Ian Rogers , Adrian Hunter , Athira Rajeev , Kan Liang , linux-perf-users@vger.kernel.org, linux-kernel@vger.kernel.org, bpf@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Split cases in event_pmu for greater accuracy. Signed-off-by: Ian Rogers --- tools/perf/util/parse-events.y | 45 ++++++++++++++++++++-------------- 1 file changed, 26 insertions(+), 19 deletions(-) diff --git a/tools/perf/util/parse-events.y b/tools/perf/util/parse-events.y index 3ee351768433..d22866b97b76 100644 --- a/tools/perf/util/parse-events.y +++ b/tools/perf/util/parse-events.y @@ -283,37 +283,42 @@ event_pmu: PE_NAME opt_pmu_config { struct parse_events_state *parse_state =3D _parse_state; - struct parse_events_error *error =3D parse_state->error; struct list_head *list =3D NULL, *orig_terms =3D NULL, *terms=3D NULL; + struct parse_events_error *error =3D parse_state->error; char *pattern =3D NULL; =20 -#define CLEANUP_YYABORT \ +#define CLEANUP \ do { \ parse_events_terms__delete($2); \ parse_events_terms__delete(orig_terms); \ free(list); \ free($1); \ free(pattern); \ - YYABORT; \ } while(0) =20 - if (parse_events_copy_term_list($2, &orig_terms)) - CLEANUP_YYABORT; - if (error) error->idx =3D @1.first_column; =20 + if (parse_events_copy_term_list($2, &orig_terms)) { + CLEANUP; + YYNOMEM; + } + list =3D alloc_list(); - if (!list) - CLEANUP_YYABORT; + if (!list) { + CLEANUP; + YYNOMEM; + } /* Attempt to add to list assuming $1 is a PMU name. */ if (parse_events_add_pmu(parse_state, list, $1, $2, /*auto_merge_stats=3D= */false)) { struct perf_pmu *pmu =3D NULL; int ok =3D 0; =20 /* Failure to add, try wildcard expansion of $1 as a PMU name. */ - if (asprintf(&pattern, "%s*", $1) < 0) - CLEANUP_YYABORT; + if (asprintf(&pattern, "%s*", $1) < 0) { + CLEANUP; + YYNOMEM; + } =20 while ((pmu =3D perf_pmus__scan(pmu)) !=3D NULL) { char *name =3D pmu->name; @@ -328,8 +333,10 @@ PE_NAME opt_pmu_config !perf_pmu__match(pattern, pmu->alias_name, $1)) { bool auto_merge_stats =3D perf_pmu__auto_merge_stats(pmu); =20 - if (parse_events_copy_term_list(orig_terms, &terms)) - CLEANUP_YYABORT; + if (parse_events_copy_term_list(orig_terms, &terms)) { + CLEANUP; + YYNOMEM; + } if (!parse_events_add_pmu(parse_state, list, pmu->name, terms, auto_merge_stats)) { ok++; @@ -345,15 +352,15 @@ PE_NAME opt_pmu_config ok =3D !parse_events_multi_pmu_add(parse_state, $1, $2, &list); $2 =3D NULL; } - if (!ok) - CLEANUP_YYABORT; + if (!ok) { + CLEANUP; + YYABORT; + } } - parse_events_terms__delete($2); - parse_events_terms__delete(orig_terms); - free(pattern); - free($1); $$ =3D list; -#undef CLEANUP_YYABORT + list =3D NULL; + CLEANUP; +#undef CLEANUP } | PE_NAME sep_dc --=20 2.41.0.162.gfafddb0af9-goog From nobody Sun Feb 8 01:31:26 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 A05A2EB64DC for ; Tue, 27 Jun 2023 04:36:27 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S231180AbjF0EgZ (ORCPT ); Tue, 27 Jun 2023 00:36:25 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:33888 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230412AbjF0Efw (ORCPT ); Tue, 27 Jun 2023 00:35:52 -0400 Received: from mail-yw1-x114a.google.com (mail-yw1-x114a.google.com [IPv6:2607:f8b0:4864:20::114a]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id CA55419B6 for ; Mon, 26 Jun 2023 21:35:36 -0700 (PDT) Received: by mail-yw1-x114a.google.com with SMTP id 00721157ae682-570022400b9so51021177b3.0 for ; Mon, 26 Jun 2023 21:35:36 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20221208; t=1687840536; x=1690432536; h=to:from:subject:references:mime-version:message-id:in-reply-to:date :from:to:cc:subject:date:message-id:reply-to; bh=KfqyfRtg18gIZYkUXiTLmJqcy7MrupNBHNFvvJ3kwbY=; b=uUa0GHDSmTdC1OY288qT6WujmCm8OaEDhIICStL9XgIsdCNTlQJfzsYSCny/Yl69Ug 1r20WsIvi+jfhbRLaBDt8KIdlv/FtIFyXowN6v7uWGBQp8s6OZiDdba3hgdQ2k5QgDnD 5dFqFNqnhK7MUUu97mk4a4LBBZw2lizgwTs4D/oEBQErrc+ooDbUozrUdXWItplTf/Va nXeVEU9Mhz5ttSmt27FXVF+vJuHgxXsz69qCckn/HPbhzvpG0qOx75cLP2Wy5kGwf7eM iAvVeNv9Uas8ykSCYCCsbyqFljDGHpLB7nEk6XhYWZGZNUmdTXH3MI8bjCYbgqZ/Aiav kfMA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1687840536; x=1690432536; h=to:from:subject:references:mime-version:message-id:in-reply-to:date :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=KfqyfRtg18gIZYkUXiTLmJqcy7MrupNBHNFvvJ3kwbY=; b=TYuL3R+RxMW+JTuBhfakj+FEYFtWfPL41+ZC0hMl1Bk14sMSYtKLDzX0I1r3LMoW2H mYdfO3rBnSYuDPIjLfqwUE3vTkcc9BFVMHgVVSSgdyu98F6MhGRZ7Gi4+al8SKrHAgbk nffTNL8+J7xJC5SUwBznv+HwnqK6oa1gNiC/EO8LWWHvjanJE7Eod94uNbMApuq15FWa N1Nu+2lmnZNT5XwR51H+cNCeS3wZ26Mmlq70/yVUkGSMdBl0iCXuwy+4VabWvPsZzLMC enet65T/Dq+fC+OYWeYLTmlSOxObkX/MSz2Czz1qiG8Aujdf2b7VhdEplAl6VnT7mPtV BkzA== X-Gm-Message-State: AC+VfDyQeZIG12xnVS83RHiI8lLBzFrfpoN72BBHmNTPVO0XxGMG+Dq6 Sh61JJVGhpnHbhIiSwwp5RII2LxhRjjH X-Google-Smtp-Source: ACHHUZ5C9OApc+1nfa0uBRBzoFtFmwI1Cy8S9CuTlc1BrPDpKqhgVpBn5tmZXQVKrunsgWHmGJvnSGXaIs3A X-Received: from irogers.svl.corp.google.com ([2620:15c:2a3:200:497e:a125:3cde:94f]) (user=irogers job=sendgmr) by 2002:a81:d006:0:b0:573:9e16:2cca with SMTP id v6-20020a81d006000000b005739e162ccamr7436194ywi.0.1687840535819; Mon, 26 Jun 2023 21:35:35 -0700 (PDT) Date: Mon, 26 Jun 2023 21:34:53 -0700 In-Reply-To: <20230627043458.662048-1-irogers@google.com> Message-Id: <20230627043458.662048-9-irogers@google.com> Mime-Version: 1.0 References: <20230627043458.662048-1-irogers@google.com> X-Mailer: git-send-email 2.41.0.162.gfafddb0af9-goog Subject: [PATCH v1 08/13] perf parse-events: Move instances of YYABORT to YYNOMEM From: Ian Rogers To: Peter Zijlstra , Ingo Molnar , Arnaldo Carvalho de Melo , Mark Rutland , Alexander Shishkin , Jiri Olsa , Namhyung Kim , Ian Rogers , Adrian Hunter , Athira Rajeev , Kan Liang , linux-perf-users@vger.kernel.org, linux-kernel@vger.kernel.org, bpf@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Migration to improve error reporting as YYABORT cases should carry event parsing errors. Signed-off-by: Ian Rogers --- tools/perf/util/parse-events.y | 58 +++++++++++++++++++++++----------- 1 file changed, 40 insertions(+), 18 deletions(-) diff --git a/tools/perf/util/parse-events.y b/tools/perf/util/parse-events.y index d22866b97b76..eaf43bd8fe3f 100644 --- a/tools/perf/util/parse-events.y +++ b/tools/perf/util/parse-events.y @@ -390,7 +390,8 @@ value_sym '/' event_config '/' bool wildcard =3D (type =3D=3D PERF_TYPE_HARDWARE || type =3D=3D PERF_TYP= E_HW_CACHE); =20 list =3D alloc_list(); - ABORT_ON(!list); + if (!list) + YYNOMEM; err =3D parse_events_add_numeric(_parse_state, list, type, config, $3, wi= ldcard); parse_events_terms__delete($3); if (err) { @@ -408,7 +409,8 @@ value_sym sep_slash_slash_dc bool wildcard =3D (type =3D=3D PERF_TYPE_HARDWARE || type =3D=3D PERF_TYP= E_HW_CACHE); =20 list =3D alloc_list(); - ABORT_ON(!list); + if (!list) + YYNOMEM; ABORT_ON(parse_events_add_numeric(_parse_state, list, type, config, /*head_config=3D*/NULL, wildcard)); $$ =3D list; @@ -419,7 +421,8 @@ PE_VALUE_SYM_TOOL sep_slash_slash_dc struct list_head *list; =20 list =3D alloc_list(); - ABORT_ON(!list); + if (!list) + YYNOMEM; ABORT_ON(parse_events_add_tool(_parse_state, list, $1)); $$ =3D list; } @@ -432,7 +435,9 @@ PE_LEGACY_CACHE opt_event_config int err; =20 list =3D alloc_list(); - ABORT_ON(!list); + if (!list) + YYNOMEM; + err =3D parse_events_add_cache(list, &parse_state->idx, $1, parse_state, = $2); =20 parse_events_terms__delete($2); @@ -451,7 +456,9 @@ PE_PREFIX_MEM PE_VALUE PE_BP_SLASH PE_VALUE PE_BP_COLON= PE_MODIFIER_BP opt_event int err; =20 list =3D alloc_list(); - ABORT_ON(!list); + if (!list) + YYNOMEM; + err =3D parse_events_add_breakpoint(_parse_state, list, $2, $6, $4, $7); parse_events_terms__delete($7); @@ -469,7 +476,9 @@ PE_PREFIX_MEM PE_VALUE PE_BP_SLASH PE_VALUE opt_event_c= onfig int err; =20 list =3D alloc_list(); - ABORT_ON(!list); + if (!list) + YYNOMEM; + err =3D parse_events_add_breakpoint(_parse_state, list, $2, NULL, $4, $5); parse_events_terms__delete($5); @@ -486,7 +495,9 @@ PE_PREFIX_MEM PE_VALUE PE_BP_COLON PE_MODIFIER_BP opt_e= vent_config int err; =20 list =3D alloc_list(); - ABORT_ON(!list); + if (!list) + YYNOMEM; + err =3D parse_events_add_breakpoint(_parse_state, list, $2, $4, 0, $5); parse_events_terms__delete($5); @@ -504,7 +515,8 @@ PE_PREFIX_MEM PE_VALUE opt_event_config int err; =20 list =3D alloc_list(); - ABORT_ON(!list); + if (!list) + YYNOMEM; err =3D parse_events_add_breakpoint(_parse_state, list, $2, NULL, 0, $3); parse_events_terms__delete($3); @@ -524,7 +536,8 @@ tracepoint_name opt_event_config int err; =20 list =3D alloc_list(); - ABORT_ON(!list); + if (!list) + YYNOMEM; if (error) error->idx =3D @1.first_column; =20 @@ -556,7 +569,8 @@ PE_VALUE ':' PE_VALUE opt_event_config int err; =20 list =3D alloc_list(); - ABORT_ON(!list); + if (!list) + YYNOMEM; err =3D parse_events_add_numeric(_parse_state, list, (u32)$1, $3, $4, /*wildcard=3D*/false); parse_events_terms__delete($4); @@ -575,7 +589,8 @@ PE_RAW opt_event_config u64 num; =20 list =3D alloc_list(); - ABORT_ON(!list); + if (!list) + YYNOMEM; errno =3D 0; num =3D strtoull($1 + 1, NULL, 16); ABORT_ON(errno); @@ -598,7 +613,8 @@ PE_BPF_OBJECT opt_event_config int err; =20 list =3D alloc_list(); - ABORT_ON(!list); + if (!list) + YYNOMEM; err =3D parse_events_load_bpf(parse_state, list, $1, false, $2); parse_events_terms__delete($2); free($1); @@ -615,7 +631,8 @@ PE_BPF_SOURCE opt_event_config int err; =20 list =3D alloc_list(); - ABORT_ON(!list); + if (!list) + YYNOMEM; err =3D parse_events_load_bpf(_parse_state, list, $1, true, $2); parse_events_terms__delete($2); if (err) { @@ -680,7 +697,8 @@ event_term struct list_head *head =3D malloc(sizeof(*head)); struct parse_events_term *term =3D $1; =20 - ABORT_ON(!head); + if (!head) + YYNOMEM; INIT_LIST_HEAD(head); list_add_tail(&term->list, head); $$ =3D head; @@ -857,7 +875,8 @@ PE_DRV_CFG_TERM struct parse_events_term *term; char *config =3D strdup($1); =20 - ABORT_ON(!config); + if (!config) + YYNOMEM; if (parse_events_term__str(&term, PARSE_EVENTS__TERM_TYPE_DRV_CFG, config, $1, &@1, NULL)) { free($1); @@ -888,7 +907,8 @@ array_terms ',' array_term new_array.ranges =3D realloc($1.ranges, sizeof(new_array.ranges[0]) * new_array.nr_ranges); - ABORT_ON(!new_array.ranges); + if (!new_array.ranges) + YYNOMEM; memcpy(&new_array.ranges[$1.nr_ranges], $3.ranges, $3.nr_ranges * sizeof(new_array.ranges[0])); free($3.ranges); @@ -904,7 +924,8 @@ PE_VALUE =20 array.nr_ranges =3D 1; array.ranges =3D malloc(sizeof(array.ranges[0])); - ABORT_ON(!array.ranges); + if (!array.ranges) + YYNOMEM; array.ranges[0].start =3D $1; array.ranges[0].length =3D 1; $$ =3D array; @@ -917,7 +938,8 @@ PE_VALUE PE_ARRAY_RANGE PE_VALUE ABORT_ON($3 < $1); array.nr_ranges =3D 1; array.ranges =3D malloc(sizeof(array.ranges[0])); - ABORT_ON(!array.ranges); + if (!array.ranges) + YYNOMEM; array.ranges[0].start =3D $1; array.ranges[0].length =3D $3 - $1 + 1; $$ =3D array; --=20 2.41.0.162.gfafddb0af9-goog From nobody Sun Feb 8 01:31:26 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 D6448EB64D9 for ; Tue, 27 Jun 2023 04:36:33 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S230497AbjF0Egb (ORCPT ); Tue, 27 Jun 2023 00:36:31 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:34158 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230423AbjF0EgI (ORCPT ); Tue, 27 Jun 2023 00:36:08 -0400 Received: from mail-yb1-xb49.google.com (mail-yb1-xb49.google.com [IPv6:2607:f8b0:4864:20::b49]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id E28E41BE8 for ; Mon, 26 Jun 2023 21:35:38 -0700 (PDT) Received: by mail-yb1-xb49.google.com with SMTP id 3f1490d57ef6-c0bf91d259fso5168828276.1 for ; Mon, 26 Jun 2023 21:35:38 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20221208; t=1687840538; x=1690432538; h=to:from:subject:references:mime-version:message-id:in-reply-to:date :from:to:cc:subject:date:message-id:reply-to; bh=1Y44TOA7IP5InT6TRlpHuOEgaV2HfkPV6BhBGubei/8=; b=y93+je1tiVcYVkXUddfE6nJAgomDIuqneeY8NexYKVOyNWg/9mJ3wNJChFZ+tRrptW ExArhrr7KTt8Hv6CHLSCj3mqOg5o3b8QUiJIsu+lWDos5fh1WJ752az52K7brll+eoLZ BxLXdHZR3lZH2StKse25T8yeduqokgFaPo7LLqsOjATnTxr4bMrHGkZS7dRnRFpgqyZp Ehb+ZfBhqHFtMXrtJLXYRMr98p/fsm5LV2PiimPsmxvs+aL0EEm/MQx6vYS3ZzgtX9gj OHj+XTv4NiLA2Q9NuF/5EVt1jLzv4NYf1izSH+BJZkTQDf6L6jQERbkTw9CJbvO7zyOx q5zw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1687840538; x=1690432538; h=to:from:subject:references:mime-version:message-id:in-reply-to:date :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=1Y44TOA7IP5InT6TRlpHuOEgaV2HfkPV6BhBGubei/8=; b=DDu7+X5sqGEOTiVF1AmCE8VevWYjKLARuk6y+InoQgQQPvHPhWXQB30mjohqjwO/4x zXrSM7ITHiaSXOWfD1i4POpf3j9dFnrNrKT/S5QIvQTI8nib9RVfpJwSBwbVA/+QTnZX x1AcHnIs46eES+7JfdiSbb9sP+uICZb5xAfamCkKod0BJ8YUxTJ4wQiFjvqwAI/M60GC V26WEPKMiInvwyRkJLU5YXXXu+xFB/LPlt+Jh0eOkV8WxYaRz0ZvXLndH5q20w0G8uGC 9pISO5toIDJmdOmTX/DCzKFWO4Qs3nIIqDppU1a0Mm1tK/7kicQFMHbRm1z1h/ykGDC0 RR4A== X-Gm-Message-State: AC+VfDw5VJ1ZaNa0yIl6dr3hH12y8tDua/8WpJc0b9NAaSmvIH3P6/LC nLnhzKtDPi552o0+K1wSaZWHzBPQ8atM X-Google-Smtp-Source: ACHHUZ4fMHKpnYF3E9absF/NomYhf3qeBRqUZJ9cs409BCLF23M2Yh4Ugotm6gvumN6a7Yi4CgEhk8JMT8ab X-Received: from irogers.svl.corp.google.com ([2620:15c:2a3:200:497e:a125:3cde:94f]) (user=irogers job=sendgmr) by 2002:a25:df4b:0:b0:c16:e000:50a2 with SMTP id w72-20020a25df4b000000b00c16e00050a2mr3963570ybg.10.1687840538162; Mon, 26 Jun 2023 21:35:38 -0700 (PDT) Date: Mon, 26 Jun 2023 21:34:54 -0700 In-Reply-To: <20230627043458.662048-1-irogers@google.com> Message-Id: <20230627043458.662048-10-irogers@google.com> Mime-Version: 1.0 References: <20230627043458.662048-1-irogers@google.com> X-Mailer: git-send-email 2.41.0.162.gfafddb0af9-goog Subject: [PATCH v1 09/13] perf parse-events: Separate ENOMEM memory handling From: Ian Rogers To: Peter Zijlstra , Ingo Molnar , Arnaldo Carvalho de Melo , Mark Rutland , Alexander Shishkin , Jiri Olsa , Namhyung Kim , Ian Rogers , Adrian Hunter , Athira Rajeev , Kan Liang , linux-perf-users@vger.kernel.org, linux-kernel@vger.kernel.org, bpf@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Add PE_ABORT that will YYNOMEM or YYABORT accordingly. Signed-off-by: Ian Rogers --- tools/perf/util/parse-events.y | 134 ++++++++++++++++++++------------- 1 file changed, 82 insertions(+), 52 deletions(-) diff --git a/tools/perf/util/parse-events.y b/tools/perf/util/parse-events.y index eaf43bd8fe3f..f090a85c4518 100644 --- a/tools/perf/util/parse-events.y +++ b/tools/perf/util/parse-events.y @@ -28,6 +28,13 @@ do { \ YYABORT; \ } while (0) =20 +#define PE_ABORT(val) \ +do { \ + if (val =3D=3D -ENOMEM) \ + YYNOMEM; \ + YYABORT; \ +} while (0) + static struct list_head* alloc_list(void) { struct list_head *list; @@ -371,7 +378,7 @@ PE_NAME sep_dc err =3D parse_events_multi_pmu_add(_parse_state, $1, NULL, &list); free($1); if (err < 0) - YYABORT; + PE_ABORT(err); $$ =3D list; } =20 @@ -396,7 +403,7 @@ value_sym '/' event_config '/' parse_events_terms__delete($3); if (err) { free_list_evsel(list); - YYABORT; + PE_ABORT(err); } $$ =3D list; } @@ -407,23 +414,28 @@ value_sym sep_slash_slash_dc int type =3D $1 >> 16; int config =3D $1 & 255; bool wildcard =3D (type =3D=3D PERF_TYPE_HARDWARE || type =3D=3D PERF_TYP= E_HW_CACHE); + int err; =20 list =3D alloc_list(); if (!list) YYNOMEM; - ABORT_ON(parse_events_add_numeric(_parse_state, list, type, config, - /*head_config=3D*/NULL, wildcard)); + err =3D parse_events_add_numeric(_parse_state, list, type, config, /*head= _config=3D*/NULL, wildcard); + if (err) + PE_ABORT(err); $$ =3D list; } | PE_VALUE_SYM_TOOL sep_slash_slash_dc { struct list_head *list; + int err; =20 list =3D alloc_list(); if (!list) YYNOMEM; - ABORT_ON(parse_events_add_tool(_parse_state, list, $1)); + err =3D parse_events_add_tool(_parse_state, list, $1); + if (err) + YYNOMEM; $$ =3D list; } =20 @@ -444,7 +456,7 @@ PE_LEGACY_CACHE opt_event_config free($1); if (err) { free_list_evsel(list); - YYABORT; + PE_ABORT(err); } $$ =3D list; } @@ -465,7 +477,7 @@ PE_PREFIX_MEM PE_VALUE PE_BP_SLASH PE_VALUE PE_BP_COLON= PE_MODIFIER_BP opt_event free($6); if (err) { free(list); - YYABORT; + PE_ABORT(err); } $$ =3D list; } @@ -484,7 +496,7 @@ PE_PREFIX_MEM PE_VALUE PE_BP_SLASH PE_VALUE opt_event_c= onfig parse_events_terms__delete($5); if (err) { free(list); - YYABORT; + PE_ABORT(err); } $$ =3D list; } @@ -504,7 +516,7 @@ PE_PREFIX_MEM PE_VALUE PE_BP_COLON PE_MODIFIER_BP opt_e= vent_config free($4); if (err) { free(list); - YYABORT; + PE_ABORT(err); } $$ =3D list; } @@ -522,7 +534,7 @@ PE_PREFIX_MEM PE_VALUE opt_event_config parse_events_terms__delete($3); if (err) { free(list); - YYABORT; + PE_ABORT(err); } $$ =3D list; } @@ -549,7 +561,7 @@ tracepoint_name opt_event_config free($1.event); if (err) { free(list); - YYABORT; + PE_ABORT(err); } $$ =3D list; } @@ -576,7 +588,7 @@ PE_VALUE ':' PE_VALUE opt_event_config parse_events_terms__delete($4); if (err) { free(list); - YYABORT; + PE_ABORT(err); } $$ =3D list; } @@ -600,7 +612,7 @@ PE_RAW opt_event_config parse_events_terms__delete($2); if (err) { free(list); - YYABORT; + PE_ABORT(err); } $$ =3D list; } @@ -620,7 +632,7 @@ PE_BPF_OBJECT opt_event_config free($1); if (err) { free(list); - YYABORT; + PE_ABORT(err); } $$ =3D list; } @@ -637,7 +649,7 @@ PE_BPF_SOURCE opt_event_config parse_events_terms__delete($2); if (err) { free(list); - YYABORT; + PE_ABORT(err); } $$ =3D list; } @@ -712,11 +724,12 @@ event_term: PE_RAW { struct parse_events_term *term; + int err =3D parse_events_term__str(&term, PARSE_EVENTS__TERM_TYPE_RAW, + strdup("raw"), $1, &@1, &@1); =20 - if (parse_events_term__str(&term, PARSE_EVENTS__TERM_TYPE_RAW, - strdup("raw"), $1, &@1, &@1)) { + if (err) { free($1); - YYABORT; + PE_ABORT(err); } $$ =3D term; } @@ -724,12 +737,12 @@ PE_RAW name_or_raw '=3D' name_or_legacy { struct parse_events_term *term; + int err =3D parse_events_term__str(&term, PARSE_EVENTS__TERM_TYPE_USER, $= 1, $3, &@1, &@3); =20 - if (parse_events_term__str(&term, PARSE_EVENTS__TERM_TYPE_USER, - $1, $3, &@1, &@3)) { + if (err) { free($1); free($3); - YYABORT; + PE_ABORT(err); } $$ =3D term; } @@ -737,11 +750,12 @@ name_or_raw '=3D' name_or_legacy name_or_raw '=3D' PE_VALUE { struct parse_events_term *term; + int err =3D parse_events_term__num(&term, PARSE_EVENTS__TERM_TYPE_USER, + $1, $3, false, &@1, &@3); =20 - if (parse_events_term__num(&term, PARSE_EVENTS__TERM_TYPE_USER, - $1, $3, false, &@1, &@3)) { + if (err) { free($1); - YYABORT; + PE_ABORT(err); } $$ =3D term; } @@ -749,12 +763,13 @@ name_or_raw '=3D' PE_VALUE name_or_raw '=3D' PE_TERM_HW { struct parse_events_term *term; + int err =3D parse_events_term__str(&term, PARSE_EVENTS__TERM_TYPE_USER, + $1, $3.str, &@1, &@3); =20 - if (parse_events_term__str(&term, PARSE_EVENTS__TERM_TYPE_USER, - $1, $3.str, &@1, &@3)) { + if (err) { free($1); free($3.str); - YYABORT; + PE_ABORT(err); } $$ =3D term; } @@ -762,11 +777,12 @@ name_or_raw '=3D' PE_TERM_HW PE_LEGACY_CACHE { struct parse_events_term *term; + int err =3D parse_events_term__num(&term, PARSE_EVENTS__TERM_TYPE_LEGACY_= CACHE, + $1, 1, true, &@1, NULL); =20 - if (parse_events_term__num(&term, PARSE_EVENTS__TERM_TYPE_LEGACY_CACHE, - $1, 1, true, &@1, NULL)) { + if (err) { free($1); - YYABORT; + PE_ABORT(err); } $$ =3D term; } @@ -774,11 +790,12 @@ PE_LEGACY_CACHE PE_NAME { struct parse_events_term *term; + int err =3D parse_events_term__num(&term, PARSE_EVENTS__TERM_TYPE_USER, + $1, 1, true, &@1, NULL); =20 - if (parse_events_term__num(&term, PARSE_EVENTS__TERM_TYPE_USER, - $1, 1, true, &@1, NULL)) { + if (err) { free($1); - YYABORT; + PE_ABORT(err); } $$ =3D term; } @@ -786,11 +803,12 @@ PE_NAME PE_TERM_HW { struct parse_events_term *term; + int err =3D parse_events_term__num(&term, PARSE_EVENTS__TERM_TYPE_HARDWAR= E, + $1.str, $1.num & 255, false, &@1, NULL); =20 - if (parse_events_term__num(&term, PARSE_EVENTS__TERM_TYPE_HARDWARE, - $1.str, $1.num & 255, false, &@1, NULL)) { + if (err) { free($1.str); - YYABORT; + PE_ABORT(err); } $$ =3D term; } @@ -798,10 +816,11 @@ PE_TERM_HW PE_TERM '=3D' name_or_legacy { struct parse_events_term *term; + int err =3D parse_events_term__str(&term, (int)$1, NULL, $3, &@1, &@3); =20 - if (parse_events_term__str(&term, (int)$1, NULL, $3, &@1, &@3)) { + if (err) { free($3); - YYABORT; + PE_ABORT(err); } $$ =3D term; } @@ -809,10 +828,11 @@ PE_TERM '=3D' name_or_legacy PE_TERM '=3D' PE_TERM_HW { struct parse_events_term *term; + int err =3D parse_events_term__str(&term, (int)$1, NULL, $3.str, &@1, &@3= ); =20 - if (parse_events_term__str(&term, (int)$1, NULL, $3.str, &@1, &@3)) { + if (err) { free($3.str); - YYABORT; + PE_ABORT(err); } $$ =3D term; } @@ -820,37 +840,46 @@ PE_TERM '=3D' PE_TERM_HW PE_TERM '=3D' PE_TERM { struct parse_events_term *term; + int err =3D parse_events_term__term(&term, (int)$1, (int)$3, &@1, &@3); + + if (err) + PE_ABORT(err); =20 - ABORT_ON(parse_events_term__term(&term, (int)$1, (int)$3, &@1, &@3)); $$ =3D term; } | PE_TERM '=3D' PE_VALUE { struct parse_events_term *term; + int err =3D parse_events_term__num(&term, (int)$1, NULL, $3, false, &@1, = &@3); + + if (err) + PE_ABORT(err); =20 - ABORT_ON(parse_events_term__num(&term, (int)$1, NULL, $3, false, &@1, &@3= )); $$ =3D term; } | PE_TERM { struct parse_events_term *term; + int err =3D parse_events_term__num(&term, (int)$1, NULL, 1, true, &@1, NU= LL); + + if (err) + PE_ABORT(err); =20 - ABORT_ON(parse_events_term__num(&term, (int)$1, NULL, 1, true, &@1, NULL)= ); $$ =3D term; } | name_or_raw array '=3D' name_or_legacy { struct parse_events_term *term; + int err =3D parse_events_term__str(&term, PARSE_EVENTS__TERM_TYPE_USER, $= 1, $4, &@1, &@4); =20 - if (parse_events_term__str(&term, PARSE_EVENTS__TERM_TYPE_USER, - $1, $4, &@1, &@4)) { + if (err) { free($1); free($4); free($2.ranges); - YYABORT; + PE_ABORT(err); } term->array =3D $2; $$ =3D term; @@ -859,12 +888,12 @@ name_or_raw array '=3D' name_or_legacy name_or_raw array '=3D' PE_VALUE { struct parse_events_term *term; + int err =3D parse_events_term__num(&term, PARSE_EVENTS__TERM_TYPE_USER, $= 1, $4, false, &@1, &@4); =20 - if (parse_events_term__num(&term, PARSE_EVENTS__TERM_TYPE_USER, - $1, $4, false, &@1, &@4)) { + if (err) { free($1); free($2.ranges); - YYABORT; + PE_ABORT(err); } term->array =3D $2; $$ =3D term; @@ -874,14 +903,15 @@ PE_DRV_CFG_TERM { struct parse_events_term *term; char *config =3D strdup($1); + int err; =20 if (!config) YYNOMEM; - if (parse_events_term__str(&term, PARSE_EVENTS__TERM_TYPE_DRV_CFG, - config, $1, &@1, NULL)) { + err =3D parse_events_term__str(&term, PARSE_EVENTS__TERM_TYPE_DRV_CFG, co= nfig, $1, &@1, NULL); + if (err) { free($1); free(config); - YYABORT; + PE_ABORT(err); } $$ =3D term; } --=20 2.41.0.162.gfafddb0af9-goog From nobody Sun Feb 8 01:31:26 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 CFA4CEB64D9 for ; Tue, 27 Jun 2023 04:36:40 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S230409AbjF0Egi (ORCPT ); Tue, 27 Jun 2023 00:36:38 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:34264 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230454AbjF0EgM (ORCPT ); Tue, 27 Jun 2023 00:36:12 -0400 Received: from mail-yb1-xb49.google.com (mail-yb1-xb49.google.com [IPv6:2607:f8b0:4864:20::b49]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 202CD1718 for ; Mon, 26 Jun 2023 21:35:41 -0700 (PDT) Received: by mail-yb1-xb49.google.com with SMTP id 3f1490d57ef6-bd69ee0edacso5436860276.3 for ; Mon, 26 Jun 2023 21:35:41 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20221208; t=1687840540; x=1690432540; h=to:from:subject:references:mime-version:message-id:in-reply-to:date :from:to:cc:subject:date:message-id:reply-to; bh=HmcwCCrzohBexPPxiwkNS29383WCu9lx0QPsW2KVyZ4=; b=dX0nzwKDmwRLRzUElRbb/ZUhU8CqDyxurklThpje/xh9AZe7uPANzlcnjMfd3Nphxa Feqs7E72EoJkDBbOEX4ndFRoShyAYkJujZwyfhO1l0BBwA3Gs2u84tlmKI2znvCpOvp/ vCcjREuJgs2pJyJlWRCpukXwBO1MPUhGPrdg4gHR/QMtKMD6FsrCfo+0PU6C3sAzWV+h zZxLMQMNDhyZ6p9vVplVkJdASPfquPFGTb7pVzuvBqIZLNvhD94Og/PMKu8UPtxgdudB 6fjGTRzje7pmiDFVUrksxcOstqsnJ2L4AE5B3/lV6jQBMF+ctiJPrlDEsfkLzv215Rse 00OQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1687840540; x=1690432540; h=to:from:subject:references:mime-version:message-id:in-reply-to:date :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=HmcwCCrzohBexPPxiwkNS29383WCu9lx0QPsW2KVyZ4=; b=cqQIxnYM8D3jvYNjoPOuTPWTWQTulMGkm7nDAf2iPt904D9TLHEi/VOL3sgcSdQFtR XIzUSIqnqDdbbLmTZN5OwPVza1lQ3YCWwlXQyjAY/a+ZdMDdXoLcoLpLOnuTdinsdOzU DQe1dtbfLs/1AGtGPvQWcKj+oX+gZPGb2e1/ztcd8DbiFGqFukRoBdee+Zhz5uHAhnXr J8RiZv8+rlZDA7apAMcImUG2SDQ/9B41GgJSfAWQgF7i9cT43+NPtp0AP/UySNaA+8uX jY0BiYvwOdZseC+V2yrCWFhkwZdVoUBtGM/Cj5NwPkD3SnjRvffwMq+mMW3Q8pqh5v/K px8w== X-Gm-Message-State: AC+VfDwBg7lnlkJkDZnxM7vPRfQRixQ6R9RPSEdORNCVjar6pkSLMSgt mhlzaZ3apw0QdB13MdFgimW9539kXIUu X-Google-Smtp-Source: ACHHUZ6Ij9UVX+Y1eE/fAeD49qeUrfoIUY5V8xWSHMepARTJgN2SMH/Cpx4WFc7JhU4gPkhTdXdvWdR9wDWu X-Received: from irogers.svl.corp.google.com ([2620:15c:2a3:200:497e:a125:3cde:94f]) (user=irogers job=sendgmr) by 2002:a25:e0c6:0:b0:bc7:f6af:8cff with SMTP id x189-20020a25e0c6000000b00bc7f6af8cffmr14521026ybg.2.1687840540338; Mon, 26 Jun 2023 21:35:40 -0700 (PDT) Date: Mon, 26 Jun 2023 21:34:55 -0700 In-Reply-To: <20230627043458.662048-1-irogers@google.com> Message-Id: <20230627043458.662048-11-irogers@google.com> Mime-Version: 1.0 References: <20230627043458.662048-1-irogers@google.com> X-Mailer: git-send-email 2.41.0.162.gfafddb0af9-goog Subject: [PATCH v1 10/13] perf parse-events: Additional error reporting From: Ian Rogers To: Peter Zijlstra , Ingo Molnar , Arnaldo Carvalho de Melo , Mark Rutland , Alexander Shishkin , Jiri Olsa , Namhyung Kim , Ian Rogers , Adrian Hunter , Athira Rajeev , Kan Liang , linux-perf-users@vger.kernel.org, linux-kernel@vger.kernel.org, bpf@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" When no events or PMUs match report an error for event_pmu: Before: ``` $ perf stat -e 'asdfasdf' -a sleep 1 Run 'perf list' for a list of valid events Usage: perf stat [] [] -e, --event event selector. use 'perf list' to list available= events ``` After: ``` $ perf stat -e 'asdfasdf' -a sleep 1 event syntax error: 'asdfasdf' \___ Bad event name Unabled to find PMU or event on a PMU of 'asdfasdf' Run 'perf list' for a list of valid events Usage: perf stat [] [] -e, --event event selector. use 'perf list' to list available= events ``` Fixes the inadvertent removal when hybrid parsing was modified. Fixes: ("70c90e4a6b2f perf parse-events: Avoid scanning PMUs before parsing= ") Signed-off-by: Ian Rogers --- tools/perf/util/parse-events.y | 25 +++++++++++++++++++------ 1 file changed, 19 insertions(+), 6 deletions(-) diff --git a/tools/perf/util/parse-events.y b/tools/perf/util/parse-events.y index f090a85c4518..a636a7db6e6f 100644 --- a/tools/perf/util/parse-events.y +++ b/tools/perf/util/parse-events.y @@ -291,7 +291,6 @@ PE_NAME opt_pmu_config { struct parse_events_state *parse_state =3D _parse_state; struct list_head *list =3D NULL, *orig_terms =3D NULL, *terms=3D NULL; - struct parse_events_error *error =3D parse_state->error; char *pattern =3D NULL; =20 #define CLEANUP \ @@ -303,9 +302,6 @@ PE_NAME opt_pmu_config free(pattern); \ } while(0) =20 - if (error) - error->idx =3D @1.first_column; - if (parse_events_copy_term_list($2, &orig_terms)) { CLEANUP; YYNOMEM; @@ -360,6 +356,14 @@ PE_NAME opt_pmu_config $2 =3D NULL; } if (!ok) { + struct parse_events_error *error =3D parse_state->error; + char *help; + + if (asprintf(&help, "Unabled to find PMU or event on a PMU of '%s'", $1= ) < 0) + help =3D NULL; + parse_events_error__handle(error, @1.first_column, + strdup("Bad event or PMU"), + help); CLEANUP; YYABORT; } @@ -376,9 +380,18 @@ PE_NAME sep_dc int err; =20 err =3D parse_events_multi_pmu_add(_parse_state, $1, NULL, &list); - free($1); - if (err < 0) + if (err < 0) { + struct parse_events_state *parse_state =3D _parse_state; + struct parse_events_error *error =3D parse_state->error; + char *help; + + if (asprintf(&help, "Unabled to find PMU or event on a PMU of '%s'", $1)= < 0) + help =3D NULL; + parse_events_error__handle(error, @1.first_column, strdup("Bad event nam= e"), help); + free($1); PE_ABORT(err); + } + free($1); $$ =3D list; } =20 --=20 2.41.0.162.gfafddb0af9-goog From nobody Sun Feb 8 01:31:26 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 27129EB64D9 for ; Tue, 27 Jun 2023 04:36:47 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S230416AbjF0Ego (ORCPT ); Tue, 27 Jun 2023 00:36:44 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:34330 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230513AbjF0EgP (ORCPT ); Tue, 27 Jun 2023 00:36:15 -0400 Received: from mail-yb1-xb4a.google.com (mail-yb1-xb4a.google.com [IPv6:2607:f8b0:4864:20::b4a]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 78B2E1FCC for ; Mon, 26 Jun 2023 21:35:43 -0700 (PDT) Received: by mail-yb1-xb4a.google.com with SMTP id 3f1490d57ef6-bf0ba82473dso5599040276.0 for ; Mon, 26 Jun 2023 21:35:43 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20221208; t=1687840542; x=1690432542; h=to:from:subject:references:mime-version:message-id:in-reply-to:date :from:to:cc:subject:date:message-id:reply-to; bh=tiJ8ZNCNGwHiEb8TLCiGLDomoSZXOF+wD/koznP4c2g=; b=7fjJC99dXgDa/DUvdZ05NUNwOn2nFf2J73fTB4QoGDSgKD7/o+iRCMPnBtQ1gfBbcK qhvODxU0a9aMYXSSHuqGWDhihIv91CfijR24twbkl0qiMC6bBS6TCNmeoq66oWbMB8kP 9XVFaMffQHmVd0bTWsnP3vlICMufxFYjlQKEctH1wI5ovtimwP1LBBG4t7eEFBsyI1nz ae74vX4aSO8xDldBm+xDFGe/VhYyiCdD1Mw9qO3w1ls2qzKq6sOvc7z3WrFeYLvEaNi8 zMgX9uBfIT14oj3IUefvpuaL83DAmr0Z4pgYzVAhLmTm0L+Kd6M0Sr88+vJbj0WKXtSJ Ayvw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1687840542; x=1690432542; h=to:from:subject:references:mime-version:message-id:in-reply-to:date :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=tiJ8ZNCNGwHiEb8TLCiGLDomoSZXOF+wD/koznP4c2g=; b=K+OhBjvKgqXS4f/5VsNFVrkIP3GDIg6Q6mWVKVpDRd3QeZECjSRhlwwXKS7k/T9Kok WIuz3Ib8KP73qZM4Z4xspX+hOfUr6cl7UpgsaoErL990Bjb64ulwOk9CDtVvEQUALCJ6 +BetvYVm87tf5jsPC7CPyk1tZgjG2THgV4JIGplF57x5jMN/bPaxgIjxer6r/3Yau6PK CYuZlHbe1UxbMYu1fKgP6ubK2oMLTYFd5+1F4t4hZxAIdA5f+GF80bNKJxi2ZJ6GYrm4 akQifxi4mHhJXhvBsjDfvwexNoS8xL0lVlhbI64kdo93J3gZFbnp5vdU7VX3iCqWKG3O liLg== X-Gm-Message-State: AC+VfDx5O37Fkph49GTSZ4Um9wX4ZtENLl5NX2V0nl0GCzXW+dBSxfw7 0lG1cHzwateDkS02w02KwNPjP3VFVHp9 X-Google-Smtp-Source: ACHHUZ77SQjQwOLxhrHaNM0FigTNi4lEQKPe6pNfUqI9t4HXUTjKxIAHzFKYhPNv7WMxrfF92QgOi7UDKId7 X-Received: from irogers.svl.corp.google.com ([2620:15c:2a3:200:497e:a125:3cde:94f]) (user=irogers job=sendgmr) by 2002:a25:ac8d:0:b0:bc9:20c5:34a1 with SMTP id x13-20020a25ac8d000000b00bc920c534a1mr6696913ybi.5.1687840542707; Mon, 26 Jun 2023 21:35:42 -0700 (PDT) Date: Mon, 26 Jun 2023 21:34:56 -0700 In-Reply-To: <20230627043458.662048-1-irogers@google.com> Message-Id: <20230627043458.662048-12-irogers@google.com> Mime-Version: 1.0 References: <20230627043458.662048-1-irogers@google.com> X-Mailer: git-send-email 2.41.0.162.gfafddb0af9-goog Subject: [PATCH v1 11/13] perf parse-events: Populate error column for BPF events From: Ian Rogers To: Peter Zijlstra , Ingo Molnar , Arnaldo Carvalho de Melo , Mark Rutland , Alexander Shishkin , Jiri Olsa , Namhyung Kim , Ian Rogers , Adrian Hunter , Athira Rajeev , Kan Liang , linux-perf-users@vger.kernel.org, linux-kernel@vger.kernel.org, bpf@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Follow convention from parse_events_terms__num/str and pass the YYLTYPE for the location. Signed-off-by: Ian Rogers --- tools/perf/tests/bpf.c | 2 +- tools/perf/util/parse-events.c | 77 ++++++++++++++++++++-------------- tools/perf/util/parse-events.h | 8 ++-- tools/perf/util/parse-events.y | 6 +-- 4 files changed, 55 insertions(+), 38 deletions(-) diff --git a/tools/perf/tests/bpf.c b/tools/perf/tests/bpf.c index 8beb46066034..31796f2a80f4 100644 --- a/tools/perf/tests/bpf.c +++ b/tools/perf/tests/bpf.c @@ -124,7 +124,7 @@ static int do_test(struct bpf_object *obj, int (*func)(= void), parse_state.error =3D &parse_error; INIT_LIST_HEAD(&parse_state.list); =20 - err =3D parse_events_load_bpf_obj(&parse_state, &parse_state.list, obj, N= ULL); + err =3D parse_events_load_bpf_obj(&parse_state, &parse_state.list, obj, N= ULL, NULL); parse_events_error__exit(&parse_error); if (err =3D=3D -ENODATA) { pr_debug("Failed to add events selected by BPF, debuginfo package not in= stalled\n"); diff --git a/tools/perf/util/parse-events.c b/tools/perf/util/parse-events.c index f31f233e395f..a92545908626 100644 --- a/tools/perf/util/parse-events.c +++ b/tools/perf/util/parse-events.c @@ -499,7 +499,7 @@ int parse_events_add_cache(struct list_head *list, int = *idx, const char *name, =20 #ifdef HAVE_LIBTRACEEVENT static void tracepoint_error(struct parse_events_error *e, int err, - const char *sys, const char *name) + const char *sys, const char *name, int column) { const char *str; char help[BUFSIZ]; @@ -526,18 +526,19 @@ static void tracepoint_error(struct parse_events_erro= r *e, int err, } =20 tracing_path__strerror_open_tp(err, help, sizeof(help), sys, name); - parse_events_error__handle(e, 0, strdup(str), strdup(help)); + parse_events_error__handle(e, column, strdup(str), strdup(help)); } =20 static int add_tracepoint(struct list_head *list, int *idx, const char *sys_name, const char *evt_name, struct parse_events_error *err, - struct list_head *head_config) + struct list_head *head_config, void *loc_) { + YYLTYPE *loc =3D loc_; struct evsel *evsel =3D evsel__newtp_idx(sys_name, evt_name, (*idx)++); =20 if (IS_ERR(evsel)) { - tracepoint_error(err, PTR_ERR(evsel), sys_name, evt_name); + tracepoint_error(err, PTR_ERR(evsel), sys_name, evt_name, loc->first_col= umn); return PTR_ERR(evsel); } =20 @@ -556,7 +557,7 @@ static int add_tracepoint(struct list_head *list, int *= idx, static int add_tracepoint_multi_event(struct list_head *list, int *idx, const char *sys_name, const char *evt_name, struct parse_events_error *err, - struct list_head *head_config) + struct list_head *head_config, YYLTYPE *loc) { char *evt_path; struct dirent *evt_ent; @@ -565,13 +566,13 @@ static int add_tracepoint_multi_event(struct list_hea= d *list, int *idx, =20 evt_path =3D get_events_file(sys_name); if (!evt_path) { - tracepoint_error(err, errno, sys_name, evt_name); + tracepoint_error(err, errno, sys_name, evt_name, loc->first_column); return -1; } evt_dir =3D opendir(evt_path); if (!evt_dir) { put_events_file(evt_path); - tracepoint_error(err, errno, sys_name, evt_name); + tracepoint_error(err, errno, sys_name, evt_name, loc->first_column); return -1; } =20 @@ -588,11 +589,11 @@ static int add_tracepoint_multi_event(struct list_hea= d *list, int *idx, found++; =20 ret =3D add_tracepoint(list, idx, sys_name, evt_ent->d_name, - err, head_config); + err, head_config, loc); } =20 if (!found) { - tracepoint_error(err, ENOENT, sys_name, evt_name); + tracepoint_error(err, ENOENT, sys_name, evt_name, loc->first_column); ret =3D -1; } =20 @@ -604,19 +605,19 @@ static int add_tracepoint_multi_event(struct list_hea= d *list, int *idx, static int add_tracepoint_event(struct list_head *list, int *idx, const char *sys_name, const char *evt_name, struct parse_events_error *err, - struct list_head *head_config) + struct list_head *head_config, YYLTYPE *loc) { return strpbrk(evt_name, "*?") ? - add_tracepoint_multi_event(list, idx, sys_name, evt_name, - err, head_config) : - add_tracepoint(list, idx, sys_name, evt_name, - err, head_config); + add_tracepoint_multi_event(list, idx, sys_name, evt_name, + err, head_config, loc) : + add_tracepoint(list, idx, sys_name, evt_name, + err, head_config, loc); } =20 static int add_tracepoint_multi_sys(struct list_head *list, int *idx, const char *sys_name, const char *evt_name, struct parse_events_error *err, - struct list_head *head_config) + struct list_head *head_config, YYLTYPE *loc) { struct dirent *events_ent; DIR *events_dir; @@ -624,7 +625,7 @@ static int add_tracepoint_multi_sys(struct list_head *l= ist, int *idx, =20 events_dir =3D tracing_events__opendir(); if (!events_dir) { - tracepoint_error(err, errno, sys_name, evt_name); + tracepoint_error(err, errno, sys_name, evt_name, loc->first_column); return -1; } =20 @@ -640,7 +641,7 @@ static int add_tracepoint_multi_sys(struct list_head *l= ist, int *idx, continue; =20 ret =3D add_tracepoint_event(list, idx, events_ent->d_name, - evt_name, err, head_config); + evt_name, err, head_config, loc); } =20 closedir(events_dir); @@ -653,6 +654,7 @@ struct __add_bpf_event_param { struct parse_events_state *parse_state; struct list_head *list; struct list_head *head_config; + YYLTYPE *loc; }; =20 static int add_bpf_event(const char *group, const char *event, int fd, str= uct bpf_object *obj, @@ -679,7 +681,7 @@ static int add_bpf_event(const char *group, const char = *event, int fd, struct bp =20 err =3D parse_events_add_tracepoint(&new_evsels, &parse_state->idx, group, event, parse_state->error, - param->head_config); + param->head_config, param->loc); if (err) { struct evsel *evsel, *tmp; =20 @@ -706,12 +708,14 @@ static int add_bpf_event(const char *group, const cha= r *event, int fd, struct bp int parse_events_load_bpf_obj(struct parse_events_state *parse_state, struct list_head *list, struct bpf_object *obj, - struct list_head *head_config) + struct list_head *head_config, + void *loc) { int err; char errbuf[BUFSIZ]; - struct __add_bpf_event_param param =3D {parse_state, list, head_config}; + struct __add_bpf_event_param param =3D {parse_state, list, head_config, l= oc}; static bool registered_unprobe_atexit =3D false; + YYLTYPE test_loc =3D {.first_column =3D -1}; =20 if (IS_ERR(obj) || !obj) { snprintf(errbuf, sizeof(errbuf), @@ -742,6 +746,9 @@ int parse_events_load_bpf_obj(struct parse_events_state= *parse_state, goto errout; } =20 + if (!param.loc) + param.loc =3D &test_loc; + err =3D bpf__foreach_event(obj, add_bpf_event, ¶m); if (err) { snprintf(errbuf, sizeof(errbuf), @@ -751,7 +758,7 @@ int parse_events_load_bpf_obj(struct parse_events_state= *parse_state, =20 return 0; errout: - parse_events_error__handle(parse_state->error, 0, + parse_events_error__handle(parse_state->error, param.loc->first_column, strdup(errbuf), strdup("(add -v to see detail)")); return err; } @@ -839,11 +846,13 @@ int parse_events_load_bpf(struct parse_events_state *= parse_state, struct list_head *list, char *bpf_file_name, bool source, - struct list_head *head_config) + struct list_head *head_config, + void *loc_) { int err; struct bpf_object *obj; LIST_HEAD(obj_head_config); + YYLTYPE *loc =3D loc_; =20 if (head_config) split_bpf_config_terms(head_config, &obj_head_config); @@ -863,12 +872,12 @@ int parse_events_load_bpf(struct parse_events_state *= parse_state, -err, errbuf, sizeof(errbuf)); =20 - parse_events_error__handle(parse_state->error, 0, + parse_events_error__handle(parse_state->error, loc->first_column, strdup(errbuf), strdup("(add -v to see detail)")); return err; } =20 - err =3D parse_events_load_bpf_obj(parse_state, list, obj, head_config); + err =3D parse_events_load_bpf_obj(parse_state, list, obj, head_config, lo= c); if (err) return err; err =3D parse_events_config_bpf(parse_state, obj, &obj_head_config); @@ -885,9 +894,12 @@ int parse_events_load_bpf(struct parse_events_state *p= arse_state, int parse_events_load_bpf_obj(struct parse_events_state *parse_state, struct list_head *list __maybe_unused, struct bpf_object *obj __maybe_unused, - struct list_head *head_config __maybe_unused) + struct list_head *head_config __maybe_unused, + void *loc_) { - parse_events_error__handle(parse_state->error, 0, + YYLTYPE *loc =3D loc_; + + parse_events_error__handle(parse_state->error, loc->first_column, strdup("BPF support is not compiled"), strdup("Make sure libbpf-devel is available at build time.")); return -ENOTSUP; @@ -897,9 +909,12 @@ int parse_events_load_bpf(struct parse_events_state *p= arse_state, struct list_head *list __maybe_unused, char *bpf_file_name __maybe_unused, bool source __maybe_unused, - struct list_head *head_config __maybe_unused) + struct list_head *head_config __maybe_unused, + void *loc_) { - parse_events_error__handle(parse_state->error, 0, + YYLTYPE *loc =3D loc_; + + parse_events_error__handle(parse_state->error, loc->first_column, strdup("BPF support is not compiled"), strdup("Make sure libbpf-devel is available at build time.")); return -ENOTSUP; @@ -1433,7 +1448,7 @@ static int get_config_chgs(struct perf_pmu *pmu, stru= ct list_head *head_config, int parse_events_add_tracepoint(struct list_head *list, int *idx, const char *sys, const char *event, struct parse_events_error *err, - struct list_head *head_config) + struct list_head *head_config, void *loc) { #ifdef HAVE_LIBTRACEEVENT if (head_config) { @@ -1446,10 +1461,10 @@ int parse_events_add_tracepoint(struct list_head *l= ist, int *idx, =20 if (strpbrk(sys, "*?")) return add_tracepoint_multi_sys(list, idx, sys, event, - err, head_config); + err, head_config, loc); else return add_tracepoint_event(list, idx, sys, event, - err, head_config); + err, head_config, loc); #else (void)list; (void)idx; diff --git a/tools/perf/util/parse-events.h b/tools/perf/util/parse-events.h index b37e5ee193a8..cabbe70adb82 100644 --- a/tools/perf/util/parse-events.h +++ b/tools/perf/util/parse-events.h @@ -169,18 +169,20 @@ int parse_events_name(struct list_head *list, const c= har *name); int parse_events_add_tracepoint(struct list_head *list, int *idx, const char *sys, const char *event, struct parse_events_error *error, - struct list_head *head_config); + struct list_head *head_config, void *loc); int parse_events_load_bpf(struct parse_events_state *parse_state, struct list_head *list, char *bpf_file_name, bool source, - struct list_head *head_config); + struct list_head *head_config, + void *loc); /* Provide this function for perf test */ struct bpf_object; int parse_events_load_bpf_obj(struct parse_events_state *parse_state, struct list_head *list, struct bpf_object *obj, - struct list_head *head_config); + struct list_head *head_config, + void *loc); int parse_events_add_numeric(struct parse_events_state *parse_state, struct list_head *list, u32 type, u64 config, diff --git a/tools/perf/util/parse-events.y b/tools/perf/util/parse-events.y index a636a7db6e6f..50f5b819de37 100644 --- a/tools/perf/util/parse-events.y +++ b/tools/perf/util/parse-events.y @@ -567,7 +567,7 @@ tracepoint_name opt_event_config error->idx =3D @1.first_column; =20 err =3D parse_events_add_tracepoint(list, &parse_state->idx, $1.sys, $1.e= vent, - error, $2); + error, $2, &@1); =20 parse_events_terms__delete($2); free($1.sys); @@ -640,7 +640,7 @@ PE_BPF_OBJECT opt_event_config list =3D alloc_list(); if (!list) YYNOMEM; - err =3D parse_events_load_bpf(parse_state, list, $1, false, $2); + err =3D parse_events_load_bpf(parse_state, list, $1, false, $2, &@1); parse_events_terms__delete($2); free($1); if (err) { @@ -658,7 +658,7 @@ PE_BPF_SOURCE opt_event_config list =3D alloc_list(); if (!list) YYNOMEM; - err =3D parse_events_load_bpf(_parse_state, list, $1, true, $2); + err =3D parse_events_load_bpf(_parse_state, list, $1, true, $2, &@1); parse_events_terms__delete($2); if (err) { free(list); --=20 2.41.0.162.gfafddb0af9-goog From nobody Sun Feb 8 01:31:26 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 C86CCEB64D9 for ; Tue, 27 Jun 2023 04:36:51 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S230258AbjF0Egu (ORCPT ); Tue, 27 Jun 2023 00:36:50 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:34444 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230444AbjF0EgU (ORCPT ); Tue, 27 Jun 2023 00:36:20 -0400 Received: from mail-yw1-x1149.google.com (mail-yw1-x1149.google.com [IPv6:2607:f8b0:4864:20::1149]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id B5CEB1716 for ; Mon, 26 Jun 2023 21:35:45 -0700 (PDT) Received: by mail-yw1-x1149.google.com with SMTP id 00721157ae682-576d63dfc1dso13991627b3.3 for ; Mon, 26 Jun 2023 21:35:45 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20221208; t=1687840545; x=1690432545; h=to:from:subject:references:mime-version:message-id:in-reply-to:date :from:to:cc:subject:date:message-id:reply-to; bh=UFXjOGQUuRL/6Lf/qhHtjD4wLyWg5SPpnyU6+2nAMFU=; b=WuzxF4hiC134VQthgbEQwiSQJ7Ssgcg+mMbUKJzZP62pLb+9TsBeOV1/RsS6C9p20m wE3eSW7aLPghlDc8f/QiGz7fCKCmgiNodA4Zdzc3yUfIBpdXjzbAfQyai2Ufubgv7vh/ //L5QISuq82uO+fWFgg55dds2XDlvms0SjwykGX8Py1y/ksgnDtj8PHCL/HTJAfL4p6/ SAJtQ0S355Hdw/TDxIY7W3nymKHV+BYgjDnlM2tG8jsYHozdwNGGmK7YzZQWhXjjg9ke tPUOSjMNDH4LrpUZ1FU2AgQaU57l/jkUf41g9xNWBGrG87slOTNiYJwLyAR93hpvV1Mv hnJw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1687840545; x=1690432545; h=to:from:subject:references:mime-version:message-id:in-reply-to:date :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=UFXjOGQUuRL/6Lf/qhHtjD4wLyWg5SPpnyU6+2nAMFU=; b=abllzI1VPjWqNbousVrTSKytpoZsUXyi7PYDKEI4ZzIpItbeVDmb8dPrnaWcG5pwNj ygvKGTDTNgq9ylo8MS+8mNtvlAFG8VzfmBxst6GzwKuO3ckll7srQeQXqnNxU82uMLo8 YUGh4qDG4UFYq3SQJoVc2BP8Z76iQohqwNswHhPo2mYWQr+utZMlzM8/QTyqpKNKChSQ 5vBBo5WSgxFMrk8ygZtdbcW6XlDfO4Z1Rqr2D7fP5npHWMggoSG4jiG7i43zYSofglNB 6Kjn9Ghc4BMBz4++9v0obA/oGiUd4qaLAZoKEoeNig0vcAJcJaFr3VvietwiSGdeDdUv I6NQ== X-Gm-Message-State: AC+VfDxFTPcg44c0GgTMADKi1k4eLAi7WDCbbdpbYmwqrgSwZ2XS37XI BpkQc+9RWBf7AXT2jhFUOUSBJE7uPbhQ X-Google-Smtp-Source: ACHHUZ5V6kpYqAE9w966HoP/tbn8OzhGrmerxYboNRZvOVEgWJy+GuW6GPPWYQmaTpLKG9938psz7F119P3b X-Received: from irogers.svl.corp.google.com ([2620:15c:2a3:200:497e:a125:3cde:94f]) (user=irogers job=sendgmr) by 2002:a81:4505:0:b0:576:af04:3495 with SMTP id s5-20020a814505000000b00576af043495mr2838921ywa.9.1687840544829; Mon, 26 Jun 2023 21:35:44 -0700 (PDT) Date: Mon, 26 Jun 2023 21:34:57 -0700 In-Reply-To: <20230627043458.662048-1-irogers@google.com> Message-Id: <20230627043458.662048-13-irogers@google.com> Mime-Version: 1.0 References: <20230627043458.662048-1-irogers@google.com> X-Mailer: git-send-email 2.41.0.162.gfafddb0af9-goog Subject: [PATCH v1 12/13] perf parse-events: Improve location for add pmu From: Ian Rogers To: Peter Zijlstra , Ingo Molnar , Arnaldo Carvalho de Melo , Mark Rutland , Alexander Shishkin , Jiri Olsa , Namhyung Kim , Ian Rogers , Adrian Hunter , Athira Rajeev , Kan Liang , linux-perf-users@vger.kernel.org, linux-kernel@vger.kernel.org, bpf@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Improve the location for add PMU for cases when PMUs aren't found. Signed-off-by: Ian Rogers --- tools/perf/util/parse-events.c | 12 +++++++----- tools/perf/util/parse-events.h | 4 ++-- tools/perf/util/parse-events.y | 8 ++++---- 3 files changed, 13 insertions(+), 11 deletions(-) diff --git a/tools/perf/util/parse-events.c b/tools/perf/util/parse-events.c index a92545908626..473746c9f3c4 100644 --- a/tools/perf/util/parse-events.c +++ b/tools/perf/util/parse-events.c @@ -1566,13 +1566,14 @@ static bool config_term_percore(struct list_head *c= onfig_terms) int parse_events_add_pmu(struct parse_events_state *parse_state, struct list_head *list, char *name, struct list_head *head_config, - bool auto_merge_stats) + bool auto_merge_stats, void *loc_) { struct perf_event_attr attr; struct perf_pmu_info info; struct perf_pmu *pmu; struct evsel *evsel; struct parse_events_error *err =3D parse_state->error; + YYLTYPE *loc =3D loc_; LIST_HEAD(config_terms); =20 pmu =3D parse_state->fake_pmu ?: perf_pmus__find(name); @@ -1596,7 +1597,7 @@ int parse_events_add_pmu(struct parse_events_state *p= arse_state, if (asprintf(&err_str, "Cannot find PMU `%s'. Missing kernel support?", name) >=3D 0) - parse_events_error__handle(err, 0, err_str, NULL); + parse_events_error__handle(err, loc->first_column, err_str, NULL); return -EINVAL; } if (head_config) @@ -1682,12 +1683,13 @@ int parse_events_add_pmu(struct parse_events_state = *parse_state, =20 int parse_events_multi_pmu_add(struct parse_events_state *parse_state, char *str, struct list_head *head, - struct list_head **listp) + struct list_head **listp, void *loc_) { struct parse_events_term *term; struct list_head *list =3D NULL; struct list_head *orig_head =3D NULL; struct perf_pmu *pmu =3D NULL; + YYLTYPE *loc =3D loc_; int ok =3D 0; char *config; =20 @@ -1734,7 +1736,7 @@ int parse_events_multi_pmu_add(struct parse_events_st= ate *parse_state, parse_events_copy_term_list(head, &orig_head); if (!parse_events_add_pmu(parse_state, list, pmu->name, orig_head, - auto_merge_stats)) { + auto_merge_stats, loc)) { pr_debug("%s -> %s/%s/\n", str, pmu->name, alias->str); parse_state->wild_card_pmus =3D true; @@ -1747,7 +1749,7 @@ int parse_events_multi_pmu_add(struct parse_events_st= ate *parse_state, =20 if (parse_state->fake_pmu) { if (!parse_events_add_pmu(parse_state, list, str, head, - /*auto_merge_stats=3D*/true)) { + /*auto_merge_stats=3D*/true, loc)) { pr_debug("%s -> %s/%s/\n", str, "fake_pmu", str); ok++; } diff --git a/tools/perf/util/parse-events.h b/tools/perf/util/parse-events.h index cabbe70adb82..e59b33805886 100644 --- a/tools/perf/util/parse-events.h +++ b/tools/perf/util/parse-events.h @@ -202,7 +202,7 @@ int parse_events_add_breakpoint(struct parse_events_sta= te *parse_state, int parse_events_add_pmu(struct parse_events_state *parse_state, struct list_head *list, char *name, struct list_head *head_config, - bool auto_merge_stats); + bool auto_merge_stats, void *loc); =20 struct evsel *parse_events__add_event(int idx, struct perf_event_attr *att= r, const char *name, const char *metric_id, @@ -211,7 +211,7 @@ struct evsel *parse_events__add_event(int idx, struct p= erf_event_attr *attr, int parse_events_multi_pmu_add(struct parse_events_state *parse_state, char *str, struct list_head *head_config, - struct list_head **listp); + struct list_head **listp, void *loc); =20 int parse_events_copy_term_list(struct list_head *old, struct list_head **new); diff --git a/tools/perf/util/parse-events.y b/tools/perf/util/parse-events.y index 50f5b819de37..844646752462 100644 --- a/tools/perf/util/parse-events.y +++ b/tools/perf/util/parse-events.y @@ -313,7 +313,7 @@ PE_NAME opt_pmu_config YYNOMEM; } /* Attempt to add to list assuming $1 is a PMU name. */ - if (parse_events_add_pmu(parse_state, list, $1, $2, /*auto_merge_stats=3D= */false)) { + if (parse_events_add_pmu(parse_state, list, $1, $2, /*auto_merge_stats=3D= */false, &@1)) { struct perf_pmu *pmu =3D NULL; int ok =3D 0; =20 @@ -341,7 +341,7 @@ PE_NAME opt_pmu_config YYNOMEM; } if (!parse_events_add_pmu(parse_state, list, pmu->name, terms, - auto_merge_stats)) { + auto_merge_stats, &@1)) { ok++; parse_state->wild_card_pmus =3D true; } @@ -352,7 +352,7 @@ PE_NAME opt_pmu_config if (!ok) { /* Failure to add, assume $1 is an event name. */ zfree(&list); - ok =3D !parse_events_multi_pmu_add(parse_state, $1, $2, &list); + ok =3D !parse_events_multi_pmu_add(parse_state, $1, $2, &list, &@1); $2 =3D NULL; } if (!ok) { @@ -379,7 +379,7 @@ PE_NAME sep_dc struct list_head *list; int err; =20 - err =3D parse_events_multi_pmu_add(_parse_state, $1, NULL, &list); + err =3D parse_events_multi_pmu_add(_parse_state, $1, NULL, &list, &@1); if (err < 0) { struct parse_events_state *parse_state =3D _parse_state; struct parse_events_error *error =3D parse_state->error; --=20 2.41.0.162.gfafddb0af9-goog From nobody Sun Feb 8 01:31:26 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 3EEF5EB64DC for ; Tue, 27 Jun 2023 04:37:10 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S229900AbjF0EhI (ORCPT ); Tue, 27 Jun 2023 00:37:08 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:34536 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S231175AbjF0EgY (ORCPT ); Tue, 27 Jun 2023 00:36:24 -0400 Received: from mail-yw1-x114a.google.com (mail-yw1-x114a.google.com [IPv6:2607:f8b0:4864:20::114a]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id DABC4213A for ; Mon, 26 Jun 2023 21:35:47 -0700 (PDT) Received: by mail-yw1-x114a.google.com with SMTP id 00721157ae682-5700861af1bso57938477b3.2 for ; Mon, 26 Jun 2023 21:35:47 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20221208; t=1687840547; x=1690432547; h=to:from:subject:references:mime-version:message-id:in-reply-to:date :from:to:cc:subject:date:message-id:reply-to; bh=/xtK5HWFrotXOQTFAtNsXMiJLnjczB0bKaJqMYYAdAw=; b=dq8Z6/zkvj5AhkzyvCcePMaY/4TJVw6FKcFL0Grg7cTDpD7U97mANBasuEHRqq5E6J CeQG3laHxYsRQCw3jJIaAi640DkEL7fgTvW22VJ8WDVgEl+4NX2s598D87gax6gGuSoB 5hMicurS2TR9HLtZr0Wd1+mVC7zxtAjFXsaOKbM0in3upafjoLIvGDv/bWUYVrx7xhKU cqHeiQZ1IEWQgkzY5fGck0b2h+bdXDUYdfXp4LE7J8DEVN8XccrdNwldcj6O43u/1TpF Z9PZyLuTNMg27UDpArpdutfeETdpMIdn7hEG+m84SMTDXzgW2+FoZUTV0XQUDCUMEpna RnBg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1687840547; x=1690432547; h=to:from:subject:references:mime-version:message-id:in-reply-to:date :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=/xtK5HWFrotXOQTFAtNsXMiJLnjczB0bKaJqMYYAdAw=; b=mI+OkGHWGahHp2lov3LUpwg03fHK0IqtkyKS+ZjA42wLPVLMVrym3rc5BrPbBiHcRT rK5q1tvuBTU7uaYd5SyBT1U5XzGfmvqZyEbcqKSkxEhD63JXkN+zT84tdY2/sbbZa3jB XPtSeNEEm7aM0Gc2c/S+dVSM9YSEGRjIkkRTAwlXMDpby3YZPwXLmqCLESJWNyUMTfBP kpVUag7F4luSwaw0otXYZvRPHJ+ZLDz2EUYOzAua0YoupPhy7cI90/MCGcWfPwHMRAxL hoPor/s+L+n8Ghb0qO1oaIPagMc3VAgdezguO4yDpNdJll3iwLpCOvCDugCxf1tWydgj JT6Q== X-Gm-Message-State: AC+VfDx9pOuqISr9Qm2i06gLLm+r910rgjXNJXaL+uMg2XctymTisY4B ArTgL7gQNSW53oa98Bn/qnv8lMSw2W07 X-Google-Smtp-Source: ACHHUZ7GCRaJQ8Zjv8j32ZTbpzp8/lqeBYs2D+DAkuQ/ELDVxl53n8Ud2bKcAn8g+26DHXYGmXXZ/pEJnOgt X-Received: from irogers.svl.corp.google.com ([2620:15c:2a3:200:497e:a125:3cde:94f]) (user=irogers job=sendgmr) by 2002:a81:b344:0:b0:56d:25f3:f940 with SMTP id r65-20020a81b344000000b0056d25f3f940mr13876270ywh.10.1687840547041; Mon, 26 Jun 2023 21:35:47 -0700 (PDT) Date: Mon, 26 Jun 2023 21:34:58 -0700 In-Reply-To: <20230627043458.662048-1-irogers@google.com> Message-Id: <20230627043458.662048-14-irogers@google.com> Mime-Version: 1.0 References: <20230627043458.662048-1-irogers@google.com> X-Mailer: git-send-email 2.41.0.162.gfafddb0af9-goog Subject: [PATCH v1 13/13] perf parse-events: Remove ABORT_ON From: Ian Rogers To: Peter Zijlstra , Ingo Molnar , Arnaldo Carvalho de Melo , Mark Rutland , Alexander Shishkin , Jiri Olsa , Namhyung Kim , Ian Rogers , Adrian Hunter , Athira Rajeev , Kan Liang , linux-perf-users@vger.kernel.org, linux-kernel@vger.kernel.org, bpf@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Prefer informative messages rather than none with ABORT_ON. Document one failure mode and add an error message for another. Signed-off-by: Ian Rogers --- tools/perf/util/parse-events.y | 22 ++++++++++++++-------- 1 file changed, 14 insertions(+), 8 deletions(-) diff --git a/tools/perf/util/parse-events.y b/tools/perf/util/parse-events.y index 844646752462..454577f7aff6 100644 --- a/tools/perf/util/parse-events.y +++ b/tools/perf/util/parse-events.y @@ -22,12 +22,6 @@ =20 void parse_events_error(YYLTYPE *loc, void *parse_state, void *scanner, ch= ar const *msg); =20 -#define ABORT_ON(val) \ -do { \ - if (val) \ - YYABORT; \ -} while (0) - #define PE_ABORT(val) \ do { \ if (val =3D=3D -ENOMEM) \ @@ -618,7 +612,9 @@ PE_RAW opt_event_config YYNOMEM; errno =3D 0; num =3D strtoull($1 + 1, NULL, 16); - ABORT_ON(errno); + /* Given the lexer will only give [a-fA-F0-9]+ a failure here should be i= mpossible. */ + if (errno) + YYABORT; free($1); err =3D parse_events_add_numeric(_parse_state, list, PERF_TYPE_RAW, num, = $2, /*wildcard=3D*/false); @@ -978,7 +974,17 @@ PE_VALUE PE_ARRAY_RANGE PE_VALUE { struct parse_events_array array; =20 - ABORT_ON($3 < $1); + if ($3 < $1) { + struct parse_events_state *parse_state =3D _parse_state; + struct parse_events_error *error =3D parse_state->error; + char *err_str; + + if (asprintf(&err_str, "Expected '%ld' to be less-than '%ld'", $3, $1) <= 0) + err_str =3D NULL; + + parse_events_error__handle(error, @1.first_column, err_str, NULL); + YYABORT; + } array.nr_ranges =3D 1; array.ranges =3D malloc(sizeof(array.ranges[0])); if (!array.ranges) --=20 2.41.0.162.gfafddb0af9-goog