From nobody Sun Feb 8 06:00:02 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 45005EB64D9 for ; Tue, 27 Jun 2023 18:11:19 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S230082AbjF0SKx (ORCPT ); Tue, 27 Jun 2023 14:10:53 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:42456 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230113AbjF0SKr (ORCPT ); Tue, 27 Jun 2023 14:10:47 -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 A812E2D4A for ; Tue, 27 Jun 2023 11:10:44 -0700 (PDT) Received: by mail-yb1-xb4a.google.com with SMTP id 3f1490d57ef6-bff1f2780ebso5249272276.1 for ; Tue, 27 Jun 2023 11:10:44 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20221208; t=1687889444; x=1690481444; 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=mktcZKTvm+CfN0JW4AvDl8oygIn6bzPzZawPM5hdf+WJkmtuRsNrICW/opE8vUBxgd 1a/EXVix8Ulb+ogBvqfInmdkMyBRlTtNG29j5TGLMHe3TE1xBOfDz4jiLjnMpKCLQkzN Wq69og/SBsSy9Xn0T9aOYTUnKIgxmZE0C99UIvMeQUGYpvviUYa0MDmrKJXQ4a4ryyw9 sLGm/ZGKb3ivDzc4I8IidumsiP7Z/MR3f/JRGsLVgQlIUGyM40O4Ylmiw7rTYqwtmuJO KwbKhwgbNE3ZepJZRXcU3QFNm6IbDFOKa5fixWHcVATfWTzK4ngnn0zKRU0Ct59z60Fl JWyA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1687889444; x=1690481444; 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=F3SZrEM0sVuiMt/W5D5xJ1sBzW7i1DORKdn5wLfeH1QQc/ngXYHY5nVSXF8mfMsQRX NF1qIS/QT49yAT+ZRQvmHGFYT1QS78K1emP20stwOqTbMP6kXt4B03qtWjCAKPw52JhD 3B2nRaUvIRua3LZM1KqcxINavVoGrKx3h2Hxfrzukivq8KsMQSV5DFwgSUASyNWsXbOJ gctLbrn+rZQaJMC79Ry8IkPQ/2fOkhDR3Khx0lfoZ57+zUTsQp1vgsiE4qTzPW8pWnV6 WL8zA9u4O9NLIIvRMaGupHfjERPMB6Xa7RPYnM8PKoZkou4phT6uAo0SVWLlVcpdmOpE W5QA== X-Gm-Message-State: AC+VfDz7jlMJhnxdHElHnD3Wntc9hrBZwRxE7xxB2mKkb9C6QWox+PNw J+zAFYf3M3iZvORlmAW7d2B5I61RNzAk X-Google-Smtp-Source: ACHHUZ4dCuXkazspQAeZywR+p2lXLl1x/iMDL5zaSkGcydnwubuqOiZR2nx8V7EWC/UfGvGDnGGBsylcGjVi X-Received: from irogers.svl.corp.google.com ([2620:15c:2a3:200:a518:9a69:cf62:b4d9]) (user=irogers job=sendgmr) by 2002:a25:ce8e:0:b0:ba8:4ff5:4671 with SMTP id x136-20020a25ce8e000000b00ba84ff54671mr14764241ybe.9.1687889443701; Tue, 27 Jun 2023 11:10:43 -0700 (PDT) Date: Tue, 27 Jun 2023 11:10:18 -0700 In-Reply-To: <20230627181030.95608-1-irogers@google.com> Message-Id: <20230627181030.95608-2-irogers@google.com> Mime-Version: 1.0 References: <20230627181030.95608-1-irogers@google.com> X-Mailer: git-send-email 2.41.0.162.gfafddb0af9-goog Subject: [PATCH v2 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 06:00:02 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 21D66EB64DC for ; Tue, 27 Jun 2023 18:11:20 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S230271AbjF0SK5 (ORCPT ); Tue, 27 Jun 2023 14:10:57 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:42702 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230031AbjF0SKu (ORCPT ); Tue, 27 Jun 2023 14:10:50 -0400 Received: from mail-pf1-x44a.google.com (mail-pf1-x44a.google.com [IPv6:2607:f8b0:4864:20::44a]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id A2AB22976 for ; Tue, 27 Jun 2023 11:10:46 -0700 (PDT) Received: by mail-pf1-x44a.google.com with SMTP id d2e1a72fcca58-665bd7fe2f4so2067241b3a.0 for ; Tue, 27 Jun 2023 11:10:46 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20221208; t=1687889446; x=1690481446; 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=U3tszF3iEnPlISAxvRgLQh2yAsfBXVo/Q6PsnR8CoF2tEFqxSBVSBaD/G6Pm6Cajnz aQ4XGOH4k9El84pkqkaI76GE6uJ3psK5/29cFwc9AT9tJ0m8tAFK7+Xup/A2reI81n96 wPh32LcU2PSJ38NBnw3EifrTE5J7lYjzK/tvFFhsSwTOJh0hR8p061/PfLA9EeiBrAWn f3YBVRP3D9stcaMoLY8zd/yQdE/4vZRNkOGfqG4A8hU+Wzhq9+shpWzmiAmwTJntc0h3 q9sKKT8u+w0OgGX1a2RMJvyThaU3d8/esnfAlURWDJq4i0smQ24u6vUoVwrace9wRXjl oqkQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1687889446; x=1690481446; 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=l3GEr2eGDhJcm5h1Cmjjn5wYOyW0IIE4pmdtrwfhepFkUeLDgKmOW/v4Gb4WmKbnFq XSEWoEsj2VRyXc81xB3DX/eqaskhi6Fsow9ixI7Hg9MegFKjbOUMGBLvtLOLogbDf3+j 81TiGfxDlvqcHs3PHufI2bPBzb8cCvklRUNlg9kgw4vfHOJzTKdkQqQH/0MuRD4h6Pzu rFbrm7QmswfB5bRhVX4HxCCdL33HLUm5CQk/6YCl46wTx3aDy5ViQyvQOuhQThCr6ecf lMbqzG8exT8QWVpfwZrPOTsdeZ8A+MKkznXB3jh1jwHLmi1t+kkCz1uvsXh7iWI8oOvM zAGQ== X-Gm-Message-State: AC+VfDzxi/7KA4ItzWap4YJvCwYcfS5nYWb0Ajs4Mb2afglz0rkGL4NP w09dlTj+3gcEwmxgUob8c/Gh/M3G4W+J X-Google-Smtp-Source: ACHHUZ7eXpeYFLZxfraqt2sq94LXekMZYj8K3lgYRHv1M1aPEVN24PTbJvBtf5w1JuRlH1u8acu24npK7HSM X-Received: from irogers.svl.corp.google.com ([2620:15c:2a3:200:a518:9a69:cf62:b4d9]) (user=irogers job=sendgmr) by 2002:a05:6a00:1504:b0:668:7377:1fe3 with SMTP id q4-20020a056a00150400b0066873771fe3mr7745734pfu.2.1687889446028; Tue, 27 Jun 2023 11:10:46 -0700 (PDT) Date: Tue, 27 Jun 2023 11:10:19 -0700 In-Reply-To: <20230627181030.95608-1-irogers@google.com> Message-Id: <20230627181030.95608-3-irogers@google.com> Mime-Version: 1.0 References: <20230627181030.95608-1-irogers@google.com> X-Mailer: git-send-email 2.41.0.162.gfafddb0af9-goog Subject: [PATCH v2 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 06:00:02 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 44BBDC001DD for ; Tue, 27 Jun 2023 18:11:20 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S230361AbjF0SK7 (ORCPT ); Tue, 27 Jun 2023 14:10:59 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:42526 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229957AbjF0SKw (ORCPT ); Tue, 27 Jun 2023 14:10:52 -0400 Received: from mail-pg1-x54a.google.com (mail-pg1-x54a.google.com [IPv6:2607:f8b0:4864:20::54a]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id D1C5C297D for ; Tue, 27 Jun 2023 11:10:48 -0700 (PDT) Received: by mail-pg1-x54a.google.com with SMTP id 41be03b00d2f7-53fc6e58dabso2093938a12.1 for ; Tue, 27 Jun 2023 11:10:48 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20221208; t=1687889448; x=1690481448; 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=mDO2RZPnw3ueZUEgv1txbCfJHsBa5ZLGazmnDmvs1Rka9T1sryG8ukUK81nej5lSNu ORauHXjoy1ZWTbiDpbmxh/Ik0yEX7nG/6Kexgltr82+VRMVArq9QsoYWy6GTx+sXEhB3 urulGJs2wXbd8LaN7yG5ZJqtHm+FAftrzBsdkM2+8018xoe9DHQG72o2CvaG1m85vGlz 5IEf668Pba9cgBJXVY9EVU3x9C/nLzyHwbwQ9aRW7k03A7HvDUY/BXQN3+h7C74R5BUU hnFpuLkVqktQKdKBdU8mQoYsp4xWyf4aNgy7FU5a/VIu3RjDzRNmIU//UnIc4IDcJBDk CsNQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1687889448; x=1690481448; 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=FWoRxPUm3O5EZm+0VZBTXia8N+YgXuN/VfO9R7bO+dQzjfoVyFtlZwZ6y0/V2eVqZ2 9NmMN4y2+2cwcPUq9KS92sF6eXMz/WtJMtLEXeqnwpXk4WLo2OXm3TTqbNraN2T5px+Y woIru/YtN9Nor0Fmp18X1wMRwsvI9ay3asNQqoklIOZNHAbUu6SzXQ9VXfALg6HksmiJ 4J3HOt7mYU43GQ6TyNtZfKBooJMWO9pNYbqPf+oYZ36D0Caz/sBKC3Y9SOAsTQvFPvMP 1kBMH4uJa1nYmNUK1BI/NXyhHmLv2fTsHElUyMWqW2wVMLuoGX42JGq8EdWJtrjjjaXw cYtg== X-Gm-Message-State: AC+VfDynC5/ImZa/NKnrHSWUvsYgQVApcXZ4QQqF4mKQpfcYnJrRXwWp Rc5zXzy/WCVK9VPo1FgwrM9rMUNiWb17 X-Google-Smtp-Source: ACHHUZ5mB+sRufre0MS10vvaUmW/lZoKm7KiOFOjWsJZZ/Z0hFb1Aj5m0AyV+IoElXQMnCvyrcjdO2AbKUr/ X-Received: from irogers.svl.corp.google.com ([2620:15c:2a3:200:a518:9a69:cf62:b4d9]) (user=irogers job=sendgmr) by 2002:a17:90a:c695:b0:262:dc49:3bff with SMTP id n21-20020a17090ac69500b00262dc493bffmr1357157pjt.5.1687889448289; Tue, 27 Jun 2023 11:10:48 -0700 (PDT) Date: Tue, 27 Jun 2023 11:10:20 -0700 In-Reply-To: <20230627181030.95608-1-irogers@google.com> Message-Id: <20230627181030.95608-4-irogers@google.com> Mime-Version: 1.0 References: <20230627181030.95608-1-irogers@google.com> X-Mailer: git-send-email 2.41.0.162.gfafddb0af9-goog Subject: [PATCH v2 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 06:00:02 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 55899C001B3 for ; Tue, 27 Jun 2023 18:11:20 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S230447AbjF0SLD (ORCPT ); Tue, 27 Jun 2023 14:11:03 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:42698 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230115AbjF0SKx (ORCPT ); Tue, 27 Jun 2023 14:10:53 -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 7BF762D48 for ; Tue, 27 Jun 2023 11:10:51 -0700 (PDT) Received: by mail-yw1-x114a.google.com with SMTP id 00721157ae682-573d70da28fso67125877b3.3 for ; Tue, 27 Jun 2023 11:10:51 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20221208; t=1687889450; x=1690481450; 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=DwonPv3+k7d87RYPLiQHRluN8geVSL/JuBedm0iIRSSridMUKd+QRAh1UTNbrX4Rc+ 2tRuCmYb7a+HMHtj2KZX571wOPyJrGR60Dq3/+JaFxSG0GwbdlvEzEp6fxBQetHs3DJ3 yFXaBGg9M+J8lE9iiX4UNTSDmX6x5pSWn2U5u/BIDPEoK5Qg185uhmRrS8ED6F1LE5jG dabyrr6kNBhj3hMpTPKXaptlQ3c9GVv9jv0jzRjvzTvVfngEgYWKc5xQfRpm1tT/IC7W irQV1RF7wayw3JHLbxBub63u0hwGyuMWjq1Y/13neXOMviL18Rv36saBLHX/JYwsdlo6 mElg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1687889450; x=1690481450; 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=cacG/F63VuUTVssDMvxiN22x1rNUbTrVslyE7Kmev2yGp37Mbeit+eHqIHxNP/9owq 1+FDyTdDxo30DdL9BGCfd0bXxoPxb/HI5kRrKKD7VJtGe7wHWFJeVmaaB+/N0CgsnN5Y vjbSU56JL+6z+4eEa4im9NlWB7BTZ8APcLh1SJOBGFpxFNIvKgGAgu6zEbNqslTumGHf 9HwqtTAPCMIwYwO7X6EDxjSRh1u9fQdv04gE1UCm2TaUNLCpR+Nn+eAl8PUt74a+W0DR YvnM3aMNDr6RAllA5Mz6Fseha0QVyvWRR5sokVoOFZcHUkAQUbprKnnHK5SRRZVGVI80 WQkg== X-Gm-Message-State: AC+VfDzWPsOW0We9HA6evS+TYjy7Lpu9JumcUUfk+NLk/k1mJMa+3Eyh y5lghjEKRwfMd/9m4Hf2NtAp5Y8aEJyX X-Google-Smtp-Source: ACHHUZ4XYIxsTEbA4adKWxNXnm8MjJHZ+dVuNGVRGkIxnc/aVH6goL6IK/5IA70vJOxc3jszcWLIrfctyYob X-Received: from irogers.svl.corp.google.com ([2620:15c:2a3:200:a518:9a69:cf62:b4d9]) (user=irogers job=sendgmr) by 2002:a81:ae64:0:b0:573:7ae2:2684 with SMTP id g36-20020a81ae64000000b005737ae22684mr9718244ywk.4.1687889450770; Tue, 27 Jun 2023 11:10:50 -0700 (PDT) Date: Tue, 27 Jun 2023 11:10:21 -0700 In-Reply-To: <20230627181030.95608-1-irogers@google.com> Message-Id: <20230627181030.95608-5-irogers@google.com> Mime-Version: 1.0 References: <20230627181030.95608-1-irogers@google.com> X-Mailer: git-send-email 2.41.0.162.gfafddb0af9-goog Subject: [PATCH v2 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 06:00:02 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 9804AC001DE for ; Tue, 27 Jun 2023 18:11:54 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S230283AbjF0SLW (ORCPT ); Tue, 27 Jun 2023 14:11:22 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:42450 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230219AbjF0SKz (ORCPT ); Tue, 27 Jun 2023 14:10:55 -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 C2EC3297B for ; Tue, 27 Jun 2023 11:10:53 -0700 (PDT) Received: by mail-yw1-x114a.google.com with SMTP id 00721157ae682-570553a18deso67314877b3.2 for ; Tue, 27 Jun 2023 11:10:53 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20221208; t=1687889453; x=1690481453; 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=ic/uUxLDADiZsinLV836FUMBjwA4clCXnO3zJoz5EXIbi1vzujUI7YnlBalxEbY6Jr oqhuE44GRUbA4YFRItPjtnPNSZuGMpJY9cWyu337SnIqlkVYBY5tkzuNXyemUTtSYVHt cNI7pK1ELHaNon/Rt/uVBWz7LE0T5sn3ehHrsxsszZdh281296bZCIqTty4DYVCxyiCC uNP6M/icy39rmPwQ6ZT3VPDbg6zPgPf2Mb48GH+v+ZQBFpzujICXAoMqvkgqEy7yfEXc o+tAAOK4eg4U6a5bS/MlqRtXVyGY08LppDGk/vKjm904GInymr/HLFPu4RcwYJYP8A36 9bSA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1687889453; x=1690481453; 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=InIaZLAopSu6E8iPEcLcEACXGz5X8KSLlxDwg+NQIJwdeQ0uD+wxMVfN3Z2LSFEMkm SC8buVJ54Plfcv91iW65gq+z0+6HVCEI6hnrMd7KJ36r9OsnjRJpWe41QpZNSW5z3kc8 gxxyXme/5pZ7M8QYpIYSVun3oj4qa5aLS+sfQz+7Cq7darCIXARe4ox/VAU9JUXr/70J inY8nr7BJoatbviB6fuwX12mPy62ozg51TOaor3cKtjFAGPrgEzoDB8CNjMe4kzbBeio QdQz17+jyjNyyBfnVCMgBOPZgkLcOrnQiLhSYYeVOH4YR8ZrGyNWc+6beBT4A3x3aPxG cUkg== X-Gm-Message-State: AC+VfDwmsGW/LX6wKGlZ9jEEbSkuL93tmEQGmdqkSZSgMOZoEUX3ZAbN OIrWWgT94hm7jq/xPbD6IzolTGm+U+sE X-Google-Smtp-Source: ACHHUZ7WMEj53/YOTC5fQeFqG+pKB8WUM8Wqp5CfW3X6NRJuJ5eUfxUuqqXvmD68sSI7ABQ2xhJFPv4Y3STK X-Received: from irogers.svl.corp.google.com ([2620:15c:2a3:200:a518:9a69:cf62:b4d9]) (user=irogers job=sendgmr) by 2002:a81:441b:0:b0:576:b244:5a4e with SMTP id r27-20020a81441b000000b00576b2445a4emr3880646ywa.10.1687889453097; Tue, 27 Jun 2023 11:10:53 -0700 (PDT) Date: Tue, 27 Jun 2023 11:10:22 -0700 In-Reply-To: <20230627181030.95608-1-irogers@google.com> Message-Id: <20230627181030.95608-6-irogers@google.com> Mime-Version: 1.0 References: <20230627181030.95608-1-irogers@google.com> X-Mailer: git-send-email 2.41.0.162.gfafddb0af9-goog Subject: [PATCH v2 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 06:00:02 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 BF5D3C001E0 for ; Tue, 27 Jun 2023 18:11:54 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S230460AbjF0SLY (ORCPT ); Tue, 27 Jun 2023 14:11:24 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:42816 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230303AbjF0SK6 (ORCPT ); Tue, 27 Jun 2023 14:10:58 -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 5A8332733 for ; Tue, 27 Jun 2023 11:10:56 -0700 (PDT) Received: by mail-yb1-xb4a.google.com with SMTP id 3f1490d57ef6-c118efd0c3cso3972057276.0 for ; Tue, 27 Jun 2023 11:10:56 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20221208; t=1687889455; x=1690481455; 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=fJ/k7mucYzBMSvs1vvV15ie93EM0pdSvxSUdAibrdcK8Xlo3QJke/WMQV3YHip6PPd L8Cd8nJEThKRdGQ2VTW41re3ZnkIycotbObtvgaoqLFhCNpiEFkiQeN6l4fYZ7prWdt8 uV5Shhvouyj7E1gCloG+G40JhxYFGkEvI2ecrkyEtmkLXzoh1msQmywG5djMLzyl75C7 /Ru0IM92CtF1HiniTaMAMp+6bztbSXOudj3AHphKfyuYYcYl2qIEmt4G88gKrzzlHNTS 6DbTTYUpAslWcs3bdKbSUEId2GOodNlFw954jDc501bIdNf44FhQG39rCNeLO/V14Gd3 NeOw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1687889455; x=1690481455; 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=VMpt2c36G6AwwDmJUugQ+hTkoKI0ECo40V8pelgYEHEJzbDgnHd7cSQpwix7i474Ev DvTFSr9AwTYWdRAyUimWiAmdIORtU2LhgfHaOQiXDHNcBBoKApps1FSuo+3Vci0AHhXS e3ctVOcHcp2PHXpng3rqppJ3RrHrq06FPSYzg/gkQa6E1Bynvfuc0MD/twh0t8cBxCNJ HqYAdDE+kvamjygOgwwUl3C9fmYm4WAuCGVQoCeQPcksmydYQqs9gDQdIhbHtZclbgCA r8S/mxHQjpdMZbyp4BLg2LzxWv5xOxyHcL7jrQ90yXlLPeu9W0XTnvq65qIcuOO2fBHb /K+Q== X-Gm-Message-State: AC+VfDw2sGlASEzq7vWPXLV8X3XMcFVxDpeHRPJW6oa7kBD0mmxo0qYs YZHBxS/3TtUAj00Pu1olOIzKJr9Hc3GK X-Google-Smtp-Source: ACHHUZ7hCPGedLA3hDk85YPuzkka3hqhshJtOMTfnuxOsm7D9+OdRd8J3ECgi1iIpw1Da0GndXH8fW2VN2e5 X-Received: from irogers.svl.corp.google.com ([2620:15c:2a3:200:a518:9a69:cf62:b4d9]) (user=irogers job=sendgmr) by 2002:a25:d658:0:b0:bbb:8c13:ce26 with SMTP id n85-20020a25d658000000b00bbb8c13ce26mr15119569ybg.11.1687889455645; Tue, 27 Jun 2023 11:10:55 -0700 (PDT) Date: Tue, 27 Jun 2023 11:10:23 -0700 In-Reply-To: <20230627181030.95608-1-irogers@google.com> Message-Id: <20230627181030.95608-7-irogers@google.com> Mime-Version: 1.0 References: <20230627181030.95608-1-irogers@google.com> X-Mailer: git-send-email 2.41.0.162.gfafddb0af9-goog Subject: [PATCH v2 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 06:00:02 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 28C37C04A94 for ; Tue, 27 Jun 2023 18:11:55 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S231145AbjF0SL1 (ORCPT ); Tue, 27 Jun 2023 14:11:27 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:42816 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230349AbjF0SK7 (ORCPT ); Tue, 27 Jun 2023 14:10:59 -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 C37F11FE0 for ; Tue, 27 Jun 2023 11:10:58 -0700 (PDT) Received: by mail-yw1-x1149.google.com with SMTP id 00721157ae682-570553a18deso67315697b3.2 for ; Tue, 27 Jun 2023 11:10:58 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20221208; t=1687889458; x=1690481458; 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=zKLf44jyj+39w0a+bqNc2dgv2dREdGSzeZe+HP7YGWzKAptuBUBeZ3HLubfQN8ktPU J/hVxrzpmJEmMjxDDA9hWXUMzGcGE88LvOStfYcQ73rvV3KcYSj4TpSDt+CfNC3o/MDo K2iNVrUgK79UQZCfMhBpEczFI7xMJ2cAOvmILBvuaZruCBVWk5uTuRzPtbVK5ofATVTi q0Sr4j/plwsl+/pQMnChcyl8ujz1LD6ZCyUY6kBfmtDsM3zvtQaL7hGNpdcCriEo8EY5 Gd0m4In8QsXo2VAV5mtg9f1sdi/vJeRaLPGQ2ndAFHfF5X0FFUit8aymAZ29aNcjUIjA asDA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1687889458; x=1690481458; 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=VDTSzMoMlE5bsOI8/8CX4g/vGr1WcCESiRJRTvoA36NZFjiogWMX4w807o4woM0nxG 9zXqbRIGmPA//4kbJSLKibuv9d/Jrqp/xiPQNTMupzVa6Sju62PNNkDCcslVDFyLFN1d gUYnjj/znmLDKVF5F70CGfZkSpBDnHKqwLctOcDGXB21eIDi++yv8axle+G3QoBxRCLp 6jsGiioZKxT3x3nF0CAJ4dP3Y81jrG4CwBXCXS4yRoPu+mJftc57qUf1LxZG4wE+IFSf nX7xfbZ1airCQ62mVI17HmFACfFllxUB2ex+DKg81kf5DxeJXlwzC0190pj+51XwmIQz K0qg== X-Gm-Message-State: AC+VfDxs2WuPYZBl7p0Dx4tlsmTn64YHeKwHomMpb+rNYmE3PUfdcFfG DjiatNQHGATECEhKYfP2ZCTCh0COIv9q X-Google-Smtp-Source: ACHHUZ4uaQfEAiZp9PqQDuN7pzOeygiYoEJNc87GGRVD0DwY9bbSmv0eS8WjGE+vlBe01swDXklrQzCsdz5u X-Received: from irogers.svl.corp.google.com ([2620:15c:2a3:200:a518:9a69:cf62:b4d9]) (user=irogers job=sendgmr) by 2002:a81:b710:0:b0:565:9f59:664f with SMTP id v16-20020a81b710000000b005659f59664fmr14322906ywh.6.1687889457830; Tue, 27 Jun 2023 11:10:57 -0700 (PDT) Date: Tue, 27 Jun 2023 11:10:24 -0700 In-Reply-To: <20230627181030.95608-1-irogers@google.com> Message-Id: <20230627181030.95608-8-irogers@google.com> Mime-Version: 1.0 References: <20230627181030.95608-1-irogers@google.com> X-Mailer: git-send-email 2.41.0.162.gfafddb0af9-goog Subject: [PATCH v2 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 06:00:02 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 3849AC04FE0 for ; Tue, 27 Jun 2023 18:11:55 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S231182AbjF0SLd (ORCPT ); Tue, 27 Jun 2023 14:11:33 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:42810 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230422AbjF0SLC (ORCPT ); Tue, 27 Jun 2023 14:11:02 -0400 Received: from mail-pj1-x104a.google.com (mail-pj1-x104a.google.com [IPv6:2607:f8b0:4864:20::104a]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id C9FB8272D for ; Tue, 27 Jun 2023 11:11:00 -0700 (PDT) Received: by mail-pj1-x104a.google.com with SMTP id 98e67ed59e1d1-262d296873aso3005289a91.1 for ; Tue, 27 Jun 2023 11:11:00 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20221208; t=1687889460; x=1690481460; 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=0ZNygZs0lxf0VyG73tckJsHVw7kP/SiU1E3oTcUzSBFVSNbe0qcaje//HklLs4DBAv bRlIxrCYS8HxjMwI+SGjytdqdQ/QBHLfBYlqaAkEAYer2O5LOgs4Tr0UJon2xK/Uzme7 e+ADreOzvJIN4sFkoyd4nH9frV3OdOU9Hq0rgj20XvX7XjI/DcuVX5Al594O5NA7lNtA Wtx8+ekbGPX1rkNE+/nCEZteMkfBdRVlNqaGL8JkYTnTlKAnB/L4qEgA5Gan4qusZAXD y/Qi14vNIN4a/fdNBPGAwBpzAOF9bVpeJD38HmqcJOM5uroSA1umnUocB+V1sosp2l7/ uO0A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1687889460; x=1690481460; 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=FNN9aSJq/A1SrC9GZJhEwbr/tggOaCLuBktoPC1fVOKPAn2wWNBlrdoj2eygkEX+po 6tUNhw2OO45MAuAfZ0dbWCazg0XLWY3dhsKcxVd901Aigbwe0dMeO+y15pySHxkxwVq3 Gm9WIpjpKVvmf3m14pioNiWUOZiqxtsgH/9NSDEgpCoAAO7SWgXz+MIXAQ7tn7fJMGob 7bkMIEanKyDof+7oVfXGKx6b85N2lO7w4Q30R6GRvsssZMzZuYiLs0LgIECr3dK5c0rf JX/5fU3fS+U4n7f3A/ZRZy3UFW/0mzonItEITFwKbdaJO8sP2EFF1sZk515SZ1ccFCRZ wGCA== X-Gm-Message-State: AC+VfDwGK0egUXD0T3YNX9mZkt5wYBiRvHqffx1/JEONYAI0Wl2L/WtO JbjSxyAGulXqC++Lso593aG7n8eZxePM X-Google-Smtp-Source: ACHHUZ7f/DZwBsOCfaKozzhuBabOZxdqedJthtmzlDuzqKTXaM4W3f/+OpkcEMQAn7wCTu48wJRB73JUxIhA X-Received: from irogers.svl.corp.google.com ([2620:15c:2a3:200:a518:9a69:cf62:b4d9]) (user=irogers job=sendgmr) by 2002:a17:90b:ed6:b0:263:3437:a0b0 with SMTP id gz22-20020a17090b0ed600b002633437a0b0mr93374pjb.3.1687889460324; Tue, 27 Jun 2023 11:11:00 -0700 (PDT) Date: Tue, 27 Jun 2023 11:10:25 -0700 In-Reply-To: <20230627181030.95608-1-irogers@google.com> Message-Id: <20230627181030.95608-9-irogers@google.com> Mime-Version: 1.0 References: <20230627181030.95608-1-irogers@google.com> X-Mailer: git-send-email 2.41.0.162.gfafddb0af9-goog Subject: [PATCH v2 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 06:00:03 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 597F3C04FDF for ; Tue, 27 Jun 2023 18:11:55 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S231251AbjF0SLf (ORCPT ); Tue, 27 Jun 2023 14:11:35 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:42808 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230450AbjF0SLF (ORCPT ); Tue, 27 Jun 2023 14:11:05 -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 54A5310D7 for ; Tue, 27 Jun 2023 11:11:03 -0700 (PDT) Received: by mail-yb1-xb49.google.com with SMTP id 3f1490d57ef6-bd69ee0edacso6514869276.3 for ; Tue, 27 Jun 2023 11:11:03 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20221208; t=1687889462; x=1690481462; 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=c9gurYrQqRSFvo7zJ8m414du8P7eJ9NkSzT6aLXKB4BfMI5WawStXka9WiRq5JOw/v oWqKg0C7YBaR/KnfK3/kJLT2e5oOiWG8IJcE5OvD3w0UcHc+tQLB/MgoG3l3XRfNonyz Q6m5AUjEjI7GgkUeVjIBIdy9xOOJa2vINIxBQ71BK6X4BpMC8236R9alITgBf+5A105M eSxP1no+WzzdpjnS3uxuZlGFHkye//BZTsa6vkU1p2zsWrnznmfNncam/YJle49naEk4 FNAXi2ur3RVloIqgfmIae+74ELhIPp53/EQ66tT5z3/0JSjRef+MZQqcj82/9xG6R7h8 ZHXA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1687889462; x=1690481462; 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=em/6evp9j2IHEaExda1uMBpBOJNVUfYcjEW5BnnGwQoWi3k0vKtGkVAPOffrYjTEfP 228d7HnhYVxlU9WeNbs6cMXRbcy4QoA6aGbyI/pvnnY2RJd3snn98MPNR/SjQBFtFA3R A914/Y4/c+228pYkZy+JVKDG0Ucrotag0UJ7P95RvNY4+U4FSqivvoI//6bjn6eUK2RW bKs7rrjyFA99HBnsCH52UDXbo2QE3OgfPy5Uj9078zMPp3wh01RJt1k7AxqIsvGrZbux hh7Ymz2lW/UNH1hQaL/9apYLZNCJzOuK0WOPOZyzkursxrnEu94kD3TehOl873wauO7p L8Vw== X-Gm-Message-State: AC+VfDyiSyjYV6R6vCcPBCoGAknH6a3eCRXUH53y675Js2FQxJPDMIHO CnooZfdQUp7Uiyer+fMXzEydXt/gmyiq X-Google-Smtp-Source: ACHHUZ45eWIOcww9XvJdH9Wpn9yaGfgwtvCYiA4KW5mMlaVQdVSQEelhhiHH1vPrJCsS/CFFJGoTZsCrIf9p X-Received: from irogers.svl.corp.google.com ([2620:15c:2a3:200:a518:9a69:cf62:b4d9]) (user=irogers job=sendgmr) by 2002:a25:2144:0:b0:be4:7214:7aef with SMTP id h65-20020a252144000000b00be472147aefmr14974748ybh.10.1687889462624; Tue, 27 Jun 2023 11:11:02 -0700 (PDT) Date: Tue, 27 Jun 2023 11:10:26 -0700 In-Reply-To: <20230627181030.95608-1-irogers@google.com> Message-Id: <20230627181030.95608-10-irogers@google.com> Mime-Version: 1.0 References: <20230627181030.95608-1-irogers@google.com> X-Mailer: git-send-email 2.41.0.162.gfafddb0af9-goog Subject: [PATCH v2 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 06:00:03 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 69182C04FE1 for ; Tue, 27 Jun 2023 18:11:55 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S231326AbjF0SLi (ORCPT ); Tue, 27 Jun 2023 14:11:38 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:42908 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230468AbjF0SLH (ORCPT ); Tue, 27 Jun 2023 14:11:07 -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 D36FF2733 for ; Tue, 27 Jun 2023 11:11:05 -0700 (PDT) Received: by mail-yw1-x114a.google.com with SMTP id 00721157ae682-573d70da2dcso61561297b3.1 for ; Tue, 27 Jun 2023 11:11:05 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20221208; t=1687889465; x=1690481465; 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=aei3beb4q3x++WPIPe0QnHzZckcCFW4R3vf2GZueNTS8EH1ej5AXfNxSKeKke4OnW4 pA1YiiyKDg4RiHfInlERXtFstvo8F+W0YaAE+KQJjwrFblA/gDRz1CNUUrPC2w2JQil3 /Wra5Ojjv9MsDQI5HT4WZil3DOlquS7Yg0g4ytIrnu96YIlrFydfvyZzAezPCh/AEdFB rRhqPAkPurZjCa/Bls2FsuQpCBCe+AU4YlqrMa6qVUXBaNjbpW5dfNvPrvt+gulyeI6z hZY6zNeqiTqUAdNOa6piRZ3r0WzZRF4/9Mff9lv3m+nnFLcYoEpQVXsLvBCl3X/F32rh wojA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1687889465; x=1690481465; 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=BSFK5tT1CSR6rWpsO9+f3IHvjRAezngic7YpcaR/QkR8kb5HiEhLQm6I7XA7KwEFZc nyAtoN6eIyzGtBdtY5gK5If6L1BmkbQALJm36cMo7Xfr751E8KOi19I7GGFHbow6Ilmi 8IBqb4vJUEEZBQGCdQm/Mwry18BCALAF7GXmTaDrr1yzCFhI/4rD16QkbluPdIgU9wzM B+PCi2N9ag2nHFIbVRJlOIrCEFcXEn2WMbT9pWT8XC53O/43rpuFQaSMmWpJoo6/3ZM0 5C6HXENQe3sAJj57+Sd1SU8pifYhsjPKN052Ddh7uSfKjtfKLCjWe/w02aGSicAve9q6 vnYw== X-Gm-Message-State: AC+VfDwfG98+cDDykOspbF5fRKnEr5oEQbjJwJrO4tEsMRV4lIQYdkD2 +baiifLNPSO0vAubhlMcUhfPHubNMO4y X-Google-Smtp-Source: ACHHUZ4/a+LchMST3LH5uXgoZ0tXTL1BebqlP5Oj8R+ArkMhvomyHOWsaMi0FEXWPrdUw3IQVWMEMjhABDIT X-Received: from irogers.svl.corp.google.com ([2620:15c:2a3:200:a518:9a69:cf62:b4d9]) (user=irogers job=sendgmr) by 2002:a25:ad9f:0:b0:bce:5d6f:87a with SMTP id z31-20020a25ad9f000000b00bce5d6f087amr7873345ybi.1.1687889465014; Tue, 27 Jun 2023 11:11:05 -0700 (PDT) Date: Tue, 27 Jun 2023 11:10:27 -0700 In-Reply-To: <20230627181030.95608-1-irogers@google.com> Message-Id: <20230627181030.95608-11-irogers@google.com> Mime-Version: 1.0 References: <20230627181030.95608-1-irogers@google.com> X-Mailer: git-send-email 2.41.0.162.gfafddb0af9-goog Subject: [PATCH v2 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 06:00:03 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 86D81C04FE2 for ; Tue, 27 Jun 2023 18:11:55 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S231540AbjF0SLr (ORCPT ); Tue, 27 Jun 2023 14:11:47 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:42864 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S231158AbjF0SLL (ORCPT ); Tue, 27 Jun 2023 14:11:11 -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 2BFE22D4C for ; Tue, 27 Jun 2023 11:11:08 -0700 (PDT) Received: by mail-yw1-x1149.google.com with SMTP id 00721157ae682-573d70da2dcso61561877b3.1 for ; Tue, 27 Jun 2023 11:11:08 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20221208; t=1687889467; x=1690481467; h=to:from:subject:references:mime-version:message-id:in-reply-to:date :from:to:cc:subject:date:message-id:reply-to; bh=StcgeFnI4n9LLLvk4G7O6CbzjZValP2DfB//GyhRxDI=; b=7fT/jL8m9VFgKdPRPOi4B5qlF4mYEdel0EQFlq0HfSkH8ap+Sk7AXUq4SgGGOkq6RF vfeOeoptamRzNTV5P2QRXdwht66ZNBjz8u98EcDYBkOk5W5sk81TsFV9qyXqHoaLs5sz E5tOga4zvvyQTk4erCcpikGhS6PUt6Oc9Xd+6YmkRck6UxZYnnUgH8A4kWHHIPYokdBQ W2Gu5kN7E/p20ktY0+1JrqRVWCg926kaGSbVpEx21KKT4uQeK+YXeu6Rl2a1e1EhLoGT LmeExdSr0MympjvgYodvQf5FrL+HMOsnsKqVhELrLn+KZ5dsnyBKiaXvhd4/xD7s7Ok3 Okdg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1687889467; x=1690481467; 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=StcgeFnI4n9LLLvk4G7O6CbzjZValP2DfB//GyhRxDI=; b=eTxpnVR++c6PnMb0cfHmBqdyc+VykMCLmecUkAxlKFhTEUC91OuMzdv4FTMXdaNInm vAXQ3rzGJZU5WUtOv2k2INzsNp4ftaFRM1DouzBLpnRMkjei4yemHQYvdRzNWHf4rZLx zTaGaSkTVMsNQquQTJfZLFihvbuGqjLd3QrMKcRBXXBkGF1LB1GatseKTfPvgAaIzVuY ObsT40/D05erBeW9PgsuP4zlpWOQvViS5zqQDhYgdI2TQ8JIJzUnZFSzn6pSbcwlYUYx jvUMiSe09wWhd1GcEoFcNxYNA0Bs397WHEyCAM/NqlxisANUrV/SH4xbhQiXci5cKXJa jrCA== X-Gm-Message-State: AC+VfDyw9TiVaeiPEm7HIHR9a1icAAjg9I6172ascarrgF+rcSUUUoNU Ko9wl0B2OeF5nncVVtKEuxbgLHgj6P9n X-Google-Smtp-Source: ACHHUZ5Op7YTRWS0VwHR9qRGvjW0o4XHD6oxkOBCTvBdbBFCZ4OTsZUg/zDMYyJ9dDx9txiWTt/otuxf8T0X X-Received: from irogers.svl.corp.google.com ([2620:15c:2a3:200:a518:9a69:cf62:b4d9]) (user=irogers job=sendgmr) by 2002:a0d:ec4a:0:b0:56d:21a1:16a1 with SMTP id r10-20020a0dec4a000000b0056d21a116a1mr13933293ywn.5.1687889467366; Tue, 27 Jun 2023 11:11:07 -0700 (PDT) Date: Tue, 27 Jun 2023 11:10:28 -0700 In-Reply-To: <20230627181030.95608-1-irogers@google.com> Message-Id: <20230627181030.95608-12-irogers@google.com> Mime-Version: 1.0 References: <20230627181030.95608-1-irogers@google.com> X-Mailer: git-send-email 2.41.0.162.gfafddb0af9-goog Subject: [PATCH v2 11/13] perf parse-events: Populate error column for BPF/tracepoint 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 | 80 ++++++++++++++++++++-------------- tools/perf/util/parse-events.h | 8 ++-- tools/perf/util/parse-events.y | 6 +-- 4 files changed, 57 insertions(+), 39 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..fdd304fbed7c 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,8 +1448,9 @@ 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_) { + YYLTYPE *loc =3D loc_; #ifdef HAVE_LIBTRACEEVENT if (head_config) { struct perf_event_attr attr; @@ -1446,17 +1462,17 @@ 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; (void)sys; (void)event; (void)head_config; - parse_events_error__handle(err, 0, strdup("unsupported tracepoint"), + parse_events_error__handle(err, loc->first_column, strdup("unsupported tr= acepoint"), strdup("libtraceevent is necessary for tracepoint support")); return -1; #endif 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 06:00:03 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 77DE3C0502B for ; Tue, 27 Jun 2023 18:11:55 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S230301AbjF0SLn (ORCPT ); Tue, 27 Jun 2023 14:11:43 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:42864 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S231185AbjF0SLN (ORCPT ); Tue, 27 Jun 2023 14:11:13 -0400 Received: from mail-pj1-x104a.google.com (mail-pj1-x104a.google.com [IPv6:2607:f8b0:4864:20::104a]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 1BD0310CE for ; Tue, 27 Jun 2023 11:11:10 -0700 (PDT) Received: by mail-pj1-x104a.google.com with SMTP id 98e67ed59e1d1-26337f5d2daso112691a91.0 for ; Tue, 27 Jun 2023 11:11:10 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20221208; t=1687889469; x=1690481469; h=to:from:subject:references:mime-version:message-id:in-reply-to:date :from:to:cc:subject:date:message-id:reply-to; bh=ZsQdXnzAIiBdOVv7YXiT/yMeAfvTF44QJmtH1jnvKyU=; b=V6MFh8t05RNKCKRaCyI+bwGnMYj4Vf7/14+gVHDl5oBQPkA8a9ovHrm3DBudUNtGg4 s9JjJ+BMUhZ/nhvHDKy66J4cZW4WNJBBwPG5AaP5B19tJmii4o5pJwrTNxutm3Uf9Ek1 yuxH7tSvlX8B2EZ+aH4AeinD52jClkt4kkA9quoTQ0o29Qq4j9TFvVRvM3sOPNFakYS+ OwQQpCWuPzonR2120gRiqMpjG2EKzojkWeilof/J68+ePCpBxn/D+IYq2snLXG3SHGk2 Xf3JlDD0S3+ODBGcifpN++iKUsptql3aU8lMJcRMQLV/fl2IzI/xKOGNbLpc6l5JTX9B ZWUg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1687889469; x=1690481469; 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=ZsQdXnzAIiBdOVv7YXiT/yMeAfvTF44QJmtH1jnvKyU=; b=iocWbOEVKk9dcSpmt+npxFD07pvZ2V5fZctA7GgPHFa8nbu4SdJd+8xI0EjOdfxw4a UAA0dsCWdpt2LCBzHDRtmBagqoGkX/JG89lilGmc3c+9q8Nnk98Nl6zJN7PjhRftH0m8 epRJer6KApW7F4M/CxSICILKEVOYmkLpGcZr2k6PWMgfEQKd49H2tX0cY1A0kAumBmYo nf6s8V+Cfmu1tlK9lFQKWKJMgpYVpsHjwAO/6J+5swDO5UwoK2cM9GDFOmpbTlYsUMyV Mav50MW/9EtP+SY8dD+nF2PTOAZWknmZDE4GCa27MHLGLpbQuMz0P2L1Oy9OJ61dogTq Zffw== X-Gm-Message-State: AC+VfDyJ23usxQYcjQNC605i4EoalBUa86b1p10JKUUVit2lmy706tBT 8SkhUXvds+U3epEYvJapwr3dDZc3HMVI X-Google-Smtp-Source: ACHHUZ6MjQuQeqq9PKCC4v3qfuiB37nqIjkuxyWR9iVnQ2dzQXIbLIDTJFSeM5vQsIpNIp0VuLCJ3HrkmEXU X-Received: from irogers.svl.corp.google.com ([2620:15c:2a3:200:a518:9a69:cf62:b4d9]) (user=irogers job=sendgmr) by 2002:a17:90a:d483:b0:263:2f09:20c3 with SMTP id s3-20020a17090ad48300b002632f0920c3mr160538pju.9.1687889469588; Tue, 27 Jun 2023 11:11:09 -0700 (PDT) Date: Tue, 27 Jun 2023 11:10:29 -0700 In-Reply-To: <20230627181030.95608-1-irogers@google.com> Message-Id: <20230627181030.95608-13-irogers@google.com> Mime-Version: 1.0 References: <20230627181030.95608-1-irogers@google.com> X-Mailer: git-send-email 2.41.0.162.gfafddb0af9-goog Subject: [PATCH v2 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 fdd304fbed7c..58fcfff99ec4 100644 --- a/tools/perf/util/parse-events.c +++ b/tools/perf/util/parse-events.c @@ -1567,13 +1567,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); @@ -1597,7 +1598,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) @@ -1683,12 +1684,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 @@ -1735,7 +1737,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; @@ -1748,7 +1750,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 06:00:03 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 41A47EB64DC for ; Tue, 27 Jun 2023 18:12:23 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S230423AbjF0SLv (ORCPT ); Tue, 27 Jun 2023 14:11:51 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:43108 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S231254AbjF0SLQ (ORCPT ); Tue, 27 Jun 2023 14:11:16 -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 443002D4C for ; Tue, 27 Jun 2023 11:11:13 -0700 (PDT) Received: by mail-yb1-xb4a.google.com with SMTP id 3f1490d57ef6-bf0ba82473dso6701151276.0 for ; Tue, 27 Jun 2023 11:11:13 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20221208; t=1687889472; x=1690481472; 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=oW5Nw8CaZlguvVXnWXrJCyRqJYAVwXXD99hYzQcoeE0ITiJM35Lhadh3q6zb4/iv8L LoLj3jARhvxaEXR1qszm5BP0ezvL+QzCCPMkgm+gR4yzm8M5lJBpsBruMpzcd0QxMDGC 9nXx9hQDzbvTPEnkSVw5s1VEb+umG92l809VG8DurQ+Xy7t7oMFKn1YpVU6FybqjB2Bw 5VUxTLUK7TetoD1OEK5cWJsqz7xJDR/G9ibr3Vt9AnKV1tRlGAnt2g6ryGS5+TyOK6xU Qrbcwl/ESPNFj7fYUM1Dpw/RsKAA5q37hivFSgqyIRIjX4cOXaSIPy+eMqildaC4hcPs Xz3g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1687889472; x=1690481472; 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=fBQAcR0YHjF5gA52558/BCLIhp3D7Oxvg33umA0c73gH8+GD430Y6jsWYNwPkYl83o +Y/1uUvjjF1X83Jua1ri/GzIW4SjFeDRLOIRsLEI7hJh2kMkF82yKW3t9n/gOxU0W2ch Gt39jx+XGgsV0XDRD/U3SBICCowuGjcQpJJw/mM5GYk7a9oqcC/DuGK41iq+xsiRBdFR OmFNntj1wNEm+Og51e24s4Ekkygui/9dDDQ7kzOmaZK1/oM6uuCgbEyYExtbSCqrSCfP +etZJCOMAZf3QC5mFXZZuA3GAEtg7AsPywaF8MHb1rhLuDuVfid8VLGZsSIeAZ+HYp4k xryQ== X-Gm-Message-State: AC+VfDxwaMQpDmZOTKidVYgdwleU1gRAmj3QyvfiuP0aObYla6YJe6SE WUmRgxMFNzE5ApbpM70JRdUoU3k3Q0LY X-Google-Smtp-Source: ACHHUZ7rpFDD6/goG6mY4Mg+AjnbBdtPEAm8hqbeCCfMPVjJsYX0ztNDVCSjsbxN1b7sm3KW4MtRFbHUFpTz X-Received: from irogers.svl.corp.google.com ([2620:15c:2a3:200:a518:9a69:cf62:b4d9]) (user=irogers job=sendgmr) by 2002:a25:c943:0:b0:c15:42bf:22f with SMTP id z64-20020a25c943000000b00c1542bf022fmr3603446ybf.9.1687889472210; Tue, 27 Jun 2023 11:11:12 -0700 (PDT) Date: Tue, 27 Jun 2023 11:10:30 -0700 In-Reply-To: <20230627181030.95608-1-irogers@google.com> Message-Id: <20230627181030.95608-14-irogers@google.com> Mime-Version: 1.0 References: <20230627181030.95608-1-irogers@google.com> X-Mailer: git-send-email 2.41.0.162.gfafddb0af9-goog Subject: [PATCH v2 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