From nobody Fri Apr 3 08:35:17 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 1C548ECAAD3 for ; Wed, 14 Sep 2022 20:09:31 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S229528AbiINUJ2 (ORCPT ); Wed, 14 Sep 2022 16:09:28 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:52366 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229728AbiINUJV (ORCPT ); Wed, 14 Sep 2022 16:09:21 -0400 Received: from mail-oa1-f48.google.com (mail-oa1-f48.google.com [209.85.160.48]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id AD393491EC; Wed, 14 Sep 2022 13:09:16 -0700 (PDT) Received: by mail-oa1-f48.google.com with SMTP id 586e51a60fabf-11eab59db71so44024436fac.11; Wed, 14 Sep 2022 13:09:16 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-message-state:from:to:cc :subject:date; bh=EwT06h+eRDTcoLgSoC65o7wSSI+kS+CEWIMhVG/Ma34=; b=yXuL464gMApnY/Lppg6odvtPbvMNKqqMjhpzx0TrHUdEMh4JCnmt+8fl1YaQK3zcze rsYk2Po+YFMi/utw7rRRBn1nnGP48uigURiDe1RiFt1iOKqba9G4SlZ6AVbjJwb0dXAf Upd9hxgXddyge+OPDPvPcF5XwpV5jlLljx4JnbYpZR1rMFbRtLMDKFi9WY69Z+YXFPVi yCvaxAn55xfDuFOgk9vGsZwi9WXtv8Nk51jnNoOr+wRM19hgx4Ddex1tISlzZGdNKMzJ K0jMkBSOSsydLD8tzCgfb5Yll7jYa3cAS237/v1vpGXjNoqaY0i6+CL+eIKjO2AtJE7e 0omA== X-Gm-Message-State: ACgBeo2uA8dPTddcylUZyFMiYHhS3mQnbvsGoMyqAuZ35djyO9sypp1v j681LMxjeFKYbrBMJAkdAA== X-Google-Smtp-Source: AA6agR4mSYk0h9aDd6JaUnXz1E5Us5kspnD/DZfNx4X1lbhjELJuiNSArjaoBpZckK9UTm5CzGi2Zg== X-Received: by 2002:a05:6870:c387:b0:12a:f227:c36 with SMTP id g7-20020a056870c38700b0012af2270c36mr3416824oao.94.1663186155328; Wed, 14 Sep 2022 13:09:15 -0700 (PDT) Received: from [127.0.1.1] (66-90-144-107.dyn.grandenetworks.net. [66.90.144.107]) by smtp.googlemail.com with ESMTPSA id r22-20020a544896000000b0033a37114eb0sm6745050oic.19.2022.09.14.13.09.14 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 14 Sep 2022 13:09:14 -0700 (PDT) From: Rob Herring Date: Wed, 14 Sep 2022 15:08:34 -0500 Subject: [PATCH v3 1/3] perf: Skip and warn on unknown format 'configN' attrs MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20220914-arm-perf-tool-spe1-2-v2-v3-1-8189fc04dcc6@kernel.org> References: <20220914-arm-perf-tool-spe1-2-v2-v3-0-8189fc04dcc6@kernel.org> In-Reply-To: <20220914-arm-perf-tool-spe1-2-v2-v3-0-8189fc04dcc6@kernel.org> To: Peter Zijlstra , Alexander Shishkin , Arnaldo Carvalho de Melo , Ingo Molnar , Mark Rutland , Jiri Olsa , Namhyung Kim Cc: Leo Yan , linux-perf-users@vger.kernel.org, James Clark , linux-kernel@vger.kernel.org X-Mailer: b4 0.10.0-dev Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org If the kernel exposes a new perf_event_attr field in a format attr, perf will return an error stating the specified PMU can't be found. For example, a format attr with 'config3:0-63' causes an error as config3 is unknown to perf. This causes a compatibility issue between a newer kernel with older perf tool. Before this change with a kernel adding 'config3' I get: $ perf record -e arm_spe// -- true event syntax error: 'arm_spe//' \___ Cannot find PMU `arm_spe'. Missing kernel support? Run 'perf list' for a list of valid events Usage: perf record [] [] or: perf record [] -- [] -e, --event event selector. use 'perf list' to list available events After this change, I get: $ perf record -e arm_spe// -- true WARNING: 'arm_spe_0' format 'inv_event_filter' requires 'perf_event_attr::c= onfig3' which is not supported by this version of perf! [ perf record: Woken up 2 times to write data ] [ perf record: Captured and wrote 0.091 MB perf.data ] To support unknown configN formats, rework the YACC implementation to pass any config[0-9]+ format to perf_pmu__new_format() to handle with a warning. Cc: stable@vger.kernel.org Signed-off-by: Rob Herring Reviewed-by: Namhyung Kim Tested-by: Leo Yan --- v3: - Move warning from format scanning to when PMU is selected - Add and use PERF_PMU_FORMAT_VALUE_CONFIG_END v2: https://lore.kernel.org/all/20220909204509.2169512-1-robh@kernel.org/ - Rework YACC code to handle configN formats in C code - Add a warning when an unknown configN attr is found v1: https://lore.kernel.org/all/20220901184709.2179309-1-robh@kernel.org/ diff --git a/tools/perf/util/parse-events.c b/tools/perf/util/parse-events.c index f05e15acd33f..e2305fca0f95 100644 --- a/tools/perf/util/parse-events.c +++ b/tools/perf/util/parse-events.c @@ -215,6 +215,9 @@ __add_event(struct list_head *list, int *idx, struct perf_cpu_map *cpus =3D pmu ? perf_cpu_map__get(pmu->cpus) : cpu_list ? perf_cpu_map__new(cpu_list) : NULL; =20 + if (pmu) + perf_pmu__warn_invalid_formats(pmu); + if (pmu && attr->type =3D=3D PERF_TYPE_RAW) perf_pmu__warn_invalid_config(pmu, attr->config, name); =20 diff --git a/tools/perf/util/pmu.c b/tools/perf/util/pmu.c index 89655d53117a..2a0d1415dd55 100644 --- a/tools/perf/util/pmu.c +++ b/tools/perf/util/pmu.c @@ -1005,6 +1005,19 @@ static struct perf_pmu *pmu_lookup(const char *looku= p_name) return NULL; } =20 +void perf_pmu__warn_invalid_formats(struct perf_pmu *pmu) +{ + struct perf_pmu_format *format; + + list_for_each_entry(format, &pmu->format, list) + if (format->value >=3D PERF_PMU_FORMAT_VALUE_CONFIG_END) { + pr_warning("WARNING: '%s' format '%s' requires 'perf_event_attr::config= %d'" + "which is not supported by this version of perf!\n", + pmu->name, format->name, format->value); + return; + } +} + static struct perf_pmu *pmu_find(const char *name) { struct perf_pmu *pmu; diff --git a/tools/perf/util/pmu.h b/tools/perf/util/pmu.h index a7b0f9507510..68e15c38ae71 100644 --- a/tools/perf/util/pmu.h +++ b/tools/perf/util/pmu.h @@ -17,6 +17,7 @@ enum { PERF_PMU_FORMAT_VALUE_CONFIG, PERF_PMU_FORMAT_VALUE_CONFIG1, PERF_PMU_FORMAT_VALUE_CONFIG2, + PERF_PMU_FORMAT_VALUE_CONFIG_END, }; =20 #define PERF_PMU_FORMAT_BITS 64 @@ -139,6 +140,7 @@ int perf_pmu__caps_parse(struct perf_pmu *pmu); =20 void perf_pmu__warn_invalid_config(struct perf_pmu *pmu, __u64 config, const char *name); +void perf_pmu__warn_invalid_formats(struct perf_pmu *pmu); =20 bool perf_pmu__has_hybrid(void); int perf_pmu__match(char *pattern, char *name, char *tok); diff --git a/tools/perf/util/pmu.l b/tools/perf/util/pmu.l index a15d9fbd7c0e..58b4926cfaca 100644 --- a/tools/perf/util/pmu.l +++ b/tools/perf/util/pmu.l @@ -27,8 +27,6 @@ num_dec [0-9]+ =20 {num_dec} { return value(10); } config { return PP_CONFIG; } -config1 { return PP_CONFIG1; } -config2 { return PP_CONFIG2; } - { return '-'; } : { return ':'; } , { return ','; } diff --git a/tools/perf/util/pmu.y b/tools/perf/util/pmu.y index bfd7e8509869..283efe059819 100644 --- a/tools/perf/util/pmu.y +++ b/tools/perf/util/pmu.y @@ -20,7 +20,7 @@ do { \ =20 %} =20 -%token PP_CONFIG PP_CONFIG1 PP_CONFIG2 +%token PP_CONFIG %token PP_VALUE PP_ERROR %type PP_VALUE %type bit_term @@ -47,18 +47,11 @@ PP_CONFIG ':' bits $3)); } | -PP_CONFIG1 ':' bits +PP_CONFIG PP_VALUE ':' bits { ABORT_ON(perf_pmu__new_format(format, name, - PERF_PMU_FORMAT_VALUE_CONFIG1, - $3)); -} -| -PP_CONFIG2 ':' bits -{ - ABORT_ON(perf_pmu__new_format(format, name, - PERF_PMU_FORMAT_VALUE_CONFIG2, - $3)); + $2, + $4)); } =20 bits: --=20 b4 0.10.0-dev From nobody Fri Apr 3 08:35:17 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 75A82ECAAD3 for ; Wed, 14 Sep 2022 20:09:44 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S229791AbiINUJk (ORCPT ); Wed, 14 Sep 2022 16:09:40 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:52406 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229741AbiINUJW (ORCPT ); Wed, 14 Sep 2022 16:09:22 -0400 Received: from mail-oa1-f47.google.com (mail-oa1-f47.google.com [209.85.160.47]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 04BDE476D3; Wed, 14 Sep 2022 13:09:18 -0700 (PDT) Received: by mail-oa1-f47.google.com with SMTP id 586e51a60fabf-1225219ee46so44091585fac.2; Wed, 14 Sep 2022 13:09:18 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-message-state:from:to:cc :subject:date; bh=QJp/i7zfiD1oGnxN83dfiN9EncGw/ZbjXDcYjXPOeXE=; b=E0mcM9CRfqIteL37TcOU5ahq8/YeNQvqLDlYv2plhTMcxe1d3E5EL2T1hFtx2PPmxI gcANgwQqmEnc6RrLcW4Er/j8iWm5X6H7LYKPqUwSQ/0O6CXwoa5YV0OO01vo9NkAa2ss 2bdByMf9ssNM7CGMkhfraa7MsFuYj2iq32AkSCQDRRENg3mxDQFHcKsypzf5mF9XVaM8 qCwoG9qazIIqa3w7fPwYQyOgVvOQ+Hith6+Kx/9qNAP8RA/C/4BBMo+WaSJS3MGDHExI nrzwCntEAdQWMLn5SlauMKMfExN4wxavE4gKi25ufL4ecdN903qB6rRdKRdRRxlJ2klR W2pA== X-Gm-Message-State: ACgBeo1GS7mU1wbv22x4O7c2I40TAlCjZQY+Uw5QyxLjb5KHFJO+MZGl nGsq+R5hTHCcQFX0g24dKw== X-Google-Smtp-Source: AA6agR4Hq97e8EthQOyi91MM8H5uAoBi3NXhD4EMWGV19hdPLzwXlQOObg0EDg2d7HxpKXyyG6W6QQ== X-Received: by 2002:a05:6870:2395:b0:12b:cdce:c8a2 with SMTP id e21-20020a056870239500b0012bcdcec8a2mr3580210oap.158.1663186156411; Wed, 14 Sep 2022 13:09:16 -0700 (PDT) Received: from [127.0.1.1] (66-90-144-107.dyn.grandenetworks.net. [66.90.144.107]) by smtp.googlemail.com with ESMTPSA id r22-20020a544896000000b0033a37114eb0sm6745050oic.19.2022.09.14.13.09.15 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 14 Sep 2022 13:09:16 -0700 (PDT) From: Rob Herring Date: Wed, 14 Sep 2022 15:08:35 -0500 Subject: [PATCH v3 2/3] perf tools: Sync perf_event_attr::config3 addition MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20220914-arm-perf-tool-spe1-2-v2-v3-2-8189fc04dcc6@kernel.org> References: <20220914-arm-perf-tool-spe1-2-v2-v3-0-8189fc04dcc6@kernel.org> In-Reply-To: <20220914-arm-perf-tool-spe1-2-v2-v3-0-8189fc04dcc6@kernel.org> To: Peter Zijlstra , Alexander Shishkin , Arnaldo Carvalho de Melo , Ingo Molnar , Mark Rutland , Jiri Olsa , Namhyung Kim Cc: Leo Yan , linux-perf-users@vger.kernel.org, James Clark , linux-kernel@vger.kernel.org X-Mailer: b4 0.10.0-dev Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Arm SPEv1.2 adds another 64-bits of event filtering control. As the existing perf_event_attr::configN fields are all used up for SPE PMU, an additional field is needed. Add a new 'config3' field. Signed-off-by: Rob Herring --- This patch is dependent on the kernel side landing first. diff --git a/include/uapi/linux/perf_event.h b/include/uapi/linux/perf_even= t.h index 03b370062741..b53f9b958235 100644 --- a/include/uapi/linux/perf_event.h +++ b/include/uapi/linux/perf_event.h @@ -333,6 +333,7 @@ enum perf_event_read_format { #define PERF_ATTR_SIZE_VER5 112 /* add: aux_watermark */ #define PERF_ATTR_SIZE_VER6 120 /* add: aux_sample_size */ #define PERF_ATTR_SIZE_VER7 128 /* add: sig_data */ +#define PERF_ATTR_SIZE_VER8 136 /* add: config3 */ =20 /* * Hardware event_id to monitor via a performance monitoring event: @@ -474,6 +475,8 @@ struct perf_event_attr { * truncated accordingly on 32 bit architectures. */ __u64 sig_data; + + __u64 config3; /* extension of config2 */ }; =20 /* diff --git a/tools/include/uapi/linux/perf_event.h b/tools/include/uapi/lin= ux/perf_event.h index 581ed4bdc062..7fad17853310 100644 --- a/tools/include/uapi/linux/perf_event.h +++ b/tools/include/uapi/linux/perf_event.h @@ -333,6 +333,7 @@ enum perf_event_read_format { #define PERF_ATTR_SIZE_VER5 112 /* add: aux_watermark */ #define PERF_ATTR_SIZE_VER6 120 /* add: aux_sample_size */ #define PERF_ATTR_SIZE_VER7 128 /* add: sig_data */ +#define PERF_ATTR_SIZE_VER8 136 /* add: config3 */ =20 /* * Hardware event_id to monitor via a performance monitoring event: @@ -474,6 +475,8 @@ struct perf_event_attr { * truncated accordingly on 32 bit architectures. */ __u64 sig_data; + + __u64 config3; /* extension of config2 */ }; =20 /* --=20 b4 0.10.0-dev From nobody Fri Apr 3 08:35:17 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 3501FECAAD3 for ; Wed, 14 Sep 2022 20:09:37 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S229511AbiINUJe (ORCPT ); Wed, 14 Sep 2022 16:09:34 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:52402 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229715AbiINUJW (ORCPT ); Wed, 14 Sep 2022 16:09:22 -0400 Received: from mail-ot1-f42.google.com (mail-ot1-f42.google.com [209.85.210.42]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 88E624BA62; Wed, 14 Sep 2022 13:09:18 -0700 (PDT) Received: by mail-ot1-f42.google.com with SMTP id e35-20020a9d01a6000000b0065798eb8754so2010407ote.2; Wed, 14 Sep 2022 13:09:18 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-message-state:from:to:cc :subject:date; bh=R5fWkUGSllbljMyohKjOADaVD57INk7xkRNpWDPkOt0=; b=mZb72/JPvQruJdNYi5zHMpRSvmGdi2ILYlEI+e9d5fugu8gEl7/+vKBBy8brxvn7Nx lHLTdNoFGPXmmHXcHR5IHM7eJ86hGDEjMGaDngK8j0Tmtas6TJmlZwHeXfTWHht8IqN/ L3pFqNk/n4AK1phCKPNBhO5JroHzRcAyeGU8oZ4oEU4114J2MtaN2ggxhJ5LNHsAQeJ7 yTcRfuxWPF0efVsl5yIziCsRmndvDF8vYN5RA5jHrZr/Q3McpFTasLFxZrdJy11HfwnH YgnizsEvLDAtYQz6jSftE9CLECnqvWjb7/3hYIFauuswv4RodQhNPQ39YHksSw9GqjC5 /e8Q== X-Gm-Message-State: ACgBeo1d7p1bXYLJaFEC7o3Whf6+WfhvpwsZtlRmabib21xglXbxEG3y DW3TwCw0TG7K6Z1jjYfwzw== X-Google-Smtp-Source: AA6agR4MQNquEqL/zMORmCUfESJlcG7PS6+eAYSZD3635/Ofh9iaTcX0F9LYOQmnsCMTpysw+mlRMg== X-Received: by 2002:a9d:4715:0:b0:655:d20b:48fe with SMTP id a21-20020a9d4715000000b00655d20b48femr7933327otf.297.1663186157195; Wed, 14 Sep 2022 13:09:17 -0700 (PDT) Received: from [127.0.1.1] (66-90-144-107.dyn.grandenetworks.net. [66.90.144.107]) by smtp.googlemail.com with ESMTPSA id r22-20020a544896000000b0033a37114eb0sm6745050oic.19.2022.09.14.13.09.16 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 14 Sep 2022 13:09:16 -0700 (PDT) From: Rob Herring Date: Wed, 14 Sep 2022 15:08:36 -0500 Subject: [PATCH v3 3/3] perf: Add support for perf_event_attr::config3 MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20220914-arm-perf-tool-spe1-2-v2-v3-3-8189fc04dcc6@kernel.org> References: <20220914-arm-perf-tool-spe1-2-v2-v3-0-8189fc04dcc6@kernel.org> In-Reply-To: <20220914-arm-perf-tool-spe1-2-v2-v3-0-8189fc04dcc6@kernel.org> To: Peter Zijlstra , Alexander Shishkin , Arnaldo Carvalho de Melo , Ingo Molnar , Mark Rutland , Jiri Olsa , Namhyung Kim Cc: Leo Yan , linux-perf-users@vger.kernel.org, James Clark , linux-kernel@vger.kernel.org X-Mailer: b4 0.10.0-dev Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org perf_event_attr has gained a new field, config3, so add support for it extending the existing configN support. Signed-off-by: Rob Herring --- This patch is dependent on the kernel side landing first. diff --git a/tools/perf/util/parse-events.c b/tools/perf/util/parse-events.c index e2305fca0f95..c843434981d0 100644 --- a/tools/perf/util/parse-events.c +++ b/tools/perf/util/parse-events.c @@ -913,6 +913,7 @@ static const char *config_term_names[__PARSE_EVENTS__TE= RM_TYPE_NR] =3D { [PARSE_EVENTS__TERM_TYPE_CONFIG] =3D "config", [PARSE_EVENTS__TERM_TYPE_CONFIG1] =3D "config1", [PARSE_EVENTS__TERM_TYPE_CONFIG2] =3D "config2", + [PARSE_EVENTS__TERM_TYPE_CONFIG3] =3D "config3", [PARSE_EVENTS__TERM_TYPE_NAME] =3D "name", [PARSE_EVENTS__TERM_TYPE_SAMPLE_PERIOD] =3D "period", [PARSE_EVENTS__TERM_TYPE_SAMPLE_FREQ] =3D "freq", @@ -952,6 +953,7 @@ config_term_avail(int term_type, struct parse_events_er= ror *err) case PARSE_EVENTS__TERM_TYPE_CONFIG: case PARSE_EVENTS__TERM_TYPE_CONFIG1: case PARSE_EVENTS__TERM_TYPE_CONFIG2: + case PARSE_EVENTS__TERM_TYPE_CONFIG3: case PARSE_EVENTS__TERM_TYPE_NAME: case PARSE_EVENTS__TERM_TYPE_METRIC_ID: case PARSE_EVENTS__TERM_TYPE_SAMPLE_PERIOD: @@ -997,6 +999,10 @@ do { \ CHECK_TYPE_VAL(NUM); attr->config2 =3D term->val.num; break; + case PARSE_EVENTS__TERM_TYPE_CONFIG3: + CHECK_TYPE_VAL(NUM); + attr->config3 =3D term->val.num; + break; case PARSE_EVENTS__TERM_TYPE_SAMPLE_PERIOD: CHECK_TYPE_VAL(NUM); break; diff --git a/tools/perf/util/parse-events.h b/tools/perf/util/parse-events.h index 7e6a601d9cd0..fa9460900abf 100644 --- a/tools/perf/util/parse-events.h +++ b/tools/perf/util/parse-events.h @@ -59,6 +59,7 @@ enum { PARSE_EVENTS__TERM_TYPE_CONFIG, PARSE_EVENTS__TERM_TYPE_CONFIG1, PARSE_EVENTS__TERM_TYPE_CONFIG2, + PARSE_EVENTS__TERM_TYPE_CONFIG3, PARSE_EVENTS__TERM_TYPE_NAME, PARSE_EVENTS__TERM_TYPE_SAMPLE_PERIOD, PARSE_EVENTS__TERM_TYPE_SAMPLE_FREQ, diff --git a/tools/perf/util/parse-events.l b/tools/perf/util/parse-events.l index 3a9ce96c8bce..51fe0a9fb3de 100644 --- a/tools/perf/util/parse-events.l +++ b/tools/perf/util/parse-events.l @@ -285,6 +285,7 @@ modifier_bp [rwx]{1,3} config { return term(yyscanner, PARSE_EVENTS__TERM_TYPE_CONFIG); } config1 { return term(yyscanner, PARSE_EVENTS__TERM_TYPE_CONFIG1); } config2 { return term(yyscanner, PARSE_EVENTS__TERM_TYPE_CONFIG2); } +config3 { return term(yyscanner, PARSE_EVENTS__TERM_TYPE_CONFIG3); } name { return term(yyscanner, PARSE_EVENTS__TERM_TYPE_NAME); } period { return term(yyscanner, PARSE_EVENTS__TERM_TYPE_SAMPLE_PERIOD); } freq { return term(yyscanner, PARSE_EVENTS__TERM_TYPE_SAMPLE_FREQ); } diff --git a/tools/perf/util/pmu.c b/tools/perf/util/pmu.c index 2a0d1415dd55..6943a11b822c 100644 --- a/tools/perf/util/pmu.c +++ b/tools/perf/util/pmu.c @@ -1274,6 +1274,9 @@ static int pmu_config_term(const char *pmu_name, case PERF_PMU_FORMAT_VALUE_CONFIG2: vp =3D &attr->config2; break; + case PERF_PMU_FORMAT_VALUE_CONFIG3: + vp =3D &attr->config3; + break; default: return -EINVAL; } diff --git a/tools/perf/util/pmu.h b/tools/perf/util/pmu.h index 68e15c38ae71..2e6bd1bf304a 100644 --- a/tools/perf/util/pmu.h +++ b/tools/perf/util/pmu.h @@ -17,6 +17,7 @@ enum { PERF_PMU_FORMAT_VALUE_CONFIG, PERF_PMU_FORMAT_VALUE_CONFIG1, PERF_PMU_FORMAT_VALUE_CONFIG2, + PERF_PMU_FORMAT_VALUE_CONFIG3, PERF_PMU_FORMAT_VALUE_CONFIG_END, }; =20 --=20 b4 0.10.0-dev