From nobody Mon Dec 1 20:56:07 2025 Received: from mail-wm1-f44.google.com (mail-wm1-f44.google.com [209.85.128.44]) (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 14A0B335093 for ; Mon, 1 Dec 2025 16:41:45 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.44 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1764607308; cv=none; b=rVPl/v3sDeT96IqZUl1LhFO1dZxYWHouPSyuORhzaJx1zhvg2X0zEgRdF8v2WJOKeJitouARsfe9vQWGgyT+Oq7HFmYSOnUWf4tvijJRH9dsyOwTSpX0/x+nE1ulSX6kkfdy1XPyyKMTlSvOBkimUXa+wn6xTzvEFIqb1fbEPPk= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1764607308; c=relaxed/simple; bh=dqPYxclE8clNaUE70K6dYoTwOjZL2Yh9P7yQKVdwzAE=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=g4yFEILtin4rnOs7/pi8/7FXsdddDbwDQp9VdkpMOqGi11W2v/RRrwP6/U0ji5JSX1gjk8wORH5fdOiyNPPdmGEmYTpm42Q3oS2oLl2Agky7SZ0GSnD4lA3KXtlQqQbYO57OVZdbRCpoDYXhqmyI0rxn8MyDZaLo8Aia6c9wu+s= 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=SmF8om9x; arc=none smtp.client-ip=209.85.128.44 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="SmF8om9x" Received: by mail-wm1-f44.google.com with SMTP id 5b1f17b1804b1-47775fb6cb4so32039225e9.0 for ; Mon, 01 Dec 2025 08:41:45 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1764607304; x=1765212104; 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=FfR7ElwjGMeri5/LxymMctivyxTyAEttbJyLwb22O4o=; b=SmF8om9xPzhsuoehVsAqx/0v95hmWttSapJoBG9x8+ddMm4r6IZdRuZkW9RjxiSphz B+uIIejvfAMPAES22b+sTUMsbmS1h9xYlLGJ4Ah9RvAVHhmd7qRutrj6E8x+t5U46cse K3ZQ4HNHjnsaeohPSKb1W6i2QFF8Jtr2sN5KvpHd4h2tJUX8LitRaLsCdMNB4XeNBX18 9UC/nXOgZ3vNpd5c1cMVhl+CQX0VyeZs+ePOMiBnSzbFHYn9ICUJjq04BPFEEBtlEg1w mBBljnNmBMvjbUHNe3qj2yfWZ+jz/i7TSXXw38HNn/I88/wrAU1PiU/7/yZy+kTSZ10e JLpA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1764607304; x=1765212104; 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=FfR7ElwjGMeri5/LxymMctivyxTyAEttbJyLwb22O4o=; b=JOgqbO2A07OYMl0yIFucdehlF/KbaPeoOC+grNP4gSiEOczIebRoYhWbLNmqU96Y3I DZ+46mDYkb6xsppvEMq/gnZ0pi79T5c0mUMUImc38G+S+LQ24+LbMffGwTlxxZgxYEoi lEyiLOSE6fJFh0VoH15KCeQbnxIqG27SoevNV9GNmFSV83Rm0hx0GNI8kNS2sbwXOgWU X1AUn8CelAHEjyV3J4gGxy8XluFrK2kdh18aZLdiF0SJaVs8S8TvlE/F0toABAva2xQK HCvS4TWelOWAqOoVyYWsASm3ZgteIdhgD4lfsIFCNIhx8811RpfrA276EhIo6+prOsd1 rlKw== X-Forwarded-Encrypted: i=1; AJvYcCUaQ1i9hNZ5CBMAfRNTx5/V6XG86uxgfYMXptkZh0u4KGpgPBOsiRZDzpGdfXZ06Zj3tfOBK/sBEYSnUwc=@vger.kernel.org X-Gm-Message-State: AOJu0YzVYG7vb1LtTsgMhFWJSkqh4TXMgigT2fkPtWc9hnrYqqb64a1I yh98cYmFh4Aab77KOUto326jhD7yGlbZjkHZribkJ9aIuGCwQ1yZtl9mE82U7HCCGDI= X-Gm-Gg: ASbGncsNJmoyabznqFfEbW2Ed2blBdMguTSxsVu5Iy5M4nyFna4fsFJmJ6flV/WGg5c bwDyUTab98OHFrvUe12jR7XG/E3xf08FPjsLCZKOdza4QMAJchW1893oRdN9e5mwuvxKPF4VzCu 6wJqw/QLRGFptrGQiryBYBCdb84WwmDYpjydgPSE2qV6LJsucBEQWw3Nufve0SAHuobXSNWjp+z TU04Lxl+3V9ADxrJ8Buptso9Ic6gVabb/uFnteiDsOeOdpdXnH0hiopuYUeIqSrjQGhbtOD6QBc NNYMBzzj9VS/e2uxaXFLEV2I4bjzo24P21cN/w+C5rJXt8DZCt66XwzW7QjEOJt3RehP+p35gFz g6ZyEcLxP04YiOKV08iqdjXZsj7Piy7DG2+4+mJJDMrs22dvQj+el4w0DGfXHVsTZOcuRSC81s1 2/ogVH97BjSA/+ZSLt7zuc7/0Xf8RYqMA= X-Google-Smtp-Source: AGHT+IFs/oaEFLmVc1n33HTh9cmjBtXa2KO56yE2ZPb/iAdAngVrwNGZgh5ta3HeUo0YoAjxOysIHA== X-Received: by 2002:a05:600c:3511:b0:476:d494:41d2 with SMTP id 5b1f17b1804b1-477c112f7b1mr386734245e9.29.1764607304153; Mon, 01 Dec 2025 08:41:44 -0800 (PST) Received: from ho-tower-lan.lan ([185.48.77.170]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-4791164d4f3sm255901275e9.13.2025.12.01.08.41.43 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 01 Dec 2025 08:41:43 -0800 (PST) From: James Clark Date: Mon, 01 Dec 2025 16:41:04 +0000 Subject: [PATCH 1/7] perf tools: Track all user changed config bits 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: <20251201-james-perf-config-bits-v1-1-22ecbbf8007c@linaro.org> References: <20251201-james-perf-config-bits-v1-0-22ecbbf8007c@linaro.org> In-Reply-To: <20251201-james-perf-config-bits-v1-0-22ecbbf8007c@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.0 Currently we only track which bits were set by the user in attr->config. But all configN fields should be treated equally as they can all have default and user overridden values. Track them all by making get_config_chgs() generic and calling it once for each config value. Signed-off-by: James Clark --- tools/perf/util/evsel.c | 6 ++- tools/perf/util/evsel_config.h | 6 ++- tools/perf/util/parse-events.c | 89 +++++++++++++++++---------------------= ---- tools/perf/util/pmu.c | 2 +- 4 files changed, 47 insertions(+), 56 deletions(-) diff --git a/tools/perf/util/evsel.c b/tools/perf/util/evsel.c index aee42666e882..40d68f346007 100644 --- a/tools/perf/util/evsel.c +++ b/tools/perf/util/evsel.c @@ -1238,7 +1238,11 @@ static void evsel__apply_config_terms(struct evsel *= evsel, case EVSEL__CONFIG_TERM_AUX_SAMPLE_SIZE: /* Already applied by auxtrace */ break; - case EVSEL__CONFIG_TERM_CFG_CHG: + case EVSEL__CONFIG_TERM_USR_CHG_CONFIG: + case EVSEL__CONFIG_TERM_USR_CHG_CONFIG1: + case EVSEL__CONFIG_TERM_USR_CHG_CONFIG2: + case EVSEL__CONFIG_TERM_USR_CHG_CONFIG3: + case EVSEL__CONFIG_TERM_USR_CHG_CONFIG4: break; case EVSEL__CONFIG_TERM_RATIO_TO_PREV: rtp_buf =3D term->val.str; diff --git a/tools/perf/util/evsel_config.h b/tools/perf/util/evsel_config.h index bcd3a978f0c4..b38190dc5a40 100644 --- a/tools/perf/util/evsel_config.h +++ b/tools/perf/util/evsel_config.h @@ -27,7 +27,11 @@ enum evsel_term_type { EVSEL__CONFIG_TERM_AUX_OUTPUT, EVSEL__CONFIG_TERM_AUX_ACTION, EVSEL__CONFIG_TERM_AUX_SAMPLE_SIZE, - EVSEL__CONFIG_TERM_CFG_CHG, + EVSEL__CONFIG_TERM_USR_CHG_CONFIG, + EVSEL__CONFIG_TERM_USR_CHG_CONFIG1, + EVSEL__CONFIG_TERM_USR_CHG_CONFIG2, + EVSEL__CONFIG_TERM_USR_CHG_CONFIG3, + EVSEL__CONFIG_TERM_USR_CHG_CONFIG4, EVSEL__CONFIG_TERM_RATIO_TO_PREV, }; =20 diff --git a/tools/perf/util/parse-events.c b/tools/perf/util/parse-events.c index 17c1c36a7bf9..f1cc6e96a371 100644 --- a/tools/perf/util/parse-events.c +++ b/tools/perf/util/parse-events.c @@ -1235,63 +1235,46 @@ do { \ return 0; } =20 +#define ADD_CONFIG_CHG(format_type, term_type, new_term) \ +{ \ + struct parse_events_term *term; \ + u64 bits =3D 0; \ + int type; \ + \ + list_for_each_entry(term, &head_config->terms, list) { \ + if (term->type_term =3D=3D PARSE_EVENTS__TERM_TYPE_USER) { \ + type =3D perf_pmu__format_type(pmu, term->config);\ + if (type !=3D format_type) \ + continue; \ + bits |=3D perf_pmu__format_bits(pmu, term->config); \ + } else if (term->type_term =3D=3D term_type) { \ + bits =3D ~(u64)0; \ + } \ + } \ + \ + if (bits) \ + ADD_CONFIG_TERM_VAL(new_term, cfg_chg, bits, false); \ + return 0; \ +} + /* - * Add EVSEL__CONFIG_TERM_CFG_CHG where cfg_chg will have a bit set for - * each bit of attr->config that the user has changed. + * Add EVSEL__CONFIG_TERM_USR_CFG_CONFIGn where cfg_chg will have a bit se= t for + * each bit of attr->configN that the user has changed. */ -static int get_config_chgs(struct perf_pmu *pmu, struct parse_events_terms= *head_config, +static int get_config_chgs(struct perf_pmu *pmu, + struct parse_events_terms *head_config, struct list_head *head_terms) { - struct parse_events_term *term; - u64 bits =3D 0; - int type; - - list_for_each_entry(term, &head_config->terms, list) { - switch (term->type_term) { - case PARSE_EVENTS__TERM_TYPE_USER: - type =3D perf_pmu__format_type(pmu, term->config); - if (type !=3D PERF_PMU_FORMAT_VALUE_CONFIG) - continue; - bits |=3D perf_pmu__format_bits(pmu, term->config); - break; - case PARSE_EVENTS__TERM_TYPE_CONFIG: - bits =3D ~(u64)0; - break; - case PARSE_EVENTS__TERM_TYPE_CONFIG1: - case PARSE_EVENTS__TERM_TYPE_CONFIG2: - case PARSE_EVENTS__TERM_TYPE_CONFIG3: - case PARSE_EVENTS__TERM_TYPE_CONFIG4: - case PARSE_EVENTS__TERM_TYPE_LEGACY_HARDWARE_CONFIG: - case PARSE_EVENTS__TERM_TYPE_LEGACY_CACHE_CONFIG: - case PARSE_EVENTS__TERM_TYPE_NAME: - case PARSE_EVENTS__TERM_TYPE_SAMPLE_PERIOD: - case PARSE_EVENTS__TERM_TYPE_SAMPLE_FREQ: - case PARSE_EVENTS__TERM_TYPE_BRANCH_SAMPLE_TYPE: - case PARSE_EVENTS__TERM_TYPE_TIME: - case PARSE_EVENTS__TERM_TYPE_CALLGRAPH: - case PARSE_EVENTS__TERM_TYPE_STACKSIZE: - case PARSE_EVENTS__TERM_TYPE_NOINHERIT: - case PARSE_EVENTS__TERM_TYPE_INHERIT: - case PARSE_EVENTS__TERM_TYPE_MAX_STACK: - case PARSE_EVENTS__TERM_TYPE_MAX_EVENTS: - case PARSE_EVENTS__TERM_TYPE_NOOVERWRITE: - case PARSE_EVENTS__TERM_TYPE_OVERWRITE: - case PARSE_EVENTS__TERM_TYPE_DRV_CFG: - case PARSE_EVENTS__TERM_TYPE_PERCORE: - case PARSE_EVENTS__TERM_TYPE_AUX_OUTPUT: - case PARSE_EVENTS__TERM_TYPE_AUX_ACTION: - case PARSE_EVENTS__TERM_TYPE_AUX_SAMPLE_SIZE: - case PARSE_EVENTS__TERM_TYPE_METRIC_ID: - case PARSE_EVENTS__TERM_TYPE_RAW: - case PARSE_EVENTS__TERM_TYPE_CPU: - case PARSE_EVENTS__TERM_TYPE_RATIO_TO_PREV: - default: - break; - } - } - - if (bits) - ADD_CONFIG_TERM_VAL(CFG_CHG, cfg_chg, bits, false); + ADD_CONFIG_CHG(PERF_PMU_FORMAT_VALUE_CONFIG, + PARSE_EVENTS__TERM_TYPE_CONFIG, USR_CHG_CONFIG); + ADD_CONFIG_CHG(PERF_PMU_FORMAT_VALUE_CONFIG1, + PARSE_EVENTS__TERM_TYPE_CONFIG1, USR_CHG_CONFIG1); + ADD_CONFIG_CHG(PERF_PMU_FORMAT_VALUE_CONFIG2, + PARSE_EVENTS__TERM_TYPE_CONFIG2, USR_CHG_CONFIG2); + ADD_CONFIG_CHG(PERF_PMU_FORMAT_VALUE_CONFIG3, + PARSE_EVENTS__TERM_TYPE_CONFIG3, USR_CHG_CONFIG3); + ADD_CONFIG_CHG(PERF_PMU_FORMAT_VALUE_CONFIG4, + PARSE_EVENTS__TERM_TYPE_CONFIG4, USR_CHG_CONFIG4); =20 #undef ADD_CONFIG_TERM return 0; diff --git a/tools/perf/util/pmu.c b/tools/perf/util/pmu.c index 1b7c712d8f99..7a7db31be70d 100644 --- a/tools/perf/util/pmu.c +++ b/tools/perf/util/pmu.c @@ -1384,7 +1384,7 @@ 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, CFG_CHG); + struct evsel_config_term *term =3D evsel__get_config_term(evsel, USR_CHG_= CONFIG); =20 if (term) user_bits =3D term->val.cfg_chg; --=20 2.34.1 From nobody Mon Dec 1 20:56:07 2025 Received: from mail-wm1-f50.google.com (mail-wm1-f50.google.com [209.85.128.50]) (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 30AA0335558 for ; Mon, 1 Dec 2025 16:41:47 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.50 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1764607309; cv=none; b=iN2WFlhB1x8D1LbR9NFvSNmtYpJFT3grzew3ZRlR4kM1HxAQsguWy+vRQ9YkcbB4kqTIgGE+1yMhaZdMKYbWcOIr3jVd6FCV4SIoTyrhiK0DqcW/oY4PkfTTbkTLQcmAGJrDz72CjNSR0TodsyHvimJribf2QdBe37e6ngVI+vs= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1764607309; c=relaxed/simple; bh=Y/ioDqGIzUScWoIaRX68KW6AKfDzMnOwyWt3rbeY7RE=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=pk3ZheSjTYrdM55lrRe8xitZkaIFy2fLTseewf9FnyhbT1m9gVi3hNYgc3+10rWF51JBvehR/iWBKp+Rkutded5qM6OFflgnZGMUR4K2fO4BTFGg04GB/qxP0aIp699ZOFZSEuxXbnVeNhC3iISfrX6niMg3srTrF9qLooXARm4= 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=YN/0XgNx; arc=none smtp.client-ip=209.85.128.50 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="YN/0XgNx" Received: by mail-wm1-f50.google.com with SMTP id 5b1f17b1804b1-477b91680f8so39714925e9.0 for ; Mon, 01 Dec 2025 08:41:46 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1764607305; x=1765212105; 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=cpxmoGZlCGWci4RYJQsukYp/h5kR1+QCzzjmaZQmdKI=; b=YN/0XgNx3ebt9D1zA3b6I929OsBTDpAtFQ+L0NwGUD6MMw7mDW/g8vCGlKfESndLLp wLfVZDElA8czCg9hvabHLuoeqLNTyaaYVmRCIHYxxmMx34ySdVq3smkBAU8hpeJA6A3n i0ijkzv2TjmvBUEAFzoo/Gms+eZ3SbTl5hTfGLVg0HSAWSmq8PTtQZhvWElbBBLEkRTT yDFR9SytFcD+I1v7GGgaApQ/7v8ePCe6Yn7UbmdJsdFTkmGexfbw2fGgLbMkJg/BJIhh FrmA/lr2s8PeaysVHRq4oIPVack7XMkkSMJhLdDE/Rj/vKwILIj6hoQeesv2LvR1WOoy 33dw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1764607305; x=1765212105; 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=cpxmoGZlCGWci4RYJQsukYp/h5kR1+QCzzjmaZQmdKI=; b=dWpBeiXeQ2keKKZmlgjf8XeHPjG2/VzmcWMl+PD5TV8ztaX4vhV7JVCFQncsBE9H0A TL+owt/CzzndP30gonaqOdRjSvye2DdqwUIzf+OS1/BkBr6XqNxXmu84vN+20sfKHTgT 28jfqv+pmOVLr+HbxwRYPs481aioDkhWIg41O1gwBLX5tx54mMzh/FUCTx+R0os7ojt+ WQBdLXwY3LBkuLLMarXlheVCbxB9bhFTf89Ce/afcQVLcmuaRwpmjdC7eiUwA2xfQcv2 iLRW/th2fLNu+lwJwWqQ/8RwIIHd1XEovDCb5cFpUlcboqWkL2KN/GTFZkeDwerrnMXU FVZg== X-Forwarded-Encrypted: i=1; AJvYcCWttCiTspEqHQbVv2MRckYBzay1aVONXwNwvHh/7jLyeEDwOabjjvERWoVX6879WDRTjbxZ68RkU6NpBVQ=@vger.kernel.org X-Gm-Message-State: AOJu0YxL3DN3rS5cvU46pM9+008uM9iZTYJPbHpugTb554FWpsgW+jlp hfakSxUpl2G0H6VMRcepmFgtqL3A2ZEGFLlnFplJkzYOB6L5puSRL1LE8byW6yiVCdo= X-Gm-Gg: ASbGncvK4GIwmY/r09Yp9sKnPpQYC1i3gLH1VcE7pFcJjiHNLz91wns0jr2Bke8KeYb ZaO4LOcXo1OF0O1zcnVUb3GbVjd7sIxey2I8fBvRIYcws6XgP9SXr4p7NhR3W2kSGm/JVQGEYTo ogM0yY4Kjr9Ou5rhWGhwpUBfBWn7UDBBRVGmYdI/d94mbDbzYyAlotPPLRBDw8lCPCmYZG2Pqj5 wiY9zqog52HYAezKpovueD9UH30S6PsaSkD0blrGX4Eh6mA4WrOq40xM/odGBDIHcbDAFw1HD5F yvNloISeNFougFUGPe4pcmjz2ezBLK6+FPQl2+a7RGpQj5KQcZCSiYzkf4TljjclGDirnu6FZZ6 YQRQw//47cniTy7K9pEsilTCC9LgsQKUiU0hIRQdRwfqlcti9uvdaiTw52QVDPsK0iHkgQk1Qs0 PfqoCDgcOTqWGiEt/nZbVO X-Google-Smtp-Source: AGHT+IFv850C8awUZtGHTOiLNICfiiJUYFGeJOYwfQRd2+Nt5FLiP4oGJKVYYX9fX1k/MFpwo7/ZRA== X-Received: by 2002:a05:600c:1ca4:b0:45d:f83b:96aa with SMTP id 5b1f17b1804b1-477c10c92d8mr469875015e9.7.1764607305455; Mon, 01 Dec 2025 08:41:45 -0800 (PST) Received: from ho-tower-lan.lan ([185.48.77.170]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-4791164d4f3sm255901275e9.13.2025.12.01.08.41.44 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 01 Dec 2025 08:41:45 -0800 (PST) From: James Clark Date: Mon, 01 Dec 2025 16:41:05 +0000 Subject: [PATCH 2/7] perf tools: 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: <20251201-james-perf-config-bits-v1-2-22ecbbf8007c@linaro.org> References: <20251201-james-perf-config-bits-v1-0-22ecbbf8007c@linaro.org> In-Reply-To: <20251201-james-perf-config-bits-v1-0-22ecbbf8007c@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.0 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 | 60 +++++++++++++++++++++++++++++++++++++----------= ---- 1 file changed, 44 insertions(+), 16 deletions(-) diff --git a/tools/perf/util/pmu.c b/tools/perf/util/pmu.c index 7a7db31be70d..c8968cddc0a9 100644 --- a/tools/perf/util/pmu.c +++ b/tools/perf/util/pmu.c @@ -1,5 +1,6 @@ // SPDX-License-Identifier: GPL-2.0 #include +#include #include #include #include @@ -1371,6 +1372,18 @@ bool evsel__is_aux_event(const struct evsel *evsel) return pmu && pmu->auxtrace; } =20 +static struct perf_pmu_format * +pmu_find_format(const struct list_head *formats, const char *name) +{ + struct perf_pmu_format *format; + + list_for_each_entry(format, formats, list) + if (!strcmp(format->name, name)) + return format; + + return NULL; +} + /* * Set @config_name to @val as long as the user hasn't already set or clea= red it * by passing a config term on the command line. @@ -1379,12 +1392,39 @@ bool evsel__is_aux_event(const struct evsel *evsel) * the bit pattern. It is shifted into position by this function, so to set * something to true, pass 1 for val rather than a pre shifted value. */ -#define field_prep(_mask, _val) (((_val) << (ffsll(_mask) - 1)) & (_mask)) 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; + + 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; @@ -1396,20 +1436,8 @@ void evsel__set_config_if_unset(struct perf_pmu *pmu= , struct evsel *evsel, return; =20 /* Otherwise replace it */ - evsel->core.attr.config &=3D ~bits; - evsel->core.attr.config |=3D field_prep(bits, val); -} - -static struct perf_pmu_format * -pmu_find_format(const struct list_head *formats, const char *name) -{ - struct perf_pmu_format *format; - - list_for_each_entry(format, formats, list) - if (!strcmp(format->name, name)) - return format; - - return NULL; + *vp &=3D ~bits; + *vp |=3D FIELD_PREP(bits, val); } =20 __u64 perf_pmu__format_bits(struct perf_pmu *pmu, const char *name) --=20 2.34.1 From nobody Mon Dec 1 20:56:07 2025 Received: from mail-wm1-f45.google.com (mail-wm1-f45.google.com [209.85.128.45]) (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 6F7A83358A3 for ; Mon, 1 Dec 2025 16:41:48 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.45 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1764607310; cv=none; b=HVCLmx9IojTkjBvPQ9aLFiyIhnxPfQazvftTUvqXGG5AGupSZwawesEy1M5m3J+d9LssC4/nOI6hmAmEsSl9H8aBglHww7PWfOs/VmmeNagPrbRfE67jxTMuIQ7Rh5UjKFkr0tjuVYo3SvG+vEqmOvTbMyCK+1YCL0EVBrIG2yg= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1764607310; c=relaxed/simple; bh=v7g+eJS8zgDENJl8497hl9tj8yvM2zLWTQWKh+fYsBw=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=oc/rf/1OExJy+m68o4xkOai4DnsIAyunOgi5CT6MU3/6z+mUVX7J04UgcXp42APZVGzVMqDXvQWSg7Y1uq5xWFsv82jG3urRGemDqTBJW/HZpqdFlei0BckMgkX+xwVxsLVZGFLzgzYIFdpUGJ/8BfS7LdTe7ger7OiHWfNYF5k= 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=SjqqXan+; arc=none smtp.client-ip=209.85.128.45 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="SjqqXan+" Received: by mail-wm1-f45.google.com with SMTP id 5b1f17b1804b1-477770019e4so36837085e9.3 for ; Mon, 01 Dec 2025 08:41:48 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1764607307; x=1765212107; 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=T/5T6lo313puZ/SVQF0jyUpNeCSlBosPw8CY0HUbC1E=; b=SjqqXan+P6pFlwYry25L8gAPCxe1+uiAcwa1xNRikjUmyUPbS7MgpfDgC3bDtwJEqd D991bXuMk6B9Shl0HvYs5fgGF0Yrn1UzPXRhghb8zDj6ZBNM9HOqIG45Ng14BWrl3q5S WQbGmnm6ksSxXsbQWziAJirA2mPhYeqxdGeiSrNBHMxDjeob/GygB0EOmU9xJDAf3Xnc ok07wnJHwmzIoHX7kl9YV9MGA03fUO1Rw1KlP+yZsxCdaRFW8wjZ9uWgRAtJBR52Eo/O hy/sbeBh6u9Kwi17Py2ErgAZxpaE5c7M8JSCkmDV117WjtXID9rRrDHJh3Kf49QqrWCd H8+w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1764607307; x=1765212107; 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=T/5T6lo313puZ/SVQF0jyUpNeCSlBosPw8CY0HUbC1E=; b=W+ishsaygdsvIRT0x4R2U4GkiI+CjDDkTn3s4AQj0JYZyEGySPhabvcgRutPl5rFnv OKR+9LgQzWO3CnOkUEQInORuUeUhzSwylQkXjv3GZMhgK8UAUVXzY0WJPoYFXolCkPH7 ooWlbH43a3uKxxYiAb1UwgO/RIgGD1ItGdbG8GTgiO1Vlt4m9Q5BGC98sRx85n1qUKBE caxlGuNXY7fyeLpi12flnx9NrHypwiZuUrs7ckAh7OILFgDGnvg4Lmbqcb+8agIm62ZZ MfLacjLouC4c1dXowM4p8UmCiFhKOCB+XQxHxk5DRboCmCqZbDF9IiCp8qdJTcnQZw5z VsRA== X-Forwarded-Encrypted: i=1; AJvYcCXQpckEXutxZn/ObNRldoxsYns0UGhwNx2DX97EebJihstXNBId2kYbIBW0YuGKKuTFTWN9806TkxDTsBo=@vger.kernel.org X-Gm-Message-State: AOJu0Ywds3BxhzUN1OkeSgX2elZ65lgBJEFloXIU0VwgkUiGkU5oywC7 OJSFbfT2//+bCYuLe0eGbuo7/cXZVdd2LXAzMV2Sc6t6aTInZbOhfxXk8edHRD2ExdzTN8BsIZ9 YVVtg X-Gm-Gg: ASbGncsenW8qWpT7NjNwAMm+H8t6g+QWA0iexWzkQh0/FR/D8QgnepKZlfizoCVocEh i1eAtUP1OdEoIBFRODK8xyYJMXvd6QmQek4olJbSWPNKU/+Y3zkcx/OE06mi0VXJqyIn/Y7y43S SBoGA4MVpIPl/aULU3uVSHSj7qWMTKTOuyRakjRElJOCKDU58Yvg9OS6LQSaC4LzarQrY8IWYZs YlO7cjwzFnXsjqC4PKN7CP1KA/+nNMJ72XXP8Z2oMVmsEzyk0VPnvSzjuP6Mq5MHsaali52cW3S Cu2wVMOl19wtRMIM+yOvYq5QcpsYZR3tNE+i50f0/rKchn9MhhGyBulJAusF9BjPXZZ2GC4PAkk if4Pkfphn+zgz7Sy0p2B7MtdSvldyPfR//Xq3QQMfilleiPWy5CaR/SGmPjDjqfjPUyGTC4f1vQ ZS8cWKwIk1HgzopBnPSWjm X-Google-Smtp-Source: AGHT+IEE3voa2OXjkQohxBlLJHCO8n9F+sDfMVLCHbry/3Vx/3/QnGHskYaS+QvFk8/708DyHCFFKQ== X-Received: by 2002:a05:600c:3587:b0:471:131f:85aa with SMTP id 5b1f17b1804b1-47904aecfd9mr268721295e9.13.1764607306655; Mon, 01 Dec 2025 08:41:46 -0800 (PST) Received: from ho-tower-lan.lan ([185.48.77.170]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-4791164d4f3sm255901275e9.13.2025.12.01.08.41.45 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 01 Dec 2025 08:41:46 -0800 (PST) From: James Clark Date: Mon, 01 Dec 2025 16:41:06 +0000 Subject: [PATCH 3/7] perf cs-etm: Make a helper to find the Coresight evsel 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: <20251201-james-perf-config-bits-v1-3-22ecbbf8007c@linaro.org> References: <20251201-james-perf-config-bits-v1-0-22ecbbf8007c@linaro.org> In-Reply-To: <20251201-james-perf-config-bits-v1-0-22ecbbf8007c@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.0 This pattern occurs a few times and we'll add another one later, so add a helper function for it. Signed-off-by: James Clark --- tools/perf/arch/arm/util/cs-etm.c | 50 +++++++++++++++++++++--------------= ---- 1 file changed, 27 insertions(+), 23 deletions(-) diff --git a/tools/perf/arch/arm/util/cs-etm.c b/tools/perf/arch/arm/util/c= s-etm.c index ea891d12f8f4..22c6272e8c36 100644 --- a/tools/perf/arch/arm/util/cs-etm.c +++ b/tools/perf/arch/arm/util/cs-etm.c @@ -302,6 +302,19 @@ static int cs_etm_set_sink_attr(struct perf_pmu *pmu, return 0; } =20 +static struct evsel *cs_etm_get_evsel(struct evlist *evlist, + struct perf_pmu *cs_etm_pmu) +{ + struct evsel *evsel; + + evlist__for_each_entry(evlist, evsel) { + if (evsel->core.attr.type =3D=3D cs_etm_pmu->type) + return evsel; + } + + return NULL; +} + static int cs_etm_recording_options(struct auxtrace_record *itr, struct evlist *evlist, struct record_opts *opts) @@ -476,29 +489,21 @@ static int cs_etm_recording_options(struct auxtrace_r= ecord *itr, =20 static u64 cs_etm_get_config(struct auxtrace_record *itr) { - u64 config =3D 0; struct cs_etm_recording *ptr =3D container_of(itr, struct cs_etm_recording, itr); struct perf_pmu *cs_etm_pmu =3D ptr->cs_etm_pmu; struct evlist *evlist =3D ptr->evlist; - struct evsel *evsel; + struct evsel *evsel =3D cs_etm_get_evsel(evlist, cs_etm_pmu); =20 - evlist__for_each_entry(evlist, evsel) { - if (evsel->core.attr.type =3D=3D cs_etm_pmu->type) { - /* - * Variable perf_event_attr::config is assigned to - * ETMv3/PTM. The bit fields have been made to match - * the ETMv3.5 ETRMCR register specification. See the - * PMU_FORMAT_ATTR() declarations in - * drivers/hwtracing/coresight/coresight-perf.c for - * details. - */ - config =3D evsel->core.attr.config; - break; - } - } - - return config; + /* + * Variable perf_event_attr::config is assigned to + * ETMv3/PTM. The bit fields have been made to match + * the ETMv3.5 ETRMCR register specification. See the + * PMU_FORMAT_ATTR() declarations in + * drivers/hwtracing/coresight/coresight-perf.c for + * details. + */ + return evsel ? evsel->core.attr.config : 0; } =20 #ifndef BIT @@ -832,12 +837,11 @@ static int cs_etm_snapshot_start(struct auxtrace_reco= rd *itr) { struct cs_etm_recording *ptr =3D container_of(itr, struct cs_etm_recording, itr); - struct evsel *evsel; + struct evsel *evsel =3D cs_etm_get_evsel(ptr->evlist, ptr->cs_etm_pmu); + + if (evsel) + return evsel__disable(evsel); =20 - evlist__for_each_entry(ptr->evlist, evsel) { - if (evsel->core.attr.type =3D=3D ptr->cs_etm_pmu->type) - return evsel__disable(evsel); - } return -EINVAL; } =20 --=20 2.34.1 From nobody Mon Dec 1 20:56:07 2025 Received: from mail-wm1-f52.google.com (mail-wm1-f52.google.com [209.85.128.52]) (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 AAF7C3358C0 for ; Mon, 1 Dec 2025 16:41:49 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.52 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1764607311; cv=none; b=usDVx6zKt6j8obLffKQo1JwOfEsUfpJHzMmZb1XDkKTuUjxICUh5eHpz+DjDhvLyGP4xbnwbW39d2rM6p+ncmHbZCKVJNnziYScJKiTqZIMiRpgCBCSvTVgH8hPNMcHcEuk0iboIySdCa/A16Ph64mq+Fw+sh2lJpQqdbchlhoI= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1764607311; c=relaxed/simple; bh=SLaYdEHzakF3Enk+K7jxOiLbeMI4gzx9C/7lLRmhoNw=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=nvYdG/lqOtJ9MxOCgiIf1zkEu22uu6B23hC6fMlqJ8h7D9LzotrEfC192mKw06O/qbH9fCh1NGPOl1G6K1fUPNGMmWn5w8zYPASpOmx918PjCKb1TDhSttVGPyjuGrNqqpZz1ordImjlWwtFLRtkh4C4w3z6QM3UuHlQK4YWinM= 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=oHx9GypC; arc=none smtp.client-ip=209.85.128.52 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="oHx9GypC" Received: by mail-wm1-f52.google.com with SMTP id 5b1f17b1804b1-477bf34f5f5so28748465e9.0 for ; Mon, 01 Dec 2025 08:41:49 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1764607308; x=1765212108; 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=zABew4dqD3IbbU1tyEn5D3f43+dljvZpz0Ak8Px/2GQ=; b=oHx9GypCoLmeOj6LIKUPjtJWrIB/4TU0QXWpk3PAhBo1RyX2VnxABhTekpiOKYVDQz UR+U3vnRuXBU2fBpges4cva9KFWnJD6++L3eHBfp4KtvElIvPPr0YfxXn03fWfMsfNnU ++TA8qiAa4hNV/J/58ftq8SLu201wYikiwXCSM97RRnjl8HewpA4PS583HdP1QiSrYsP hLZDzF9x9V8x993nDNcvyxkmUFZxyHdMI1hHW0aZDQPCud5RmgvXzBVwvLGqBXHV99dX 3Ve5xeCyu/ARWWNCHpxQY0Jrq8b0hmecTQsvmubO4NgUCsdjf7tOsW2PtHw6ItVhQ38A qbeg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1764607308; x=1765212108; 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=zABew4dqD3IbbU1tyEn5D3f43+dljvZpz0Ak8Px/2GQ=; b=fySkI2oHqrUrpwzdoMGr+5Fj1cYrce8rK2SdfhU6xsHiIvgLJHmhzR5ezsEO3gFG1L oAvSJvT7LE3Ltriw5e7RN4C+WiZQrKlQFs3MU5X7PTeKjuT80Y6nDAAS/yQ3d8fe0hel vfJrGbanVHGOdvetlYR9OvZL1LZife+NSG4Osj2OTlq2JD1bIp1Ui+eHj8L4GQ3nDSZs tyjn8NOmaS219kMwXtbW6KvtqtrjGOkWHHp2K3dhg0yiGoVDMNRX6jE3tXkdhhqKn3ma o8ePulfB8gWgP02PU5CcdHB/mzEcC0X6/P+NrIluWDRS8a5OAeg2VKmLpq3X3UvBpcD2 Qk1Q== X-Forwarded-Encrypted: i=1; AJvYcCUPkcvowyHP46cWZSgIwwQh6gpZlGCzftYA2RvvT+JWvAV5d2EaUZfeMy1Zs3eXJ34EqAxHECLIEL7i5sw=@vger.kernel.org X-Gm-Message-State: AOJu0Yw0dvt0ZvbqKSWEywklYeYS5TWcFTuiNkDNKPue0sLhgUx9OZZ2 /s+ukH+ZgIfLCMUIkdjfuVDQIqlChJBfevKMQAdh366IewxYMexful09NaujCgfMMY4= X-Gm-Gg: ASbGncuH9E42qT5/FsgUS+d1iWx7fD363zfTxNF67Xkp3gGN46qpi4TiySZ/uIkq7v/ Jt62osC7EyBLya0/lyaVwGMnTvjlPEJ7rSun+smbDcGbeuK1RVG/yMr1VVXwVt5CnYwPq+6HlN1 7vS2ZYPg+SZI5e6gLDSFeVoZkRa653jC3wj5G6oNw9WtIJwDlaugTHIgdZ5ryXlISAWBT0Dh9VU wYacNWvbmpVZl6XvJii/tuKHgNP4cgLtSROGbIuEOlmT4TbSOIkTeQKa6hnqYmXLgmIZ4nmZ2Ny aagdLcW9X9h31wq1eziFS7NsRCK1CPelUB7wHPErSHSF58Z/H1BjW0O64/PRNhQeM/N2faMHJZG 6RdAbN4Fpdd7tXLl/XsiirFN5mmnn2hpt0FqnFq3fuHpkM/GSoEk99hPH2FBSWpPEa9f0j+m55o b030zzgfO0uLbID9jlGrbsi7Lpu/N45gw= X-Google-Smtp-Source: AGHT+IH4qlSHOHlP9FoC3pEYptApY3iIhEO5qtBZvowYnB5XerIVCpLZUtOXG+kLqnlpOo12ry8aAw== X-Received: by 2002:a05:600c:4685:b0:477:5b0a:e616 with SMTP id 5b1f17b1804b1-47904acaf28mr248918075e9.5.1764607307979; Mon, 01 Dec 2025 08:41:47 -0800 (PST) Received: from ho-tower-lan.lan ([185.48.77.170]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-4791164d4f3sm255901275e9.13.2025.12.01.08.41.46 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 01 Dec 2025 08:41:47 -0800 (PST) From: James Clark Date: Mon, 01 Dec 2025 16:41:07 +0000 Subject: [PATCH 4/7] perf cs-etm: Don't use hard coded config bits when setting up ETMCR 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: <20251201-james-perf-config-bits-v1-4-22ecbbf8007c@linaro.org> References: <20251201-james-perf-config-bits-v1-0-22ecbbf8007c@linaro.org> In-Reply-To: <20251201-james-perf-config-bits-v1-0-22ecbbf8007c@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.0 Perf only looks at attr.config when determining what was programmed into ETMCR. These bits could theoretically be in any of the config fields. Add a generic helper to find the value of any named format field in any config field and then use it to get the attributes relevant to ETMCR. The kernel will also stop publishing the ETMCR register bits in a header [1] so preempt that by defining them here. [1]: https://lore.kernel.org/linux-arm-kernel/20251128-james-cs-syncfreq-v8= -10-4d319764cc58@linaro.org/ Signed-off-by: James Clark --- tools/perf/arch/arm/util/cs-etm.c | 35 ++++++++++++++++++++++++++++++++++- tools/perf/util/evsel.h | 2 ++ tools/perf/util/pmu.c | 33 +++++++++++++++++++++++++++++++++ 3 files changed, 69 insertions(+), 1 deletion(-) diff --git a/tools/perf/arch/arm/util/cs-etm.c b/tools/perf/arch/arm/util/c= s-etm.c index 22c6272e8c36..414cafb21c98 100644 --- a/tools/perf/arch/arm/util/cs-etm.c +++ b/tools/perf/arch/arm/util/cs-etm.c @@ -68,6 +68,12 @@ static const char * const metadata_ete_ro[] =3D { =20 enum cs_etm_version { CS_NOT_PRESENT, CS_ETMV3, CS_ETMV4, CS_ETE }; =20 + +/* ETMv3 ETMCR register bits */ +#define ETMCR_CYC_ACC BIT(12) +#define ETMCR_TIMESTAMP_EN BIT(28) +#define ETMCR_RETURN_STACK BIT(29) + static bool cs_etm_is_ete(struct perf_pmu *cs_etm_pmu, struct perf_cpu cpu= ); static int cs_etm_get_ro(struct perf_pmu *pmu, struct perf_cpu cpu, const = char *path, __u64 *val); static bool cs_etm_pmu_path_exists(struct perf_pmu *pmu, struct perf_cpu c= pu, const char *path); @@ -487,6 +493,33 @@ static int cs_etm_recording_options(struct auxtrace_re= cord *itr, return err; } =20 +static u64 cs_etm_guess_etmcr(struct auxtrace_record *itr) +{ + struct cs_etm_recording *ptr =3D + container_of(itr, struct cs_etm_recording, itr); + struct perf_pmu *cs_etm_pmu =3D ptr->cs_etm_pmu; + struct evsel *evsel =3D cs_etm_get_evsel(ptr->evlist, cs_etm_pmu); + u64 etmcr =3D 0; + u64 val; + + if (!evsel) + return 0; + + /* + * Roughly guess what the kernel programmed into ETMCR based on + * what options the event was opened with. This doesn't have to be + * complete or 100% accurate, not all bits used by OpenCSD anyway. + */ + if (!evsel__get_config_val(cs_etm_pmu, evsel, "cycacc", &val) && val) + etmcr |=3D ETMCR_CYC_ACC; + if (!evsel__get_config_val(cs_etm_pmu, evsel, "timestamp", &val) && val) + etmcr |=3D ETMCR_TIMESTAMP_EN; + if (!evsel__get_config_val(cs_etm_pmu, evsel, "retstack", &val) && val) + etmcr |=3D ETMCR_RETURN_STACK; + + return etmcr; +} + static u64 cs_etm_get_config(struct auxtrace_record *itr) { struct cs_etm_recording *ptr =3D @@ -746,7 +779,7 @@ static void cs_etm_get_metadata(struct perf_cpu cpu, u3= 2 *offset, case CS_ETMV3: magic =3D __perf_cs_etmv3_magic; /* Get configuration register */ - info->priv[*offset + CS_ETM_ETMCR] =3D cs_etm_get_config(itr); + info->priv[*offset + CS_ETM_ETMCR] =3D cs_etm_guess_etmcr(itr); /* traceID set to legacy value in case new perf running on old system */ info->priv[*offset + CS_ETM_ETMTRACEIDR] =3D cs_etm_get_legacy_trace_id(= cpu); /* Get read-only information from sysFS */ diff --git a/tools/perf/util/evsel.h b/tools/perf/util/evsel.h index 3ae4ac8f9a37..1c567cc70a82 100644 --- a/tools/perf/util/evsel.h +++ b/tools/perf/util/evsel.h @@ -574,6 +574,8 @@ void evsel__uniquify_counter(struct evsel *counter); ((((src) >> (pos)) & ((1ull << (size)) - 1)) << (63 - ((pos) + (size) - 1= ))) =20 u64 evsel__bitfield_swap_branch_flags(u64 value); +int evsel__get_config_val(struct perf_pmu *pmu, struct evsel *evsel, + const char *config_name, u64 *val); void evsel__set_config_if_unset(struct perf_pmu *pmu, struct evsel *evsel, const char *config_name, u64 val); =20 diff --git a/tools/perf/util/pmu.c b/tools/perf/util/pmu.c index c8968cddc0a9..5501b0230097 100644 --- a/tools/perf/util/pmu.c +++ b/tools/perf/util/pmu.c @@ -1384,6 +1384,39 @@ pmu_find_format(const struct list_head *formats, con= st char *name) return NULL; } =20 +int evsel__get_config_val(struct perf_pmu *pmu, struct evsel *evsel, + const char *config_name, u64 *val) +{ + struct perf_pmu_format *format =3D pmu_find_format(&pmu->format, config_n= ame); + u64 bits =3D perf_pmu__format_bits(pmu, config_name); + + if (!format || !bits) { + pr_err("Unknown/empty format name: %s\n", config_name); + return -EINVAL; + } + + switch (format->value) { + case PERF_PMU_FORMAT_VALUE_CONFIG: + *val =3D FIELD_GET(bits, evsel->core.attr.config); + return 0; + case PERF_PMU_FORMAT_VALUE_CONFIG1: + *val =3D FIELD_GET(bits, evsel->core.attr.config1); + return 0; + case PERF_PMU_FORMAT_VALUE_CONFIG2: + *val =3D FIELD_GET(bits, evsel->core.attr.config2); + return 0; + case PERF_PMU_FORMAT_VALUE_CONFIG3: + *val =3D FIELD_GET(bits, evsel->core.attr.config3); + return 0; + case PERF_PMU_FORMAT_VALUE_CONFIG4: + *val =3D FIELD_GET(bits, evsel->core.attr.config4); + return 0; + default: + pr_err("Unknown format value: %d\n", format->value); + return -EINVAL; + } +} + /* * Set @config_name to @val as long as the user hasn't already set or clea= red it * by passing a config term on the command line. --=20 2.34.1 From nobody Mon Dec 1 20:56:07 2025 Received: from mail-wm1-f43.google.com (mail-wm1-f43.google.com [209.85.128.43]) (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 A3756335BBB for ; Mon, 1 Dec 2025 16:41:51 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.43 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1764607313; cv=none; b=gKtonTJ6xbj9YL06HhwxhswJK0GFgUtfk0zCFjzytVII51D1IRTklpc3jgQJGf5/0TfhCmZM/OUqu7ifX/lg0jzm/E89n0J3WMFrzeeUuqF4EJ/ntqJNDT1LU+30mux4kDYbmf6z3d+K+0nZw2HMw6wTPFcwmEtvlG8qZYRbkPg= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1764607313; c=relaxed/simple; bh=FcfDph9akWAhpmOmSa2BIV+EJ7RMAeS7smVRcRQOMOY=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=GXLfdvgSxH1bWXFQGQl8g6fT9QP2K7KVeV4SXOPDHjFOldIzwCpYsIjijeCkNi4nSwIVizcShdz6aJPRDuxHycnyw3Q+/VSpd14DBLX8PLwzMfTidmWLYsUFsSocQxvi3mrEUHwF07DlTtdlFag7Vi/kQxJMfgqDta3mBYBpSFw= 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=RFVAmMy3; arc=none smtp.client-ip=209.85.128.43 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="RFVAmMy3" Received: by mail-wm1-f43.google.com with SMTP id 5b1f17b1804b1-47118259fd8so42465345e9.3 for ; Mon, 01 Dec 2025 08:41:51 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1764607310; x=1765212110; 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=wCK5jvjqS1OJSbH7Q8M4qbQBHOcn0cDJFYSc0X1U4g8=; b=RFVAmMy3Zw5gFcTpZJ4nDsuwIYs3DFnh5tp8Ut2Wl80GWOjHG2tqK7705lDuLhtdtR WapAhGhGqYumlKmVEMjHOH1Qwxdrb9g/xlUmiTNChV/yMNJFOvDIgYoE4cx+L1n9Y16N 0FHCNZBJnS+M7RJ+EQ92uQlxDgwsx8S0SRPFshr+eUAC/CGGv3jBDRTz05gW/iexOCJj s9Qea/tQehsl6VWGVqju+PqD8g0Yj5ZWYJqAR31U/2ywbIO7qs01f/sPHwL8yMHKyPyD IunPRUu98jIiOfmMc06A6l+m/WYL2yRdDpcFb9+EfjkQOyESu3QRPUzpLgI9zHNA0+oQ ESJw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1764607310; x=1765212110; 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=wCK5jvjqS1OJSbH7Q8M4qbQBHOcn0cDJFYSc0X1U4g8=; b=Daq2sa1SdJ/AcltrCMPahnrQZrl+lRAxAePWHYjFT6TXmEFhF4rx8ThGWhp7GvQxSm PqpDO6BSDNZf+wyuba1XPMKc/eEnCD0T8WtsihfapG+Kd0sInGrUBchrYBBH6/JhuQNZ zIt4EK0MwgSeRUjbXsHf1v+esstF8fyJjnbKH9sCp+2Jj8A2yNjQjVo+6sjHaHW58keq bFvW+/SMR5gP8/P0X1C7f9qABMysGXTLadns2eDQIZSihtQfetOnia5NEbalt8hHwSZM 3+Imo6qMXNTP8i6AiHIC77zoa3PEObjFTv5OGwRZNzZAqVBxHls8lBcRtPD5tTsi+ufr Q2uw== X-Forwarded-Encrypted: i=1; AJvYcCUnv168gA5QY8WGkFfPgOKh3VDu1d59CkN9XLIP0JxzEzbqLm6ZuhQqU5yi9B+kc2tFybfGe4V8vl6N2R4=@vger.kernel.org X-Gm-Message-State: AOJu0YznNgKQyzen3Z/wLMLL2dHtEvY+eLLaL59zoeJzFDuMCr/Er0sz Cs0yD/6mTa24NrdZAHnwTYI77WsXg2pxupVJlY8om/n0a8mqG8IypTS1LxYdhCOY06E= X-Gm-Gg: ASbGncs8GkYjixrkStnH4FlDYvWBpeiYB5ofbbuB3wKuhGZe0dHclpx8qVBpDELSuwp +x4pD+UAKvvJfN93t6PkpCdydioqWHrdAZszlHJGgoMOfgFyLSjdYfikna6ZdAbcW0YjMTtTw0V 4TVcuo/GbeGFq9sLCJvXhkShGqR23uKV5MeLQmRuyM++7e/IiFm/DZFyDpPeorXNc+fUcVqZjEq LIJokox4oGoFlVCzQOmNJze8ykzRgBIL5c8y3RM6azKT7UraBXDKyFMNojwUBkGE67JZb9VOWcz zC5S2/oVGk0p8Z16hnco8Dp80+Md2IxeRb7UDtLHyVF64LNLVGzB8SiolvHNJjhEnUYjusOcBEz 46tmC6t+wHQLwTsHaKMGJsIdcFBrCmUA93uZuLKMa7vWSgNnWDK/z5KpnBIwDLqiuTnYUA8uBmi BXie/EM+XwfQg91fF/V1p2 X-Google-Smtp-Source: AGHT+IEP/tNXfSvGkzJDnroSc7cg8nQooiX3N1v7Fw5uWyfNSqPrA6fMWwoGMhgB5DjA5qOUhENmxw== X-Received: by 2002:a05:600c:1c82:b0:477:9c73:268b with SMTP id 5b1f17b1804b1-47904b2b36amr283793595e9.33.1764607309963; Mon, 01 Dec 2025 08:41:49 -0800 (PST) Received: from ho-tower-lan.lan ([185.48.77.170]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-4791164d4f3sm255901275e9.13.2025.12.01.08.41.48 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 01 Dec 2025 08:41:49 -0800 (PST) From: James Clark Date: Mon, 01 Dec 2025 16:41:08 +0000 Subject: [PATCH 5/7] perf cs-etm: Don't use hard coded config bits when setting up TRCCONFIGR 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: <20251201-james-perf-config-bits-v1-5-22ecbbf8007c@linaro.org> References: <20251201-james-perf-config-bits-v1-0-22ecbbf8007c@linaro.org> In-Reply-To: <20251201-james-perf-config-bits-v1-0-22ecbbf8007c@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.0 Perf only looks at attr.config when determining what was programmed into TRCCONFIGR. These bits could theoretically be in any of the config fields. Use the evsel__get_config_val() helper so it's agnostic to which config field they are in. The kernel will also stop publishing the TRCCONFIGR register bits in a header [1] so preempt that by defining them here. [1]: https://lore.kernel.org/linux-arm-kernel/20251128-james-cs-syncfreq-v8= -10-4d319764cc58@linaro.org/ Signed-off-by: James Clark --- tools/perf/arch/arm/util/cs-etm.c | 79 +++++++++++++++++------------------= ---- 1 file changed, 34 insertions(+), 45 deletions(-) diff --git a/tools/perf/arch/arm/util/cs-etm.c b/tools/perf/arch/arm/util/c= s-etm.c index 414cafb21c98..51ca8fa66ef8 100644 --- a/tools/perf/arch/arm/util/cs-etm.c +++ b/tools/perf/arch/arm/util/cs-etm.c @@ -68,6 +68,14 @@ static const char * const metadata_ete_ro[] =3D { =20 enum cs_etm_version { CS_NOT_PRESENT, CS_ETMV3, CS_ETMV4, CS_ETE }; =20 +/* ETMv4 CONFIGR register bits */ +#define TRCCONFIGR_BB BIT(3) +#define TRCCONFIGR_CCI BIT(4) +#define TRCCONFIGR_CID BIT(6) +#define TRCCONFIGR_VMID BIT(7) +#define TRCCONFIGR_TS BIT(11) +#define TRCCONFIGR_RS BIT(12) +#define TRCCONFIGR_VMIDOPT BIT(15) =20 /* ETMv3 ETMCR register bits */ #define ETMCR_CYC_ACC BIT(12) @@ -520,56 +528,37 @@ static u64 cs_etm_guess_etmcr(struct auxtrace_record = *itr) return etmcr; } =20 -static u64 cs_etm_get_config(struct auxtrace_record *itr) +static u64 cs_etmv4_guess_trcconfigr(struct auxtrace_record *itr) { + u64 trcconfigr =3D 0; struct cs_etm_recording *ptr =3D - container_of(itr, struct cs_etm_recording, itr); + container_of(itr, struct cs_etm_recording, itr); struct perf_pmu *cs_etm_pmu =3D ptr->cs_etm_pmu; - struct evlist *evlist =3D ptr->evlist; - struct evsel *evsel =3D cs_etm_get_evsel(evlist, cs_etm_pmu); - - /* - * Variable perf_event_attr::config is assigned to - * ETMv3/PTM. The bit fields have been made to match - * the ETMv3.5 ETRMCR register specification. See the - * PMU_FORMAT_ATTR() declarations in - * drivers/hwtracing/coresight/coresight-perf.c for - * details. - */ - return evsel ? evsel->core.attr.config : 0; -} - -#ifndef BIT -#define BIT(N) (1UL << (N)) -#endif + struct evsel *evsel =3D cs_etm_get_evsel(ptr->evlist, cs_etm_pmu); + u64 val; =20 -static u64 cs_etmv4_get_config(struct auxtrace_record *itr) -{ - u64 config =3D 0; - u64 config_opts =3D 0; + if (!evsel) + return 0; =20 /* - * The perf event variable config bits represent both - * the command line options and register programming - * bits in ETMv3/PTM. For ETMv4 we must remap options - * to real bits + * Roughly guess what the kernel programmed into TRCCONFIGR based on + * what options the event was opened with. This doesn't have to be + * complete or 100% accurate, not all bits used by OpenCSD anyway. */ - config_opts =3D cs_etm_get_config(itr); - if (config_opts & BIT(ETM_OPT_CYCACC)) - config |=3D BIT(ETM4_CFG_BIT_CYCACC); - if (config_opts & BIT(ETM_OPT_CTXTID)) - config |=3D BIT(ETM4_CFG_BIT_CTXTID); - if (config_opts & BIT(ETM_OPT_TS)) - config |=3D BIT(ETM4_CFG_BIT_TS); - if (config_opts & BIT(ETM_OPT_RETSTK)) - config |=3D BIT(ETM4_CFG_BIT_RETSTK); - if (config_opts & BIT(ETM_OPT_CTXTID2)) - config |=3D BIT(ETM4_CFG_BIT_VMID) | - BIT(ETM4_CFG_BIT_VMID_OPT); - if (config_opts & BIT(ETM_OPT_BRANCH_BROADCAST)) - config |=3D BIT(ETM4_CFG_BIT_BB); - - return config; + if (!evsel__get_config_val(cs_etm_pmu, evsel, "cycacc", &val) && val) + trcconfigr |=3D TRCCONFIGR_CCI; + if (!evsel__get_config_val(cs_etm_pmu, evsel, "contextid1", &val) && val) + trcconfigr |=3D TRCCONFIGR_CID; + if (!evsel__get_config_val(cs_etm_pmu, evsel, "timestamp", &val) && val) + trcconfigr |=3D TRCCONFIGR_TS; + if (!evsel__get_config_val(cs_etm_pmu, evsel, "retstack", &val) && val) + trcconfigr |=3D TRCCONFIGR_RS; + if (!evsel__get_config_val(cs_etm_pmu, evsel, "contextid2", &val) && val) + trcconfigr |=3D TRCCONFIGR_VMID | TRCCONFIGR_VMIDOPT; + if (!evsel__get_config_val(cs_etm_pmu, evsel, "branch_broadcast", &val) &= & val) + trcconfigr |=3D TRCCONFIGR_BB; + + return trcconfigr; } =20 static size_t @@ -691,7 +680,7 @@ static void cs_etm_save_etmv4_header(__u64 data[], stru= ct auxtrace_record *itr, struct perf_pmu *cs_etm_pmu =3D ptr->cs_etm_pmu; =20 /* Get trace configuration register */ - data[CS_ETMV4_TRCCONFIGR] =3D cs_etmv4_get_config(itr); + data[CS_ETMV4_TRCCONFIGR] =3D cs_etmv4_guess_trcconfigr(itr); /* traceID set to legacy version, in case new perf running on older syste= m */ data[CS_ETMV4_TRCTRACEIDR] =3D cs_etm_get_legacy_trace_id(cpu); =20 @@ -723,7 +712,7 @@ static void cs_etm_save_ete_header(__u64 data[], struct= auxtrace_record *itr, st struct perf_pmu *cs_etm_pmu =3D ptr->cs_etm_pmu; =20 /* Get trace configuration register */ - data[CS_ETE_TRCCONFIGR] =3D cs_etmv4_get_config(itr); + data[CS_ETE_TRCCONFIGR] =3D cs_etmv4_guess_trcconfigr(itr); /* traceID set to legacy version, in case new perf running on older syste= m */ data[CS_ETE_TRCTRACEIDR] =3D cs_etm_get_legacy_trace_id(cpu); =20 --=20 2.34.1 From nobody Mon Dec 1 20:56:07 2025 Received: from mail-wm1-f46.google.com (mail-wm1-f46.google.com [209.85.128.46]) (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 DD0DA336EE2 for ; Mon, 1 Dec 2025 16:41:53 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.46 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1764607315; cv=none; b=j42A2z7uW7kkjcB/e6ZQF2KAdAadXM2pjnW9RKe2tqHLcPZefkhiRMQaP6uUSISKh8NWdRSA8wZj0ttVP9xRPbwb/SMlugcLz5stZnx5CQrxpMJFKbi6zOeuFlZG4Vux1Y5PhciMiDM1mVG3lUNMMarHJiLqMTso00SWQAsw9Ng= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1764607315; c=relaxed/simple; bh=6J8uBrrUyjtu+YlsylOUKYoPIhBIrTUDwfva8KvLpCk=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=OSVHzi4nOb9SVvR3q6gbOL2n4bg6ljgnQHzEVsx1ogPMmFBUO60PEMvedbT8GdciuhG2Lk+w9OnIiw5vfWNd9mfOGSQlmUSHaBQuQy1knFd1SJlVpJJVnl2MaxsCjsTdCns5Oh/QtmZO7UXxydruJ+kxSq+vhX0SECtlBuOhpR4= 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=k57PuznO; arc=none smtp.client-ip=209.85.128.46 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="k57PuznO" Received: by mail-wm1-f46.google.com with SMTP id 5b1f17b1804b1-47775fb6c56so40474115e9.1 for ; Mon, 01 Dec 2025 08:41:53 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1764607312; x=1765212112; 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=cKUhf7S/zq7XInwoT4BCbYa77L5aJsIA3yCxD0J3mf4=; b=k57PuznOjxo1un4C2tM7GWkMOMnvBu9S/MU8YqX4u/YT6NBAdh6um5Z/qiwsKgJts8 YrxhnMui7s3IOFCm894wbyqMr28h5FcEJbMyojo+AMMdFWx2Cnsy8/HlnBdXrwwxsKPM QGIQQ67OFYWEAqilowIdv0gDGTNYwiq8OJDIJDPH+RBP0GX4gY1KuKcUFxWC+pA0ybaZ wl+D9TvYkBYbLLVclZhBeaPoeZPu4IVUPN7XRBaUDK4J7PrgzZ0r4+WUwa8i3IBoKOtB TL6oWbCeHrEO4u9kdq/5EyM3F+mpOarZD3lA4amunBBsfrmzRpcqeBTBkog00igAJcg+ +wPQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1764607312; x=1765212112; 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=cKUhf7S/zq7XInwoT4BCbYa77L5aJsIA3yCxD0J3mf4=; b=S0cAZrw68zQLvjfEK1WNpvAzwq3L46EzFB478xS2oyY7eGTL2u+tvu5fT7CudYqhi8 iyIZs0Iymeg1q0jJhxyYi0W1xynBNsbF5CtG6LuLe///n6Ggfhj6XQDOudnlXlkzmqPn OvoH23NiFwmhJbTAE4NWb1yjJ998mb2JSHfOVf1BO8RXZLKeYFlFEF6sD3fQzT4fXJ6b kEIcs6Dhr3TC44yP9i5Jlr0p8ww+vd566dSWLrqMF8x0dZaXhZ64ELo++uJRL0uQrOrY fHY7dUFfi4gipfzu81w9HxLNW5cNzRm8AK19dkmCHdRsRTD3P7smNR6UxDMObtrgOTn6 5xTQ== X-Forwarded-Encrypted: i=1; AJvYcCUcwizmSpBCLuMjk5ATgeyvNegQnUcYOyiIIYcFu/W1Djnppe8Ue4BnF8+jUf5KerFok4c95yhQpHNKWrg=@vger.kernel.org X-Gm-Message-State: AOJu0YzPRBt4dpt/IB/n/yHU+yA0BE4ESCpFFzX4qZUv3T6aFkmhyw6w gvQK2HW19cMduC7+2V3k4YXgE1R5JOOrCmKxU96rRdt+2TJNHw7NIeVXAVYHtM4UepM= X-Gm-Gg: ASbGncvExqcRm/Z8H1EnJNo7HFjMZQ+dV4AkTrO3TAIRkiy0uq8iU7PZPTJRxaYWQ1E sTsB6yLTOggpLYsydYrFsL7g1DYIGb+KXTUuywa+PRpYil76Sbj8he9WZEOFd4VwbimuZlZfezy guV17kgBPG4Bo44crcCdSlJZlFZM/IFxsnS4GVyb49CKXkVa5Fq6Aditv36R3Eq+Vdu9wYHbQnf J3tvrUWpxqTV7fmfqdpWpQlSqHB5DUdh2WTChpEEgd4VhVtTxpc9CqPjaBloAKtdvTAxB+2RKwy 4QoEUDqauR3/0MXYSy3jlSY/dnIuvWWHa65RINRetEWo19KWaUjC1B79y06Qx7/+IwWNkvMjIwk dThg71Mf7GW3HnFD8Q9TTx4dJBq7YkK1Lm633kwLJRT1uyfLnksgoP7SZvPxgok35LIPaq37fsB 1Ha0recgvA/JiuXZh6CjKa X-Google-Smtp-Source: AGHT+IEY4wsnu5t7RxRAb+lDOwrk2bVHKf8Daq/FFegD/RxGqBitL9q7Mn4TMWImABd/xtV4q+gq4A== X-Received: by 2002:a05:600c:19ce:b0:477:79c7:8994 with SMTP id 5b1f17b1804b1-47904b25e63mr271343655e9.30.1764607311924; Mon, 01 Dec 2025 08:41:51 -0800 (PST) Received: from ho-tower-lan.lan ([185.48.77.170]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-4791164d4f3sm255901275e9.13.2025.12.01.08.41.50 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 01 Dec 2025 08:41:50 -0800 (PST) From: James Clark Date: Mon, 01 Dec 2025 16:41:09 +0000 Subject: [PATCH 6/7] perf cs-etm: Don't hard code config attribute when configuring the event 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: <20251201-james-perf-config-bits-v1-6-22ecbbf8007c@linaro.org> References: <20251201-james-perf-config-bits-v1-0-22ecbbf8007c@linaro.org> In-Reply-To: <20251201-james-perf-config-bits-v1-0-22ecbbf8007c@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.0 These instances of hard coded config attributes are used for configuring and validating the event options. Use the config attribute that's published by the driver by replacing the open coded operations with evsel__get_config_val() and evsel__set_config_if_unset(). Signed-off-by: James Clark --- tools/perf/arch/arm/util/cs-etm.c | 66 ++++++++++++++++++++++-------------= ---- 1 file changed, 37 insertions(+), 29 deletions(-) diff --git a/tools/perf/arch/arm/util/cs-etm.c b/tools/perf/arch/arm/util/c= s-etm.c index 51ca8fa66ef8..52e304584095 100644 --- a/tools/perf/arch/arm/util/cs-etm.c +++ b/tools/perf/arch/arm/util/cs-etm.c @@ -103,13 +103,20 @@ static int cs_etm_validate_context_id(struct perf_pmu= *cs_etm_pmu, struct evsel struct perf_cpu cpu) { int err; - __u64 val; - u64 contextid =3D evsel->core.attr.config & - (perf_pmu__format_bits(cs_etm_pmu, "contextid") | - perf_pmu__format_bits(cs_etm_pmu, "contextid1") | - perf_pmu__format_bits(cs_etm_pmu, "contextid2")); + u64 ctxt, ctxt1, ctxt2; + __u64 trcidr2; =20 - if (!contextid) + err =3D evsel__get_config_val(cs_etm_pmu, evsel, "contextid", &ctxt); + if (err) + return err; + err =3D evsel__get_config_val(cs_etm_pmu, evsel, "contextid1", &ctxt1); + if (err) + return err; + err =3D evsel__get_config_val(cs_etm_pmu, evsel, "contextid2", &ctxt2); + if (err) + return err; + + if (!ctxt && !ctxt1 && !ctxt2) return 0; =20 /* Not supported in etmv3 */ @@ -120,12 +127,11 @@ static int cs_etm_validate_context_id(struct perf_pmu= *cs_etm_pmu, struct evsel } =20 /* Get a handle on TRCIDR2 */ - err =3D cs_etm_get_ro(cs_etm_pmu, cpu, metadata_etmv4_ro[CS_ETMV4_TRCIDR2= ], &val); + err =3D cs_etm_get_ro(cs_etm_pmu, cpu, metadata_etmv4_ro[CS_ETMV4_TRCIDR2= ], &trcidr2); if (err) return err; =20 - if (contextid & - perf_pmu__format_bits(cs_etm_pmu, "contextid1")) { + if (ctxt1) { /* * TRCIDR2.CIDSIZE, bit [9-5], indicates whether contextID * tracing is supported: @@ -133,15 +139,14 @@ static int cs_etm_validate_context_id(struct perf_pmu= *cs_etm_pmu, struct evsel * 0b00100 Maximum of 32-bit Context ID size. * All other values are reserved. */ - if (BMVAL(val, 5, 9) !=3D 0x4) { + if (BMVAL(trcidr2, 5, 9) !=3D 0x4) { pr_err("%s: CONTEXTIDR_EL1 isn't supported, disable with %s/contextid1= =3D0/\n", CORESIGHT_ETM_PMU_NAME, CORESIGHT_ETM_PMU_NAME); return -EINVAL; } } =20 - if (contextid & - perf_pmu__format_bits(cs_etm_pmu, "contextid2")) { + if (ctxt2) { /* * TRCIDR2.VMIDOPT[30:29] !=3D 0 and * TRCIDR2.VMIDSIZE[14:10] =3D=3D 0b00100 (32bit virtual contextid) @@ -149,7 +154,7 @@ static int cs_etm_validate_context_id(struct perf_pmu *= cs_etm_pmu, struct evsel * virtual context id is < 32bit. * Any value of VMIDSIZE >=3D 4 (i.e, > 32bit) is fine for us. */ - if (!BMVAL(val, 29, 30) || BMVAL(val, 10, 14) < 4) { + if (!BMVAL(trcidr2, 29, 30) || BMVAL(trcidr2, 10, 14) < 4) { pr_err("%s: CONTEXTIDR_EL2 isn't supported, disable with %s/contextid2= =3D0/\n", CORESIGHT_ETM_PMU_NAME, CORESIGHT_ETM_PMU_NAME); return -EINVAL; @@ -163,10 +168,14 @@ static int cs_etm_validate_timestamp(struct perf_pmu = *cs_etm_pmu, struct evsel * struct perf_cpu cpu) { int err; - __u64 val; + u64 val; + __u64 trcidr0; =20 - if (!(evsel->core.attr.config & - perf_pmu__format_bits(cs_etm_pmu, "timestamp"))) + err =3D evsel__get_config_val(cs_etm_pmu, evsel, "timestamp", &val); + if (err) + return err; + + if (!val) return 0; =20 if (cs_etm_get_version(cs_etm_pmu, cpu) =3D=3D CS_ETMV3) { @@ -176,7 +185,7 @@ static int cs_etm_validate_timestamp(struct perf_pmu *c= s_etm_pmu, struct evsel * } =20 /* Get a handle on TRCIRD0 */ - err =3D cs_etm_get_ro(cs_etm_pmu, cpu, metadata_etmv4_ro[CS_ETMV4_TRCIDR0= ], &val); + err =3D cs_etm_get_ro(cs_etm_pmu, cpu, metadata_etmv4_ro[CS_ETMV4_TRCIDR0= ], &trcidr0); if (err) return err; =20 @@ -187,10 +196,9 @@ static int cs_etm_validate_timestamp(struct perf_pmu *= cs_etm_pmu, struct evsel * * 0b00110 Implementation supports a maximum timestamp of 48bits. * 0b01000 Implementation supports a maximum timestamp of 64bits. */ - val &=3D GENMASK(28, 24); - if (!val) { + trcidr0 &=3D GENMASK(28, 24); + if (!trcidr0) return -EINVAL; - } =20 return 0; } @@ -273,16 +281,20 @@ static int cs_etm_parse_snapshot_options(struct auxtr= ace_record *itr, return 0; } =20 +/* + * The sink name format "@sink_name" is used, lookup the sink by name to c= onvert + * to "sinkid=3Dsink_hash" format. + * + * If the user has already manually provided a hash then "sinkid" isn't + * overwritten. If neither are provided then the driver will pick the best= sink. + */ static int cs_etm_set_sink_attr(struct perf_pmu *pmu, struct evsel *evsel) { char msg[BUFSIZ], path[PATH_MAX], *sink; struct evsel_config_term *term; - int ret =3D -EINVAL; u32 hash; - - if (evsel->core.attr.config2 & GENMASK(31, 0)) - return 0; + int ret; =20 list_for_each_entry(term, &evsel->config_terms, list) { if (term->type !=3D EVSEL__CONFIG_TERM_DRV_CFG) @@ -305,14 +317,10 @@ static int cs_etm_set_sink_attr(struct perf_pmu *pmu, return ret; } =20 - evsel->core.attr.config2 |=3D hash; + evsel__set_config_if_unset(pmu, evsel, "sinkid", hash); return 0; } =20 - /* - * No sink was provided on the command line - allow the CoreSight - * system to look for a default - */ return 0; } =20 --=20 2.34.1 From nobody Mon Dec 1 20:56:07 2025 Received: from mail-wm1-f49.google.com (mail-wm1-f49.google.com [209.85.128.49]) (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 0F8FA336ED2 for ; Mon, 1 Dec 2025 16:41:54 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.49 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1764607317; cv=none; b=KZeb3E2foaIuyQk4DtQHvidnTFEIheWGszzBeKUJCz7mXeMg38a6d58ebVc9ex+IitfCcPAA/0kuOgImGS7zP7V08KImyDSnFfd/FNxJk0YX1Lc3ut8696TtEbIZi06HnuAsT40Yi0c2q1UFuvHsoTeMuLXOh3KTmj6G8ozAO24= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1764607317; c=relaxed/simple; bh=XDHLC1TToim0ot24UHTP8tg0u/f4uP/BR8HUnpB+CwQ=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=dP6nLXWMbY9NXyjD9n0ig5R4O6UGIDEqrYSq0PhZCnFMZ3yBsIOUFYNcik3CvD5/azOWoUVw34ZMT+xCuNAjUoAuAxBd3JIVlTeMhLpBtRz4WPy0DH4PccWCnh+Q9n6+TAkBHS7v5nig3XJsknPsa6w4fXwoKshqF2IbwN1T0Pc= 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=K5hMjO3t; arc=none smtp.client-ip=209.85.128.49 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="K5hMjO3t" Received: by mail-wm1-f49.google.com with SMTP id 5b1f17b1804b1-47796a837c7so31007595e9.0 for ; Mon, 01 Dec 2025 08:41:54 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1764607313; x=1765212113; 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=2GmRPB0jBQgoThlmGWejjg28u4BOouUoY2C6pZo+51c=; b=K5hMjO3tkDxSzE9NvXv86os0KLjJSgCCvpFMzEmDN+cVOz+7GYNULjgrFOrb99xJMw APiH1SK/iNiIcZjpJsjigs/qBMd1cVmXd8ECuRiBgZD/e5EgA9kcWqgI7ovShKvyLGMB 1ESiwPCjWm+2yNOfVQxkxgS9oUK3BOFzNdpFCUCau2yTNV8T89+FjmlGVqaJJwRYUebu b3ykGByTIVD6Dd9WtJPgRA3Rc5WoSQ0RsKtMBYqgXV2XMSQJAps4/bayjg+Inl4rhTbY wgtGQFmL9KJlUHsxZCW6Cy6mTlNRTaK1daO0IL+6mfzB2jQD25+GDhBWsY4EDhD3qM9Z Z9hw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1764607313; x=1765212113; 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=2GmRPB0jBQgoThlmGWejjg28u4BOouUoY2C6pZo+51c=; b=rqR8Pv485uPL+HSipjFgjt4xX4g/Si4cDSr7W1uBfJwpqw8ymWo4p5hEXdw3owgF2A wIGf4KC/8fHTse7HEpqtiPethDxASjEr471BAcV7ro33/jKAVjY7bYManLh1wmLRWJ6L lGHJf4hsWsURlBK/ofCcmTIj2MT8awoRf/InfqO90JRY7tyFmSTcvINwOIac2MP6UlHF gygSgFlAdTyddBEs6L4ze1GGti/dXWacwsmLa8iePufqRmC8X08rOq0X8/n7G90OaU51 V4adtCtNhseK7jpkw7fzJUnbRYBROZ76Ozb1CiiYKVF0Mr1dO3GVR8KrtSbVDFHkEt3q AQsg== X-Forwarded-Encrypted: i=1; AJvYcCXzQSRekB36ZhUsfYv+b9cKYIKi5V+PlCE7PgvEhB0c3+DmgbVgVeBgGG393bgZ1+ar9OcaR91T/p/y0jQ=@vger.kernel.org X-Gm-Message-State: AOJu0Yw9UtuFgKujcG8aISYSX7txNqCkU1nAuZHcUOH6lNvBiY+mV6Ou U35xvxAcLgICupnFjcTfaB+XXZ7i3CTOpRCS8xh0a4fWQid3guYUPJclVEtCCJUuPAQ= X-Gm-Gg: ASbGncsBUTV/NakmmfrRo+4wOSXAW7qU3gjWR+q2dA7W63ftto7uWbn6nOKE+2D6MBL 8+rB5liH9xy2ZDhAgTCSVb4HT4v8rdEw5K72ukvJMRG2p5qy5qHRzC1LI53g+a4zSl3eZ+QEkl1 UgJgV8RrgfeQnwoVorGeSyswMhMNcc8v8Fy2+8zb6dcm6x0ppO4JfpQeiyyb9hNjcVb1wRs5Bil HkrNBCRp20LiR2NrS/N29+X5c/ltxPb3ts7ub9vAPxkH2Jjg0F3CGVieE0EeZ6fx15O1WIf9bmZ hjQGFNFgrI9nWT27fQYTnD1OC2H8ZHXUt5yobk27u5gCtfa7si/nHd4JHKJrJ2rGLdxXI6lRZgG P2nJeDp+E8h8PXDo6zuab2zD23nSA3k9LWz/psaPxdCoMCL1qgvil4LgYUwIHqrdHi6qBYgYDVt +1cfBs4XHEjQPzaf0+zTXb X-Google-Smtp-Source: AGHT+IFPwkzUwt5EiRHYLaJ1366EfwcLCjCSX4vJLGbexn4dFtCnAICQ5GKj987Mcpxp3OuhbV/5PQ== X-Received: by 2002:a05:600c:4ed2:b0:477:55ce:f3c3 with SMTP id 5b1f17b1804b1-477c0162dd6mr377290195e9.5.1764607313297; Mon, 01 Dec 2025 08:41:53 -0800 (PST) Received: from ho-tower-lan.lan ([185.48.77.170]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-4791164d4f3sm255901275e9.13.2025.12.01.08.41.52 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 01 Dec 2025 08:41:52 -0800 (PST) From: James Clark Date: Mon, 01 Dec 2025 16:41:10 +0000 Subject: [PATCH 7/7] perf arm-spe: Don't hard code config attribute 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: <20251201-james-perf-config-bits-v1-7-22ecbbf8007c@linaro.org> References: <20251201-james-perf-config-bits-v1-0-22ecbbf8007c@linaro.org> In-Reply-To: <20251201-james-perf-config-bits-v1-0-22ecbbf8007c@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.0 Use the config attribute that's published by the driver instead of hard coding "attr.config". Signed-off-by: James Clark --- tools/perf/arch/arm64/util/arm-spe.c | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/tools/perf/arch/arm64/util/arm-spe.c b/tools/perf/arch/arm64/u= til/arm-spe.c index d5ec1408d0ae..6c3dc97fde30 100644 --- a/tools/perf/arch/arm64/util/arm-spe.c +++ b/tools/perf/arch/arm64/util/arm-spe.c @@ -256,7 +256,7 @@ static __u64 arm_spe_pmu__sample_period(const struct pe= rf_pmu *arm_spe_pmu) =20 static void arm_spe_setup_evsel(struct evsel *evsel, struct perf_cpu_map *= cpus) { - u64 bit; + u64 pa_enable_bit; =20 evsel->core.attr.freq =3D 0; evsel->core.attr.sample_period =3D arm_spe_pmu__sample_period(evsel->pmu); @@ -288,9 +288,10 @@ static void arm_spe_setup_evsel(struct evsel *evsel, s= truct perf_cpu_map *cpus) * inform that the resulting output's SPE samples contain physical addres= ses * where applicable. */ - bit =3D perf_pmu__format_bits(evsel->pmu, "pa_enable"); - if (evsel->core.attr.config & bit) - evsel__set_sample_bit(evsel, PHYS_ADDR); + + if (!evsel__get_config_val(evsel->pmu, evsel, "pa_enable", &pa_enable_bit= )) + if (pa_enable_bit) + evsel__set_sample_bit(evsel, PHYS_ADDR); } =20 static int arm_spe_setup_aux_buffer(struct record_opts *opts) @@ -397,6 +398,7 @@ static int arm_spe_recording_options(struct auxtrace_re= cord *itr, struct perf_cpu_map *cpus =3D evlist->core.user_requested_cpus; bool discard =3D false; int err; + u64 discard_bit; =20 sper->evlist =3D evlist; =20 @@ -425,9 +427,8 @@ static int arm_spe_recording_options(struct auxtrace_re= cord *itr, evlist__for_each_entry_safe(evlist, tmp, evsel) { if (evsel__is_aux_event(evsel)) { arm_spe_setup_evsel(evsel, cpus); - if (evsel->core.attr.config & - perf_pmu__format_bits(evsel->pmu, "discard")) - discard =3D true; + if (!evsel__get_config_val(evsel->pmu, evsel, "discard", &discard_bit)) + discard =3D !!discard_bit; } } =20 --=20 2.34.1