From patchwork Tue Jun 27 04:34:46 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ian Rogers X-Patchwork-Id: 13293991 Received: from lindbergh.monkeyblade.net (lindbergh.monkeyblade.net [23.128.96.19]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id C9A6110EF for ; Tue, 27 Jun 2023 04:35:22 +0000 (UTC) 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 6333E1716 for ; Mon, 26 Jun 2023 21:35:21 -0700 (PDT) Received: by mail-yw1-x114a.google.com with SMTP id 00721157ae682-56938733c13so52791597b3.1 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=YlgQdqUjU+tkR7sEUCLP2GzyM4AJSz/4O9rrv++zWDNsMWl6YxdKC02jahd06XBV+y nqV+NMSM5bZdac1QAF1TWcyiebJJbNK7uQbeIx9YI99XrDfqDPo3p3EKiHpNEgrMmyZ6 C9lC4t9RSJHb0q2nRdvAZXnhXJes7rNl8Y6Suoza4TW/h5s6yRzEdaz30EpdKLN0ZrBQ rVw0PCz9YIiLKORbobaDohmWAY498tlR8aM2l++wQuTEMSfuVewCREaJA2Tf5MlrwrcQ rVYmlAqEHKYn5TsUP+e/t1KTq/KTLuanXfd59v1sZ9/4m3zu+tWGfjz7yzFQDVRao7+r XyNg== X-Gm-Message-State: AC+VfDxZfbaBjRVapZ5/g9roCKR8hnbAaamMFsR9oCqW327N5IpZlWq2 gaJBL+weG3gXQi9R4D6e806256udEC5D 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> Precedence: bulk X-Mailing-List: bpf@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: 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 X-Spam-Status: No, score=-9.6 required=5.0 tests=BAYES_00,DKIMWL_WL_MED, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,RCVD_IN_DNSWL_NONE, SPF_HELO_NONE,SPF_PASS,T_SCC_BODY_TEXT_LINE,USER_IN_DEF_DKIM_WL autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net 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; $$ = list; } -| -PE_PMU_EVENT_FAKE sep_dc -{ - struct list_head *list; - int err; - - list = alloc_list(); - if (!list) - YYABORT; - - err = parse_events_add_pmu(_parse_state, list, $1, /*head_config=*/NULL, - /*auto_merge_stats=*/false); - free($1); - if (err < 0) { - free(list); - YYABORT; - } - $$ = list; -} -| -PE_PMU_EVENT_FAKE opt_pmu_config -{ - struct list_head *list; - int err; - - list = alloc_list(); - if (!list) - YYABORT; - - err = parse_events_add_pmu(_parse_state, list, $1, $2, /*auto_merge_stats=*/false); - free($1); - parse_events_terms__delete($2); - if (err < 0) { - free(list); - YYABORT; - } - $$ = list; -} value_sym: PE_VALUE_SYM_HW From patchwork Tue Jun 27 04:34:47 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ian Rogers X-Patchwork-Id: 13293992 Received: from lindbergh.monkeyblade.net (lindbergh.monkeyblade.net [23.128.96.19]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id DFC4B10EF for ; Tue, 27 Jun 2023 04:35:24 +0000 (UTC) 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 8F33A171A for ; Mon, 26 Jun 2023 21:35:23 -0700 (PDT) Received: by mail-yb1-xb49.google.com with SMTP id 3f1490d57ef6-bf34588085bso5545703276.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=Fwoat5A5oc8R6YiDJ59oTK+s5hYRLyxvQ+OVEZHX44kAZ+qV8YWTTbTJ9k1SRJaSaI Tatuiqq+EegVD/u+G5nMmPRZsMRVDwRZpkDJZZwSyPqGLUEQCIIL17cXiTP3Vv2pBcq+ rNgpP8y5HhJu0uPHr9mj10R66Kb1Xe6GXYikjNKMs5r6gq5LFMry+yFA0omtvCgXHIYJ 667VlW04thgyAh1XFw8D94fRgsKWqERtJgeG0GyU1vlgpiixYBlkx+oLRlbPYX6jz3TC nxeL9tz55KEPl9NWWLRxaluFoL2f2soA0kk11rMNUVlcYxQkM6cDKKfkjo7EIoQLjq+l i7NA== X-Gm-Message-State: AC+VfDx97XTGlJKnoLkZyxD6sHe50HNDkdmkkhM1Q4JGtt/qITuq3JHS qUMpznJd2lCwqCWescwc4WlpB2ybpNt5 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> Precedence: bulk X-Mailing-List: bpf@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: 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 X-Spam-Status: No, score=-9.6 required=5.0 tests=BAYES_00,DKIMWL_WL_MED, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,RCVD_IN_DNSWL_NONE, SPF_HELO_NONE,SPF_PASS,T_SCC_BODY_TEXT_LINE,USER_IN_DEF_DKIM_WL autolearn=unavailable autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net 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 = parse_events_multi_pmu_add(_parse_state, $1, NULL, &list); - free($1); - if (err < 0) - YYABORT; - $$ = list; -} -| PE_NAME sep_dc { struct list_head *list; @@ -381,19 +367,6 @@ PE_NAME sep_dc YYABORT; $$ = list; } -| -PE_KERNEL_PMU_EVENT opt_pmu_config -{ - struct list_head *list; - int err; - - /* frees $2 */ - err = parse_events_multi_pmu_add(_parse_state, $1, $2, &list); - free($1); - if (err < 0) - YYABORT; - $$ = list; -} value_sym: PE_VALUE_SYM_HW From patchwork Tue Jun 27 04:34:48 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ian Rogers X-Patchwork-Id: 13293993 Received: from lindbergh.monkeyblade.net (lindbergh.monkeyblade.net [23.128.96.19]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id A6F2710EF for ; Tue, 27 Jun 2023 04:35:26 +0000 (UTC) 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 7A2211726 for ; Mon, 26 Jun 2023 21:35:25 -0700 (PDT) Received: by mail-yb1-xb49.google.com with SMTP id 3f1490d57ef6-c17812e30b4so3269110276.1 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=PfsfQ4/A4/IZFJh7h2c0XF/OFG6+oB9Im21uYnBtl/bEhk2TWaKMGIORNxtnVpoCjS FLgVnYcNKhywlBRhDW6wTbBnzK8rNdyLtUD86R/uVwNo+MBNLsbq1NLg8tvCSiNB8UJ7 x9FX2h5HiUyFKUA2NWtRveN7sY+vq/Pe0yGfu65PgCDMJQ1FdToqDvn8K7eZNNFuu1As oVaPPTQOIailiu5EndR/wamyVGRxQd0G/a13mddArBbFcq7iZfylRY66saLYbz4g11XF G0mY+OMgbPE7hmxgzmragZh25aqdZEcmbhhbzoLaAaH0lN/btDR0wp+1VddoKZow9Aix KPhQ== X-Gm-Message-State: AC+VfDwHkl4NHCphKw82OWyLJrdx5cSO1G6pu+4TvrnakTp9l83kXtoL Jsjd8TDYuWPk2MHgAwfbKyUJrr02knwW 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> Precedence: bulk X-Mailing-List: bpf@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: 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 X-Spam-Status: No, score=-9.6 required=5.0 tests=BAYES_00,DKIMWL_WL_MED, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,RCVD_IN_DNSWL_NONE, SPF_HELO_NONE,SPF_PASS,T_SCC_BODY_TEXT_LINE,USER_IN_DEF_DKIM_WL autolearn=unavailable autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net 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 From patchwork Tue Jun 27 04:34:49 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ian Rogers X-Patchwork-Id: 13293994 Received: from lindbergh.monkeyblade.net (lindbergh.monkeyblade.net [23.128.96.19]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id E6FFDEDA for ; Tue, 27 Jun 2023 04:35:29 +0000 (UTC) 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 B1D181720 for ; Mon, 26 Jun 2023 21:35:27 -0700 (PDT) Received: by mail-yw1-x1149.google.com with SMTP id 00721157ae682-573d70da2dcso50846297b3.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=atF5cbruAxd9QMfAoSASGX0g7yBdvTU8mvRJh3XlAb4PspYiIoV25TKtTPo/fmruuC CFAE7byzDd3RQEKGF/en2q4AbUPJDb+iPSkuEWtPGRajw5X7o6oZB3K3neQGgalnLRS5 w1T5ZNrVFbrlHsPLcrRkmp0gH8ecoS/1RecP6K4nxIg1jVG4OojDqcqcHNfxNJCxhOhW z0smg1OU0PxM/ag/EQk59YyeX5+0ZjKBumiUSb1uN7LYcKGCPHsj9NVbI26hqY6NwA/s pS/on8oBDglaVqyDB1MGIzpOvxdBi7U7+W5fHNxQ5jUSzyha73SHa7fbPy4FwmG7UXHr P9zw== X-Gm-Message-State: AC+VfDxxA6YpHeB94q0yvo/aj5Jhg8bvTf6EqijUHdRh4JfvC71DATty BJ3GplK710jgZNjZ8DPKqLz+XTuqjcV8 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> Precedence: bulk X-Mailing-List: bpf@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: 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 X-Spam-Status: No, score=-9.6 required=5.0 tests=BAYES_00,DKIMWL_WL_MED, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,RCVD_IN_DNSWL_NONE, SPF_HELO_NONE,SPF_PASS,T_SCC_BODY_TEXT_LINE,USER_IN_DEF_DKIM_WL autolearn=unavailable autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net 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 { }; 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; }; From patchwork Tue Jun 27 04:34:50 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ian Rogers X-Patchwork-Id: 13293995 Received: from lindbergh.monkeyblade.net (lindbergh.monkeyblade.net [23.128.96.19]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id CA4581859 for ; Tue, 27 Jun 2023 04:35:30 +0000 (UTC) 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 C5CD31716 for ; Mon, 26 Jun 2023 21:35:29 -0700 (PDT) Received: by mail-yw1-x114a.google.com with SMTP id 00721157ae682-576d63dfc1dso13989057b3.3 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=J3ge3kHr0WEAW4xbD9M0Qvzzk0j4Exmf8krg1vKB64mfO3+Gp7CQfZqrREMKGekqp/ QPtAmIIBCN6x2pjb6ZKD0ISrw0ITm8RTw4Lpcn4cvMY3DkPSlP6OpV0ASjpcgLGvWgOH DHryMo9sslIUMjh9ycW5GFcB6etBQOFXVocH1rbRp4Vb1pjf/EOf9r8p8I4u+1JkO7nH plMiwSwXkFpCOBGpw2VSOex5gBq4CKGeQOD5imCMsFvlRawI9P5qJe/AEzl+i44v8IgI xCfJva9aFyFtP5sa9KR12Z2fVCPxBzVdOnRkFpZSCfaxG07Emv8UZZFul/l75rzqyKBO EGFA== X-Gm-Message-State: AC+VfDyQDdwmuvQB4xS2dLS1Xlmnm00z+y2OQqRgOEJjX/yrWXzmBN1+ TsPlTvbhe570NQ79Ss0c2lxmr/Kq32Ov 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> Precedence: bulk X-Mailing-List: bpf@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: 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 X-Spam-Status: No, score=-9.6 required=5.0 tests=BAYES_00,DKIMWL_WL_MED, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,RCVD_IN_DNSWL_NONE, SPF_HELO_NONE,SPF_PASS,T_SCC_BODY_TEXT_LINE,USER_IN_DEF_DKIM_WL autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net 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_state *parse_state, auto_merge_stats)) { pr_debug("%s -> %s/%s/\n", str, pmu->name, alias->str); + parse_state->wild_card_pmus = true; ok++; } parse_events_terms__delete(orig_head); From patchwork Tue Jun 27 04:34:51 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ian Rogers X-Patchwork-Id: 13293996 Received: from lindbergh.monkeyblade.net (lindbergh.monkeyblade.net [23.128.96.19]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 907B81FB3 for ; Tue, 27 Jun 2023 04:35:33 +0000 (UTC) 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 5DFC7172E for ; Mon, 26 Jun 2023 21:35:32 -0700 (PDT) Received: by mail-yw1-x1149.google.com with SMTP id 00721157ae682-57003dac4a8so106053397b3.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=c1hgVzfPavrtdSa22HmQjAR7oB3vU+nyzl5/K7uiE2fZ7qiK1e8Mh73jVnGMAFfVer qNUe/Ym4DZjex8GB6iWlVMTEdrDz4icu+cGh05364KqMCB0od2yu047i3RoCa9FP/45e wM8zet0LDxIL6o5Vt+1EooiAgtGlnvW7sK7Jjjv1rdhR+tskhsWqC61Co1yW9YoCVp+Y mBFppPziEXs55SCIWewrhDH+vTo/CX+AjhXsxroQuNaOqw3hd2zLjhzMsDjtlx131rbs T/oeahJFJa9EmFNgJVWCBUNmTrhFZcn40LDIfTeRKuoXPJjfCm+Pwiuk1I7+9VLtIG28 zDeA== X-Gm-Message-State: AC+VfDz6ijJOWh/VvXzG3ZvqYs4aaM3ck6fe85YeM2DLJngmNmii8BEz iuLmi6CIN6jNQqHH+M55+4q/B9kIImka 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> Precedence: bulk X-Mailing-List: bpf@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: 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 X-Spam-Status: No, score=-9.6 required=5.0 tests=BAYES_00,DKIMWL_WL_MED, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,RCVD_IN_DNSWL_NONE, SPF_HELO_NONE,SPF_PASS,T_SCC_BODY_TEXT_LINE,USER_IN_DEF_DKIM_WL autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net 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; __evlist__for_each_entry(list, evsel) { - if (!evsel->name) + if (!evsel->name) { evsel->name = strdup(name); + if (!evsel->name) + return -ENOMEM; + } } 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; } $$ = $2; } From patchwork Tue Jun 27 04:34:52 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ian Rogers X-Patchwork-Id: 13293997 Received: from lindbergh.monkeyblade.net (lindbergh.monkeyblade.net [23.128.96.19]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 150861FB3 for ; Tue, 27 Jun 2023 04:35:36 +0000 (UTC) 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 76EAE1991 for ; Mon, 26 Jun 2023 21:35:34 -0700 (PDT) Received: by mail-yb1-xb4a.google.com with SMTP id 3f1490d57ef6-bfae0f532e4so5228763276.2 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=L+wfTzFxuMAbn5PI8Mt96P8hCGVfrHe2KrYL0UqHJwQOOMvUuQw0m9jJo9eRNlxLkQ GKB+Tj48rvs9t4LGOaKAkGKw1/62mg6xDfTZ+l3t82vRo3yCz88GS+5KxK01jWKB9tOk DyZTJk8uz00n108bcYLxrC3P9c2O4kqFTCtoVwmOwsCCxyIYibiM0aUg1UORodvBs1zQ 4a1oSZNcdKnEia9wovM1dTgudeh4tjBErhPkUqH49xqVwJwRshFMLitW2usRbAv+KF9V aUoVP6Bx4D1QkfS+sZhTpOEzVoK/P0BcEQCuMu5WwpjfTTJgyiIEXEdDg7gyDN+fTupW j2SQ== X-Gm-Message-State: AC+VfDw/QBjDxBqo+3v0sg2Hb04baQgzlPoxjiL1TOSHGbsSkiDlIN9n o4lFWjDzRgdEgklc0at8jSD9GWbrFGCZ 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> Precedence: bulk X-Mailing-List: bpf@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: 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 X-Spam-Status: No, score=-9.6 required=5.0 tests=BAYES_00,DKIMWL_WL_MED, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,RCVD_IN_DNSWL_NONE, SPF_HELO_NONE,SPF_PASS,T_SCC_BODY_TEXT_LINE,USER_IN_DEF_DKIM_WL autolearn=unavailable autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net 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 = _parse_state; - struct parse_events_error *error = parse_state->error; struct list_head *list = NULL, *orig_terms = NULL, *terms= NULL; + struct parse_events_error *error = parse_state->error; char *pattern = NULL; -#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) - if (parse_events_copy_term_list($2, &orig_terms)) - CLEANUP_YYABORT; - if (error) error->idx = @1.first_column; + if (parse_events_copy_term_list($2, &orig_terms)) { + CLEANUP; + YYNOMEM; + } + list = 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=*/false)) { struct perf_pmu *pmu = NULL; int ok = 0; /* 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; + } while ((pmu = perf_pmus__scan(pmu)) != NULL) { char *name = pmu->name; @@ -328,8 +333,10 @@ PE_NAME opt_pmu_config !perf_pmu__match(pattern, pmu->alias_name, $1)) { bool auto_merge_stats = perf_pmu__auto_merge_stats(pmu); - 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 = !parse_events_multi_pmu_add(parse_state, $1, $2, &list); $2 = NULL; } - if (!ok) - CLEANUP_YYABORT; + if (!ok) { + CLEANUP; + YYABORT; + } } - parse_events_terms__delete($2); - parse_events_terms__delete(orig_terms); - free(pattern); - free($1); $$ = list; -#undef CLEANUP_YYABORT + list = NULL; + CLEANUP; +#undef CLEANUP } | PE_NAME sep_dc From patchwork Tue Jun 27 04:34:53 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ian Rogers X-Patchwork-Id: 13293998 Received: from lindbergh.monkeyblade.net (lindbergh.monkeyblade.net [23.128.96.19]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 719C810F8 for ; Tue, 27 Jun 2023 04:35:38 +0000 (UTC) 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 AE6A219B0 for ; Mon, 26 Jun 2023 21:35:36 -0700 (PDT) Received: by mail-yw1-x114a.google.com with SMTP id 00721157ae682-5707177ff8aso50724937b3.2 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=cwFH4XIaCDJrrATPMGagTQKyXPFbH/qVinrva15Vcvs/88/AEVe4lF42Ff+g4J9E1q kpA23qeRIif8keOeQTwDkyyesPtwEI4h4SR+P1OLBMzVRUwYBcEF6BVVsqC57Q30FIpS MYcAKw+oJw98+dvWdpEcEXQBXNg6+WE1pilmvBBWLdPzxOhUbBtjuRpPtGL9fE0bt9Wl fDUBnQRg4gLzkGq0NyUJ9U0ZjM+Th0wp3cLVBkbirAyfNj37OelAGWSyN68plfbLUb1v pTfwBUpgEkVypTMj1DqvwJ0Bu/mwejqcvwWsBSyiTnk/PUiCRtk2z/psytrTMADJhn8/ 4ENg== X-Gm-Message-State: AC+VfDwAIc1Eb2+QFNrWuzYkEFo+HS0PQ2ba09TLfLH5IAEKSzc7mSoT fqwSyVhjo4xyWzm144gdMYAbF+lQOUp1 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> Precedence: bulk X-Mailing-List: bpf@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: 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 X-Spam-Status: No, score=-9.6 required=5.0 tests=BAYES_00,DKIMWL_WL_MED, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,RCVD_IN_DNSWL_NONE, SPF_HELO_NONE,SPF_PASS,T_SCC_BODY_TEXT_LINE,USER_IN_DEF_DKIM_WL autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net 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 = (type == PERF_TYPE_HARDWARE || type == PERF_TYPE_HW_CACHE); list = alloc_list(); - ABORT_ON(!list); + if (!list) + YYNOMEM; err = parse_events_add_numeric(_parse_state, list, type, config, $3, wildcard); parse_events_terms__delete($3); if (err) { @@ -408,7 +409,8 @@ value_sym sep_slash_slash_dc bool wildcard = (type == PERF_TYPE_HARDWARE || type == PERF_TYPE_HW_CACHE); list = alloc_list(); - ABORT_ON(!list); + if (!list) + YYNOMEM; ABORT_ON(parse_events_add_numeric(_parse_state, list, type, config, /*head_config=*/NULL, wildcard)); $$ = list; @@ -419,7 +421,8 @@ PE_VALUE_SYM_TOOL sep_slash_slash_dc struct list_head *list; list = alloc_list(); - ABORT_ON(!list); + if (!list) + YYNOMEM; ABORT_ON(parse_events_add_tool(_parse_state, list, $1)); $$ = list; } @@ -432,7 +435,9 @@ PE_LEGACY_CACHE opt_event_config int err; list = alloc_list(); - ABORT_ON(!list); + if (!list) + YYNOMEM; + err = parse_events_add_cache(list, &parse_state->idx, $1, parse_state, $2); 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; list = alloc_list(); - ABORT_ON(!list); + if (!list) + YYNOMEM; + err = 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_config int err; list = alloc_list(); - ABORT_ON(!list); + if (!list) + YYNOMEM; + err = 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_event_config int err; list = alloc_list(); - ABORT_ON(!list); + if (!list) + YYNOMEM; + err = 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; list = alloc_list(); - ABORT_ON(!list); + if (!list) + YYNOMEM; err = 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; list = alloc_list(); - ABORT_ON(!list); + if (!list) + YYNOMEM; if (error) error->idx = @1.first_column; @@ -556,7 +569,8 @@ PE_VALUE ':' PE_VALUE opt_event_config int err; list = alloc_list(); - ABORT_ON(!list); + if (!list) + YYNOMEM; err = parse_events_add_numeric(_parse_state, list, (u32)$1, $3, $4, /*wildcard=*/false); parse_events_terms__delete($4); @@ -575,7 +589,8 @@ PE_RAW opt_event_config u64 num; list = alloc_list(); - ABORT_ON(!list); + if (!list) + YYNOMEM; errno = 0; num = strtoull($1 + 1, NULL, 16); ABORT_ON(errno); @@ -598,7 +613,8 @@ PE_BPF_OBJECT opt_event_config int err; list = alloc_list(); - ABORT_ON(!list); + if (!list) + YYNOMEM; err = 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; list = alloc_list(); - ABORT_ON(!list); + if (!list) + YYNOMEM; err = 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 = malloc(sizeof(*head)); struct parse_events_term *term = $1; - ABORT_ON(!head); + if (!head) + YYNOMEM; INIT_LIST_HEAD(head); list_add_tail(&term->list, head); $$ = head; @@ -857,7 +875,8 @@ PE_DRV_CFG_TERM struct parse_events_term *term; char *config = strdup($1); - 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 = 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 array.nr_ranges = 1; array.ranges = malloc(sizeof(array.ranges[0])); - ABORT_ON(!array.ranges); + if (!array.ranges) + YYNOMEM; array.ranges[0].start = $1; array.ranges[0].length = 1; $$ = array; @@ -917,7 +938,8 @@ PE_VALUE PE_ARRAY_RANGE PE_VALUE ABORT_ON($3 < $1); array.nr_ranges = 1; array.ranges = malloc(sizeof(array.ranges[0])); - ABORT_ON(!array.ranges); + if (!array.ranges) + YYNOMEM; array.ranges[0].start = $1; array.ranges[0].length = $3 - $1 + 1; $$ = array; From patchwork Tue Jun 27 04:34:54 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ian Rogers X-Patchwork-Id: 13293999 Received: from lindbergh.monkeyblade.net (lindbergh.monkeyblade.net [23.128.96.19]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 77F6123D4 for ; Tue, 27 Jun 2023 04:35:41 +0000 (UTC) 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 E209919B0 for ; Mon, 26 Jun 2023 21:35:38 -0700 (PDT) Received: by mail-yw1-x1149.google.com with SMTP id 00721157ae682-57325434999so56543327b3.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=Tv7nX9So0RGhbvI+SayjT5LXyL2w+y6ssGkraO8BlSTM0dE9nbgATDxMQXfAXMVcdo lL0togT3RJXzovHVQGPM07vs0+RNLfW/g1pk/9MqeWhskV1vGz0x4IW4AYwmxLdJXOaA HVnM7EYlNyiEEPHwM62FcQscWHdbm9S7aOvmZEi5qUmCSuu2F+Z50Z/6p7xuqXwlGtfQ q5TiS0rBYZWytyAS6hDLr0sX3/Xptya9f8Bq+oYN6AOzZQZcKjvk9ElaCfoZp4bN2E7A caqSwzHRxefwcNEytS3ElC1TslZMfj6BGXbGfjrlfQQxcslheYFA3ps7aZL9Mkct1bi1 UjhQ== X-Gm-Message-State: AC+VfDz4Qa+iw50B0MkAumCs9jeeEGlMIl9uYh9vZT+jEJX7SL32PdHm 6C5EOz9Y4FYOKSAGl0xELdEriuAy5WDz 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> Precedence: bulk X-Mailing-List: bpf@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: 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 X-Spam-Status: No, score=-9.6 required=5.0 tests=BAYES_00,DKIMWL_WL_MED, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,RCVD_IN_DNSWL_NONE, SPF_HELO_NONE,SPF_PASS,T_SCC_BODY_TEXT_LINE,USER_IN_DEF_DKIM_WL autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net 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) +#define PE_ABORT(val) \ +do { \ + if (val == -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 = parse_events_multi_pmu_add(_parse_state, $1, NULL, &list); free($1); if (err < 0) - YYABORT; + PE_ABORT(err); $$ = list; } @@ -396,7 +403,7 @@ value_sym '/' event_config '/' parse_events_terms__delete($3); if (err) { free_list_evsel(list); - YYABORT; + PE_ABORT(err); } $$ = list; } @@ -407,23 +414,28 @@ value_sym sep_slash_slash_dc int type = $1 >> 16; int config = $1 & 255; bool wildcard = (type == PERF_TYPE_HARDWARE || type == PERF_TYPE_HW_CACHE); + int err; list = alloc_list(); if (!list) YYNOMEM; - ABORT_ON(parse_events_add_numeric(_parse_state, list, type, config, - /*head_config=*/NULL, wildcard)); + err = parse_events_add_numeric(_parse_state, list, type, config, /*head_config=*/NULL, wildcard); + if (err) + PE_ABORT(err); $$ = list; } | PE_VALUE_SYM_TOOL sep_slash_slash_dc { struct list_head *list; + int err; list = alloc_list(); if (!list) YYNOMEM; - ABORT_ON(parse_events_add_tool(_parse_state, list, $1)); + err = parse_events_add_tool(_parse_state, list, $1); + if (err) + YYNOMEM; $$ = list; } @@ -444,7 +456,7 @@ PE_LEGACY_CACHE opt_event_config free($1); if (err) { free_list_evsel(list); - YYABORT; + PE_ABORT(err); } $$ = 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); } $$ = list; } @@ -484,7 +496,7 @@ PE_PREFIX_MEM PE_VALUE PE_BP_SLASH PE_VALUE opt_event_config parse_events_terms__delete($5); if (err) { free(list); - YYABORT; + PE_ABORT(err); } $$ = list; } @@ -504,7 +516,7 @@ PE_PREFIX_MEM PE_VALUE PE_BP_COLON PE_MODIFIER_BP opt_event_config free($4); if (err) { free(list); - YYABORT; + PE_ABORT(err); } $$ = 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); } $$ = list; } @@ -549,7 +561,7 @@ tracepoint_name opt_event_config free($1.event); if (err) { free(list); - YYABORT; + PE_ABORT(err); } $$ = 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); } $$ = list; } @@ -600,7 +612,7 @@ PE_RAW opt_event_config parse_events_terms__delete($2); if (err) { free(list); - YYABORT; + PE_ABORT(err); } $$ = list; } @@ -620,7 +632,7 @@ PE_BPF_OBJECT opt_event_config free($1); if (err) { free(list); - YYABORT; + PE_ABORT(err); } $$ = list; } @@ -637,7 +649,7 @@ PE_BPF_SOURCE opt_event_config parse_events_terms__delete($2); if (err) { free(list); - YYABORT; + PE_ABORT(err); } $$ = list; } @@ -712,11 +724,12 @@ event_term: PE_RAW { struct parse_events_term *term; + int err = parse_events_term__str(&term, PARSE_EVENTS__TERM_TYPE_RAW, + strdup("raw"), $1, &@1, &@1); - if (parse_events_term__str(&term, PARSE_EVENTS__TERM_TYPE_RAW, - strdup("raw"), $1, &@1, &@1)) { + if (err) { free($1); - YYABORT; + PE_ABORT(err); } $$ = term; } @@ -724,12 +737,12 @@ PE_RAW name_or_raw '=' name_or_legacy { struct parse_events_term *term; + int err = parse_events_term__str(&term, PARSE_EVENTS__TERM_TYPE_USER, $1, $3, &@1, &@3); - 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); } $$ = term; } @@ -737,11 +750,12 @@ name_or_raw '=' name_or_legacy name_or_raw '=' PE_VALUE { struct parse_events_term *term; + int err = parse_events_term__num(&term, PARSE_EVENTS__TERM_TYPE_USER, + $1, $3, false, &@1, &@3); - if (parse_events_term__num(&term, PARSE_EVENTS__TERM_TYPE_USER, - $1, $3, false, &@1, &@3)) { + if (err) { free($1); - YYABORT; + PE_ABORT(err); } $$ = term; } @@ -749,12 +763,13 @@ name_or_raw '=' PE_VALUE name_or_raw '=' PE_TERM_HW { struct parse_events_term *term; + int err = parse_events_term__str(&term, PARSE_EVENTS__TERM_TYPE_USER, + $1, $3.str, &@1, &@3); - 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); } $$ = term; } @@ -762,11 +777,12 @@ name_or_raw '=' PE_TERM_HW PE_LEGACY_CACHE { struct parse_events_term *term; + int err = parse_events_term__num(&term, PARSE_EVENTS__TERM_TYPE_LEGACY_CACHE, + $1, 1, true, &@1, NULL); - 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); } $$ = term; } @@ -774,11 +790,12 @@ PE_LEGACY_CACHE PE_NAME { struct parse_events_term *term; + int err = parse_events_term__num(&term, PARSE_EVENTS__TERM_TYPE_USER, + $1, 1, true, &@1, NULL); - if (parse_events_term__num(&term, PARSE_EVENTS__TERM_TYPE_USER, - $1, 1, true, &@1, NULL)) { + if (err) { free($1); - YYABORT; + PE_ABORT(err); } $$ = term; } @@ -786,11 +803,12 @@ PE_NAME PE_TERM_HW { struct parse_events_term *term; + int err = parse_events_term__num(&term, PARSE_EVENTS__TERM_TYPE_HARDWARE, + $1.str, $1.num & 255, false, &@1, NULL); - 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); } $$ = term; } @@ -798,10 +816,11 @@ PE_TERM_HW PE_TERM '=' name_or_legacy { struct parse_events_term *term; + int err = parse_events_term__str(&term, (int)$1, NULL, $3, &@1, &@3); - if (parse_events_term__str(&term, (int)$1, NULL, $3, &@1, &@3)) { + if (err) { free($3); - YYABORT; + PE_ABORT(err); } $$ = term; } @@ -809,10 +828,11 @@ PE_TERM '=' name_or_legacy PE_TERM '=' PE_TERM_HW { struct parse_events_term *term; + int err = parse_events_term__str(&term, (int)$1, NULL, $3.str, &@1, &@3); - if (parse_events_term__str(&term, (int)$1, NULL, $3.str, &@1, &@3)) { + if (err) { free($3.str); - YYABORT; + PE_ABORT(err); } $$ = term; } @@ -820,37 +840,46 @@ PE_TERM '=' PE_TERM_HW PE_TERM '=' PE_TERM { struct parse_events_term *term; + int err = parse_events_term__term(&term, (int)$1, (int)$3, &@1, &@3); + + if (err) + PE_ABORT(err); - ABORT_ON(parse_events_term__term(&term, (int)$1, (int)$3, &@1, &@3)); $$ = term; } | PE_TERM '=' PE_VALUE { struct parse_events_term *term; + int err = parse_events_term__num(&term, (int)$1, NULL, $3, false, &@1, &@3); + + if (err) + PE_ABORT(err); - ABORT_ON(parse_events_term__num(&term, (int)$1, NULL, $3, false, &@1, &@3)); $$ = term; } | PE_TERM { struct parse_events_term *term; + int err = parse_events_term__num(&term, (int)$1, NULL, 1, true, &@1, NULL); + + if (err) + PE_ABORT(err); - ABORT_ON(parse_events_term__num(&term, (int)$1, NULL, 1, true, &@1, NULL)); $$ = term; } | name_or_raw array '=' name_or_legacy { struct parse_events_term *term; + int err = parse_events_term__str(&term, PARSE_EVENTS__TERM_TYPE_USER, $1, $4, &@1, &@4); - 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 = $2; $$ = term; @@ -859,12 +888,12 @@ name_or_raw array '=' name_or_legacy name_or_raw array '=' PE_VALUE { struct parse_events_term *term; + int err = parse_events_term__num(&term, PARSE_EVENTS__TERM_TYPE_USER, $1, $4, false, &@1, &@4); - 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 = $2; $$ = term; @@ -874,14 +903,15 @@ PE_DRV_CFG_TERM { struct parse_events_term *term; char *config = strdup($1); + int err; if (!config) YYNOMEM; - if (parse_events_term__str(&term, PARSE_EVENTS__TERM_TYPE_DRV_CFG, - config, $1, &@1, NULL)) { + err = parse_events_term__str(&term, PARSE_EVENTS__TERM_TYPE_DRV_CFG, config, $1, &@1, NULL); + if (err) { free($1); free(config); - YYABORT; + PE_ABORT(err); } $$ = term; } From patchwork Tue Jun 27 04:34:55 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ian Rogers X-Patchwork-Id: 13294000 Received: from lindbergh.monkeyblade.net (lindbergh.monkeyblade.net [23.128.96.19]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 87591291C for ; Tue, 27 Jun 2023 04:35:43 +0000 (UTC) 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 208BC1BF8 for ; Mon, 26 Jun 2023 21:35:41 -0700 (PDT) Received: by mail-yw1-x114a.google.com with SMTP id 00721157ae682-5706641dda9so54534527b3.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=PSqUSGM2fGm9XjzFmtf+PX655Lmba/BJiCMbj/FB97xYLmEDS/YgfHfHNWKC6L/fs9 geMeAV+BsHkHWEr+KanY4Tqi/xJpXcpLtBo2pjwfxZ4xqeh394vYo9wO0O0Lpttna3DS MRGiYTZKTzVcBX2PTGpsgAOYy3feB64rjPMsr/QRD9df/FHFybvqg8tImxj6EaUtayrj C7bjuOsrzODzV85FM/1GE4adIxAa+42JTL343pWe3SLL1GVld/PFYNL1d1JeymolSSyi wTgTZpgXc0jjZ4bqnSF5tT0WTYw/rbWiBpFmJBshh0ugvFRftPmSbAvsazUz4SLL6SwO DVjg== X-Gm-Message-State: AC+VfDzeCx2A9brg9T2swg5rj9ZU5ijA9JEvxEBZilMjFLTfoFy78ACf bQN/FP/CUYWzgqTcAjkRVlp3UDhVlkGg 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> Precedence: bulk X-Mailing-List: bpf@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: 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 X-Spam-Status: No, score=-9.6 required=5.0 tests=BAYES_00,DKIMWL_WL_MED, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,RCVD_IN_DNSWL_NONE, SPF_HELO_NONE,SPF_PASS,T_SCC_BODY_TEXT_LINE,USER_IN_DEF_DKIM_WL autolearn=unavailable autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net 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 = _parse_state; struct list_head *list = NULL, *orig_terms = NULL, *terms= NULL; - struct parse_events_error *error = parse_state->error; char *pattern = NULL; #define CLEANUP \ @@ -303,9 +302,6 @@ PE_NAME opt_pmu_config free(pattern); \ } while(0) - if (error) - error->idx = @1.first_column; - if (parse_events_copy_term_list($2, &orig_terms)) { CLEANUP; YYNOMEM; @@ -360,6 +356,14 @@ PE_NAME opt_pmu_config $2 = NULL; } if (!ok) { + struct parse_events_error *error = parse_state->error; + char *help; + + if (asprintf(&help, "Unabled to find PMU or event on a PMU of '%s'", $1) < 0) + help = 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; err = parse_events_multi_pmu_add(_parse_state, $1, NULL, &list); - free($1); - if (err < 0) + if (err < 0) { + struct parse_events_state *parse_state = _parse_state; + struct parse_events_error *error = parse_state->error; + char *help; + + if (asprintf(&help, "Unabled to find PMU or event on a PMU of '%s'", $1) < 0) + help = NULL; + parse_events_error__handle(error, @1.first_column, strdup("Bad event name"), help); + free($1); PE_ABORT(err); + } + free($1); $$ = list; } From patchwork Tue Jun 27 04:34:56 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ian Rogers X-Patchwork-Id: 13294001 Received: from lindbergh.monkeyblade.net (lindbergh.monkeyblade.net [23.128.96.19]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 621FF110C for ; Tue, 27 Jun 2023 04:35:48 +0000 (UTC) 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 78AA01FCA for ; Mon, 26 Jun 2023 21:35:43 -0700 (PDT) Received: by mail-yb1-xb49.google.com with SMTP id 3f1490d57ef6-c005a8ca4d9so5575716276.3 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=EFVkqw4zeCDwjVLcFB0Aj5aGG7UYnkwABrLcs4HfU/NIOwx3NBkFP7Mb6/aPWUlwzg zgsjEniGYXfDnr+9wyp6lhiqIrHASdAiW8MJ7zdadGzv+b5bnXct8q8FEe7wJnMA/1GY l4oeuDyR8HlE09B3ZxWMaysURZTvqzis2Hok9dEg/xPugWIXTzabJGNVt2KfEzohHMgt qiEKUphLHUB4pF/TMZi+lvVfNnXNEZE5KHwkzoaXtc3noHGUEzHi+9bJrRrSxe8gD1BT iV5OgAOSTMPPlcmI6CVNHUHaowSke1pj4UqzSqRwHBv0bbT8H8sHgybzl5QFyD/KXl5e QfQA== X-Gm-Message-State: AC+VfDy5wkN1TnRISYtvWLoNc4uDOh1g5hDEUFdx5WK/mFUXcs699JmQ 8FfpcBZPPUWzp/eH6T3P9MhprM+5JxCt 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> Precedence: bulk X-Mailing-List: bpf@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: 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 X-Spam-Status: No, score=-9.6 required=5.0 tests=BAYES_00,DKIMWL_WL_MED, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,RCVD_IN_DNSWL_NONE, SPF_HELO_NONE,SPF_PASS,T_SCC_BODY_TEXT_LINE,USER_IN_DEF_DKIM_WL autolearn=unavailable autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net 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 = &parse_error; INIT_LIST_HEAD(&parse_state.list); - err = parse_events_load_bpf_obj(&parse_state, &parse_state.list, obj, NULL); + err = parse_events_load_bpf_obj(&parse_state, &parse_state.list, obj, NULL, NULL); parse_events_error__exit(&parse_error); if (err == -ENODATA) { pr_debug("Failed to add events selected by BPF, debuginfo package not installed\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, #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_error *e, int err, } 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)); } 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 = loc_; struct evsel *evsel = evsel__newtp_idx(sys_name, evt_name, (*idx)++); 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_column); return PTR_ERR(evsel); } @@ -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_head *list, int *idx, evt_path = 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 = 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; } @@ -588,11 +589,11 @@ static int add_tracepoint_multi_event(struct list_head *list, int *idx, found++; ret = add_tracepoint(list, idx, sys_name, evt_ent->d_name, - err, head_config); + err, head_config, loc); } if (!found) { - tracepoint_error(err, ENOENT, sys_name, evt_name); + tracepoint_error(err, ENOENT, sys_name, evt_name, loc->first_column); ret = -1; } @@ -604,19 +605,19 @@ static int add_tracepoint_multi_event(struct list_head *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); } 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 *list, int *idx, events_dir = 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; } @@ -640,7 +641,7 @@ static int add_tracepoint_multi_sys(struct list_head *list, int *idx, continue; ret = add_tracepoint_event(list, idx, events_ent->d_name, - evt_name, err, head_config); + evt_name, err, head_config, loc); } 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; }; static int add_bpf_event(const char *group, const char *event, int fd, struct bpf_object *obj, @@ -679,7 +681,7 @@ static int add_bpf_event(const char *group, const char *event, int fd, struct bp err = 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; @@ -706,12 +708,14 @@ static int add_bpf_event(const char *group, const char *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 = {parse_state, list, head_config}; + struct __add_bpf_event_param param = {parse_state, list, head_config, loc}; static bool registered_unprobe_atexit = false; + YYLTYPE test_loc = {.first_column = -1}; 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; } + if (!param.loc) + param.loc = &test_loc; + err = 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, 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 = loc_; 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)); - 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; } - err = parse_events_load_bpf_obj(parse_state, list, obj, head_config); + err = parse_events_load_bpf_obj(parse_state, list, obj, head_config, loc); if (err) return err; err = parse_events_config_bpf(parse_state, obj, &obj_head_config); @@ -885,9 +894,12 @@ int parse_events_load_bpf(struct parse_events_state *parse_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 = 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 *parse_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 = 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, struct 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 *list, int *idx, 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 char *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 = @1.first_column; err = parse_events_add_tracepoint(list, &parse_state->idx, $1.sys, $1.event, - error, $2); + error, $2, &@1); parse_events_terms__delete($2); free($1.sys); @@ -640,7 +640,7 @@ PE_BPF_OBJECT opt_event_config list = alloc_list(); if (!list) YYNOMEM; - err = parse_events_load_bpf(parse_state, list, $1, false, $2); + err = 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 = alloc_list(); if (!list) YYNOMEM; - err = parse_events_load_bpf(_parse_state, list, $1, true, $2); + err = parse_events_load_bpf(_parse_state, list, $1, true, $2, &@1); parse_events_terms__delete($2); if (err) { free(list); From patchwork Tue Jun 27 04:34:57 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ian Rogers X-Patchwork-Id: 13294002 Received: from lindbergh.monkeyblade.net (lindbergh.monkeyblade.net [23.128.96.19]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 82B894A23 for ; Tue, 27 Jun 2023 04:35:50 +0000 (UTC) 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 E2DE82108 for ; Mon, 26 Jun 2023 21:35:45 -0700 (PDT) Received: by mail-yw1-x1149.google.com with SMTP id 00721157ae682-56942442eb0so52811657b3.1 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=Xtln+q743jMIuIQoIu1U3QW70LLL5ZxYsQ80ljJ3xKhKyj34IRgdI79MpcsVLwXvGU 8sJ2HemIsmc0LVgSj24Cfuoa6BhtxczxFcTRwAKV/BMx285ai1Bx0fePRO3y4kKL8+qA bH3MubOsvvTkWYKAkc4pkoduosw1xNyQfBgN9vHsPNh9CeL3VFdtc9WxVzm1Nq0cJ5Bl a7olfPCeX6Dqe0uC5VtRZsqql9+Bll15zv76cdX/BRi3rwa928BNOiSjZpZLuNDWEMjA hIpCmammCdV4xWmzQ1MLvmK6b5ixQ9ugnug/hvQWe/k71bt0keJbQJ5VraKP8trKjaFW ID7g== X-Gm-Message-State: AC+VfDyD25PSnYXqH7d8cqSZO+Z4nX7bLTF4HJnXm5W98C609UBTRCs5 ChcP1XbFRYhGcgPk5OBH4TeVP96YHlg2 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> Precedence: bulk X-Mailing-List: bpf@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: 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 X-Spam-Status: No, score=-9.6 required=5.0 tests=BAYES_00,DKIMWL_WL_MED, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,RCVD_IN_DNSWL_NONE, SPF_HELO_NONE,SPF_PASS,T_SCC_BODY_TEXT_LINE,USER_IN_DEF_DKIM_WL autolearn=unavailable autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net 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 *config_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 = parse_state->error; + YYLTYPE *loc = loc_; LIST_HEAD(config_terms); pmu = parse_state->fake_pmu ?: perf_pmus__find(name); @@ -1596,7 +1597,7 @@ int parse_events_add_pmu(struct parse_events_state *parse_state, if (asprintf(&err_str, "Cannot find PMU `%s'. Missing kernel support?", name) >= 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, 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 = NULL; struct list_head *orig_head = NULL; struct perf_pmu *pmu = NULL; + YYLTYPE *loc = loc_; int ok = 0; char *config; @@ -1734,7 +1736,7 @@ int parse_events_multi_pmu_add(struct parse_events_state *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 = true; @@ -1747,7 +1749,7 @@ int parse_events_multi_pmu_add(struct parse_events_state *parse_state, if (parse_state->fake_pmu) { if (!parse_events_add_pmu(parse_state, list, str, head, - /*auto_merge_stats=*/true)) { + /*auto_merge_stats=*/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_state *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); struct evsel *parse_events__add_event(int idx, struct perf_event_attr *attr, const char *name, const char *metric_id, @@ -211,7 +211,7 @@ struct evsel *parse_events__add_event(int idx, struct perf_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); 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=*/false)) { + if (parse_events_add_pmu(parse_state, list, $1, $2, /*auto_merge_stats=*/false, &@1)) { struct perf_pmu *pmu = NULL; int ok = 0; @@ -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 = true; } @@ -352,7 +352,7 @@ PE_NAME opt_pmu_config if (!ok) { /* Failure to add, assume $1 is an event name. */ zfree(&list); - ok = !parse_events_multi_pmu_add(parse_state, $1, $2, &list); + ok = !parse_events_multi_pmu_add(parse_state, $1, $2, &list, &@1); $2 = NULL; } if (!ok) { @@ -379,7 +379,7 @@ PE_NAME sep_dc struct list_head *list; int err; - err = parse_events_multi_pmu_add(_parse_state, $1, NULL, &list); + err = parse_events_multi_pmu_add(_parse_state, $1, NULL, &list, &@1); if (err < 0) { struct parse_events_state *parse_state = _parse_state; struct parse_events_error *error = parse_state->error; From patchwork Tue Jun 27 04:34:58 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ian Rogers X-Patchwork-Id: 13294003 Received: from lindbergh.monkeyblade.net (lindbergh.monkeyblade.net [23.128.96.19]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 15FD44A23 for ; Tue, 27 Jun 2023 04:35:53 +0000 (UTC) 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 DAB342139 for ; Mon, 26 Jun 2023 21:35:47 -0700 (PDT) Received: by mail-yw1-x114a.google.com with SMTP id 00721157ae682-564fb1018bcso58081777b3.0 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=bVGo44KT3SVUy8uwrid/++jXtaQLEOS6oJgegj4fwsuobYA+Xzow/DAR7WlQedA4aC KhuPspA25qkaynz+ZL4LQdUDh8R/ITosHygHZCm2z2Gc8QJ7mpCFGT5J3+JGJrYUv8dI knDwJD2pBk7oL0adLiB+/D3ZOjjjeKybaF2Djk4wIf6krOEJ2qAOhFz8/6WJnF34BoWW DWloljx+7vwxkMafF+fCwIfBTQoOb7ueltk7SQrrE5R0u8o/T7f/ai/+Vgvip0hJ+8TT 4Qpgt322KYDLJrUwDeqSV4FDYWpR4cqywcqb18sLNE0FpVDJMKOGhks/Mr99cc+4mejr NCBg== X-Gm-Message-State: AC+VfDwMFSKtnhVOK5xvFBYxOgToc/UyfEgjidkAJ2X9JQYOoA6Rj1aN E+IlqJvJXZhwW+UoPF8Cc4rIcydZJSB8 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> Precedence: bulk X-Mailing-List: bpf@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: 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 X-Spam-Status: No, score=-9.6 required=5.0 tests=BAYES_00,DKIMWL_WL_MED, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,RCVD_IN_DNSWL_NONE, SPF_HELO_NONE,SPF_PASS,T_SCC_BODY_TEXT_LINE,USER_IN_DEF_DKIM_WL autolearn=unavailable autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net 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 @@ void parse_events_error(YYLTYPE *loc, void *parse_state, void *scanner, char const *msg); -#define ABORT_ON(val) \ -do { \ - if (val) \ - YYABORT; \ -} while (0) - #define PE_ABORT(val) \ do { \ if (val == -ENOMEM) \ @@ -618,7 +612,9 @@ PE_RAW opt_event_config YYNOMEM; errno = 0; num = strtoull($1 + 1, NULL, 16); - ABORT_ON(errno); + /* Given the lexer will only give [a-fA-F0-9]+ a failure here should be impossible. */ + if (errno) + YYABORT; free($1); err = parse_events_add_numeric(_parse_state, list, PERF_TYPE_RAW, num, $2, /*wildcard=*/false); @@ -978,7 +974,17 @@ PE_VALUE PE_ARRAY_RANGE PE_VALUE { struct parse_events_array array; - ABORT_ON($3 < $1); + if ($3 < $1) { + struct parse_events_state *parse_state = _parse_state; + struct parse_events_error *error = parse_state->error; + char *err_str; + + if (asprintf(&err_str, "Expected '%ld' to be less-than '%ld'", $3, $1) < 0) + err_str = NULL; + + parse_events_error__handle(error, @1.first_column, err_str, NULL); + YYABORT; + } array.nr_ranges = 1; array.ranges = malloc(sizeof(array.ranges[0])); if (!array.ranges)