From nobody Sun Dec 14 11:53:50 2025 Received: from mail-ej1-f41.google.com (mail-ej1-f41.google.com [209.85.218.41]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id E37E031B800 for ; Fri, 12 Dec 2025 15:32:50 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.218.41 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1765553573; cv=none; b=RM7hcGOZdtR/GAhXeKtR6ZScatplSWFMb0gAG9lpYbrzBgqunzdQSUzsZSjreQONSsVhlHp4a73wbZeHUPavpK5TzrO/9kW9qRaqrYsAt8YyaV6avtp+QcVPxj8P7Uk+cUCvgnAbtQYkhf/yw5B/7AXsBOxsp1dg0MN1M4wvv58= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1765553573; c=relaxed/simple; bh=zLdx5e3pyh2JRQOFFSBmpdx51RRSEdD16iQSkfVhasc=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=M9vnRhVATMNHzkU/DBjpScezhqYnpRmUmZCvxMoFwvOc7cW8tQnv0SvaKObhs32fL9BboaLI8yrEsLZRBoamm+1M5SD5oBJrybJS11GMw+Qqp0H5b1BDY7uZCtwi/R6HnJKnrU93wI0uOwuc7wRwavZJju+zFyTMU0Ig3ZINxIw= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linaro.org; spf=pass smtp.mailfrom=linaro.org; dkim=pass (2048-bit key) header.d=linaro.org header.i=@linaro.org header.b=VFSMY8Tq; arc=none smtp.client-ip=209.85.218.41 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linaro.org Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=linaro.org Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=linaro.org header.i=@linaro.org header.b="VFSMY8Tq" Received: by mail-ej1-f41.google.com with SMTP id a640c23a62f3a-b7277324204so224046766b.0 for ; Fri, 12 Dec 2025 07:32:50 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1765553569; x=1766158369; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:from:to:cc:subject:date:message-id :reply-to; bh=9R0fqOMnWx/kXqG5KJ5IdcBa/s5Ujlxo3aE4ef72JzE=; b=VFSMY8Tq0wndD7ReNusaeIBbccnJS5PMKQFQzvDBISxQieatGL7DgAj+C0pyadgPrU vwJQdGTX45G2jeeQTVny6ll2IR/gbc1xAXsPugKr02oJ2sx0iXi7QLNJwCm0L45IjhNc ShvLllatSA/q7KKkrxxaH1P7p3rySP5h0A3uQRSS1oyTED02eaqQC2AP6+xdR8kjEemD 6fFQPNy9JBJcl5alYwvIKbVmljSYoaUYZFxVll5srmY40jTtTPuec7iY8+ZkF8Vfm4gV WsHDy8VckMMn4oV+I0oaIr6ogXkaGsHda9sRaAW4eTIIxMLL6wRnhXi4Ne3blFVbHPZ3 zF4w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1765553569; x=1766158369; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=9R0fqOMnWx/kXqG5KJ5IdcBa/s5Ujlxo3aE4ef72JzE=; b=l7I/11kpoGfv27gvHNY84gXANtTT5yp3OxzBkn5kppgJiq2RoyJgfawsZNujHa5Rvg oITvzE8jbgtlTZ1fx3bBlxAr9sRLNKKJThajMNkKT5GxYSV1LJdz8zMf+LmeUnQUf3A2 ObxgoPQaHmBROut1rxn+Tev4CTdPG6U/qEdUZTrVBFp4gHUA1q44XGOCeJubUXuxpasj TDqcNXJDUiK9LtjFcKc5WhZGR4GBnOxbGBVW4DKGIiufQ6QXhpuBWVYA9MzbQxBPCuYC othwqzyry4UjKMtsMcvpChFA/zM8Rqeo6aW26XDchV8ZlmJmP4xPg6yG2I5+mpZ5HvNf ZQ/g== X-Forwarded-Encrypted: i=1; AJvYcCWbIshkW8ZskVYUNHtdFMydIqR01jsgIf03at+WV7Xktdaov16Y0YWoyG8G1MjpXA44zq0MH/6WGnqscEc=@vger.kernel.org X-Gm-Message-State: AOJu0YyMisETj5DYAF9zkFA6ZuMrpbeRNLT4YKaCNDeU1cz0Nw9Bi9V2 EgLv74/SOjp8FfgZ51yiMYh+YmXv/UB7rlZkpLz0+Yc+L6T2WjpI0+Jnx1cB14dYh5M= X-Gm-Gg: AY/fxX54QW2CcUGKtGHvFVmbIwiSwKsLF2ZmcKTfCSULiOuxsFEUc0sITtQr2c/6b78 UOX8bAbl9wZrscXSap+SWCYxCfzy9/unpHIYNQKp655010NEC6TQ5QnSjbJlEL5O4WAXn80YQeN uknykrhd4L6yAthvLVJbMvxPffKMuSnPQDl2A43+UEDM72t3a70lZEitD86oegFWQ3FQ4JTWsT5 m49Xh6IpoS13CSjnN4U5FH3gdmXM/9/7osuXAGmSmYzMBxZxTJt45683Xim38ScwYrs0qXWKZdg dz++qpo0dmqXidE9kp1LZ2OLPwVQYozCmJPUQV5c6Mr0xdMRAUZOXAILWLsI9CLUy15RAapnmih xzHYxy18flqEowdUKRCNL1tlll6JMkoeBIbcGB48wCAz/zRreIz5PkeTDFhtnmNRzHNrDAGEppL HEGqwFCt0OOKI+4kBVWujrvnOlJzlIVuk= X-Google-Smtp-Source: AGHT+IFbuckV0/lVSbpz/gLDBbP/OWExCz0AsI758ga/mOuq3N+WcR0TmjT9gy99TZcqWy5LGpaTmw== X-Received: by 2002:a17:907:d29:b0:b7a:1bdd:3311 with SMTP id a640c23a62f3a-b7d23c5c413mr246282266b.62.1765553569104; Fri, 12 Dec 2025 07:32:49 -0800 (PST) Received: from e133063.arm.com ([130.185.218.160]) by smtp.gmail.com with ESMTPSA id 4fb4d7f45d1cf-6498210ed32sm5433234a12.29.2025.12.12.07.32.47 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 12 Dec 2025 07:32:48 -0800 (PST) From: James Clark Date: Fri, 12 Dec 2025 17:32:21 +0200 Subject: [PATCH v3 04/12] perf evsel: apply evsel__set_config_if_unset() to all config fields Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20251212-james-perf-config-bits-v3-4-aa36a4846776@linaro.org> References: <20251212-james-perf-config-bits-v3-0-aa36a4846776@linaro.org> In-Reply-To: <20251212-james-perf-config-bits-v3-0-aa36a4846776@linaro.org> To: Peter Zijlstra , Ingo Molnar , Arnaldo Carvalho de Melo , Namhyung Kim , Mark Rutland , Alexander Shishkin , Jiri Olsa , Ian Rogers , Adrian Hunter , Suzuki K Poulose , Mike Leach , John Garry , Will Deacon , Leo Yan Cc: linux-perf-users@vger.kernel.org, linux-kernel@vger.kernel.org, coresight@lists.linaro.org, linux-arm-kernel@lists.infradead.org, James Clark X-Mailer: b4 0.14.2 Misleadingly, evsel__set_config_if_unset() only works with the config field and not config1, config2, etc. This is fine at the moment because all users of it happen to operate on bits that are in that config field. Fix it before there are any new users of the function which operate on bits in different config fields. In theory it's also possible for a driver to move an existing bit to another config field and this fixes that scenario too, although this hasn't happened yet either. Signed-off-by: James Clark --- tools/perf/util/pmu.c | 37 +++++++++++++++++++++++++++++++++++-- 1 file changed, 35 insertions(+), 2 deletions(-) diff --git a/tools/perf/util/pmu.c b/tools/perf/util/pmu.c index e02f74d4020c151082ecc434c29c0ec4c2c9b2c8..514cba91f5d99b399d2d6a1e350= 971660c54a9fc 100644 --- a/tools/perf/util/pmu.c +++ b/tools/perf/util/pmu.c @@ -146,6 +146,8 @@ struct perf_pmu_format { static int pmu_aliases_parse(struct perf_pmu *pmu); static void pmu_format_value(unsigned long *format, __u64 value, __u64 *v, bool zero); +static struct perf_pmu_format *pmu_find_format(const struct list_head *for= mats, + const char *name); =20 static struct perf_pmu_format *perf_pmu__new_format(struct list_head *list= , char *name) { @@ -1387,7 +1389,38 @@ void evsel__set_config_if_unset(struct perf_pmu *pmu= , struct evsel *evsel, const char *config_name, u64 val) { u64 user_bits =3D 0, bits; - struct evsel_config_term *term =3D evsel__get_config_term(evsel, USR_CHG_= CONFIG); + struct evsel_config_term *term; + struct perf_pmu_format *format =3D pmu_find_format(&pmu->format, config_n= ame); + __u64 *vp; + + if (!format) + return; + + switch (format->value) { + case PERF_PMU_FORMAT_VALUE_CONFIG: + term =3D evsel__get_config_term(evsel, USR_CHG_CONFIG); + vp =3D &evsel->core.attr.config; + break; + case PERF_PMU_FORMAT_VALUE_CONFIG1: + term =3D evsel__get_config_term(evsel, USR_CHG_CONFIG1); + vp =3D &evsel->core.attr.config1; + break; + case PERF_PMU_FORMAT_VALUE_CONFIG2: + term =3D evsel__get_config_term(evsel, USR_CHG_CONFIG2); + vp =3D &evsel->core.attr.config2; + break; + case PERF_PMU_FORMAT_VALUE_CONFIG3: + term =3D evsel__get_config_term(evsel, USR_CHG_CONFIG3); + vp =3D &evsel->core.attr.config3; + break; + case PERF_PMU_FORMAT_VALUE_CONFIG4: + term =3D evsel__get_config_term(evsel, USR_CHG_CONFIG4); + vp =3D &evsel->core.attr.config4; + break; + default: + pr_err("Unknown format value: %d\n", format->value); + return; + } =20 if (term) user_bits =3D term->val.cfg_chg; @@ -1399,7 +1432,7 @@ void evsel__set_config_if_unset(struct perf_pmu *pmu,= struct evsel *evsel, return; =20 /* Otherwise replace it */ - pmu_format_value(&bits, val, &evsel->core.attr.config, /*zero=3D*/true); + pmu_format_value(&bits, val, vp, /*zero=3D*/true); } =20 static struct perf_pmu_format * --=20 2.34.1