From nobody Sat Jun 20 19:59:34 2026 Received: from mail-wr1-f41.google.com (mail-wr1-f41.google.com [209.85.221.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 EAEE23B585D for ; Fri, 10 Apr 2026 11:05:27 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.221.41 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1775819132; cv=none; b=AyPdNE1t3jXizDd7dPdWL6R8AjSJqRJNKiFNQXAY5p7zvKa2nWh4ym3yCMzqqy81dMb7xlJ8fpQhllKNT0blR6AEv7BjxDveBzY8Yl3v9g7ta9U9+7QTkCSgsVHtk0XdTOzMIRNmIGjOAiaPMvF33UTIgMmiLuLQ0mL0o2NM7EY= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1775819132; c=relaxed/simple; bh=C4TzoVHzgf1rGpQWQodks9joyvbgLfJGekKr3dHfEuU=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:To:Cc; b=E4GUfC9RTHTDvkEukfIlU+lnxCjkXB075XEwTB67Uoer0R16HFU/j8V9qjGOSJ2cOVvw126ss0XzFWNyPFJlFNO1e7uis50H4aYzlRVrWw4aTIrY6575TaBikLVVwdi7QhQGgmoC6iJBBJz6Nr3PDXTt6hUGo8XH7I4i9CNg8vU= 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=M2WalfgO; arc=none smtp.client-ip=209.85.221.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="M2WalfgO" Received: by mail-wr1-f41.google.com with SMTP id ffacd0b85a97d-43d43e09de5so1018392f8f.1 for ; Fri, 10 Apr 2026 04:05:27 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1775819126; x=1776423926; darn=vger.kernel.org; h=cc:to:message-id:content-transfer-encoding:mime-version:subject :date:from:from:to:cc:subject:date:message-id:reply-to; bh=A6RQ1iN4kZujA3tCfjxC7Q5lmyqTavIYDLPFwYDheVU=; b=M2WalfgOlheTBdQccBcnEtCdbx4hcd+i4mhflj3OqgEUf2lHdg9Z1UeXUzSRXpL2vl pII027urvmQyEtHucfA79+pdXZupRQrQz+iKKDzWysDDIT/yKK6t0ngJmkxx4g3U6EbU imM0aqkWrQeRnSsV7xgOn7yMMfzC1SGhYYTsupGnWN2DJ3eGZWe+1UzhpbTzEvR6Kos3 K4VqEwe/viSFFQlrQe7DnQc5BxNeI8zC3XbpXP0JSOWIcV++TD5LIyWMHhleFHd8DYrA WrINJqq8eDtW66Yi2RjEoUpcXiIDEZYgHYbRuKNPTHU5wWa0Q0YIjaFwOCwpVwJP+ul+ PSRw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1775819126; x=1776423926; h=cc:to: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=A6RQ1iN4kZujA3tCfjxC7Q5lmyqTavIYDLPFwYDheVU=; b=ru+Y3+f0Cdyfe5bPnKUKdJvA+LhkNtsZ6sB/qJLAZ0Wz52rlIqmNLhfP5sdptSLVN+ 83U9LyP1Vl7chXrkEAF37vDe4ZSqg8kW7lc2ZNWBFfP02lV8/BNjkG32K4ZaSFrlrM3Q rY4SBjaJa1bHMWLPq2uAD8SDPnTPDkOhKq6TWVYhwMfqvggPRnCRjF3laRICy8RioO65 oUYfROXyUjr1+JhaR2ayhXhVBF9ADzEOw+cVbsFZPyBZZi9bzMiLH5Hfm9uChuKBeEFL oedIvBZGqlbRMCVGN4r9Py4E57+EB5UGWZgo+eK+2FwKzTjavicmDfczt9GIuXHgP4bW sElQ== X-Forwarded-Encrypted: i=1; AJvYcCVaRkF9KwGH3hYIwAqj4t+zfBeN8IzEL4evyYlMNpBXj6X3U0S+yUe73zGJmNgNx7wyh2Lw5qf5XYzgWCg=@vger.kernel.org X-Gm-Message-State: AOJu0YyHPX7HsmWASAmpa7Gv797DsJtysWiCMRlEp7tJB5B2ulMWk4CC l0yXk6zjm6Y/h+J1P6RJFlHShJbtHV/pu1VDK+bkGyDC+vIvBBMKTA+kODKWUfRAvVg= X-Gm-Gg: AeBDietm8l9G3sjBNlHf0B9zy5og9zSSWakJ/GBd6tQJeGP2Jj3zkccqc1qQvHVHspH i4H9O0sM3dy2tcY+HB0PNwcwlCub4x8uAOPlIuIn5CccKTDuHLTP35Co1tgqLF8YBWqpDbv+Xcf OsvweHPFtgJEB4Xyijj+4wLNIOUWZP9rPLqehCAzdiMlYsgInoKoQ8D2TmhzfCM/xEiVMiE4pcK A9+6O12755xKhBE5QkLQAetFyGmQzrV4wc3FXxVgdavTuwgMWxlhWjJoHnRquedHBMfF+kmVsla wPwSKU74+Wkvwd9btIFPoWIcCO+J6JQB1MFVOp1BTjY8sOXFht5CjJReoXYqvv63ySpA/GDIHK5 cl+3WwuAm1U/2w6K8XJkdBihiviU+OCyaRcJqU2DH6Av6SAw4a637gQNvqkEjTT34yOIMB/943/ hqKoNaW4gmctn/E5gLqC+9MO1d0YeU2xPa X-Received: by 2002:a5d:5d83:0:b0:43d:30af:a173 with SMTP id ffacd0b85a97d-43d64259b7emr3790576f8f.5.1775819125672; Fri, 10 Apr 2026 04:05:25 -0700 (PDT) Received: from ho-tower-lan.lan ([185.48.77.170]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-43d63e5ccdasm6896930f8f.34.2026.04.10.04.05.24 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 10 Apr 2026 04:05:25 -0700 (PDT) From: James Clark Date: Fri, 10 Apr 2026 12:05:12 +0100 Subject: [PATCH] perf arm-spe: Don't warn about the discard bit if it doesn't exist 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: <20260410-james-spe-discard-warning-v1-1-985c02756ee4@linaro.org> X-B4-Tracking: v=1; b=H4sIAGfZ2GkC/x3MTQqDQAxA4atI1gbGqT+0VxEX6UzUCJ1KAlaQu btDl9/ivQuMVdjgVV2gfIjJNxU0dQVhpbQwSiwG73zv2sbhRh82tJ0xigXSiD/SJGlB1z7ffqD uQRSg9LvyLOf/PU453y4G0kJrAAAA To: John Garry , Will Deacon , Mike Leach , Leo Yan , Peter Zijlstra , Ingo Molnar , Arnaldo Carvalho de Melo , Namhyung Kim , Mark Rutland , Alexander Shishkin , Jiri Olsa , Ian Rogers , Adrian Hunter Cc: linux-arm-kernel@lists.infradead.org, linux-perf-users@vger.kernel.org, linux-kernel@vger.kernel.org, James Clark X-Mailer: b4 0.14.0 Opening an SPE event shows a warning that doesn't concern the user: $ perf record -e arm_spe Unknown/empty format name: discard Perf only wants to know if the discard bit is set for configuring the event, not in response to anything the user has done. Fix it by adding another helper that returns if a config bit exists without warning. We should probably keep the warning in evsel__get_config_val() to avoid having every caller having to do it, and most format bits should never be missing. Add a test for the new helper. Rename the parent test function to be more generic rather than adding a new one as it requires a lot of boilerplate. Signed-off-by: James Clark Reviewed-by: Ian Rogers Reviewed-by: Leo Yan --- tools/perf/arch/arm64/util/arm-spe.c | 3 ++- tools/perf/tests/pmu.c | 11 +++++++++-- tools/perf/util/evsel.c | 6 ++++++ tools/perf/util/evsel.h | 1 + 4 files changed, 18 insertions(+), 3 deletions(-) diff --git a/tools/perf/arch/arm64/util/arm-spe.c b/tools/perf/arch/arm64/u= til/arm-spe.c index f00d72d087fc..91bb28cad79a 100644 --- a/tools/perf/arch/arm64/util/arm-spe.c +++ b/tools/perf/arch/arm64/util/arm-spe.c @@ -428,7 +428,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__get_config_val(evsel, "discard", &discard_bit)) + if (evsel__config_exists(evsel, "discard") && + !evsel__get_config_val(evsel, "discard", &discard_bit)) discard =3D !!discard_bit; } } diff --git a/tools/perf/tests/pmu.c b/tools/perf/tests/pmu.c index 0ebf2d7b2cb4..d7be9d1c6f52 100644 --- a/tools/perf/tests/pmu.c +++ b/tools/perf/tests/pmu.c @@ -201,7 +201,8 @@ static int test__pmu_format(struct test_suite *test __m= aybe_unused, int subtest return ret; } =20 -static int test__pmu_usr_chgs(struct test_suite *test __maybe_unused, int = subtest __maybe_unused) +static int test__pmu_config_helpers(struct test_suite *test __maybe_unused, + int subtest __maybe_unused) { const char *event =3D "perf-pmu-test/config=3D15,config1=3D4,krava02=3D17= 0," "krava03=3D1,krava11=3D27,krava12=3D1/"; @@ -236,6 +237,12 @@ static int test__pmu_usr_chgs(struct test_suite *test = __maybe_unused, int subtes } evsel =3D evlist__first(evlist); =20 + /* Test evsel__config_exists() */ + TEST_ASSERT_EQUAL("krava01 should exist", + evsel__config_exists(evsel, "krava01"), true); + TEST_ASSERT_EQUAL("krava99 should not exist", + evsel__config_exists(evsel, "krava99"), false); + /* * Set via config=3D15, krava01 bits 0-1 * Set via config1=3D4, krava11 bit 1 @@ -629,7 +636,7 @@ static struct test_case tests__pmu[] =3D { TEST_CASE("PMU name combining", name_len), TEST_CASE("PMU name comparison", name_cmp), TEST_CASE("PMU cmdline match", pmu_match), - TEST_CASE("PMU user config changes", pmu_usr_chgs), + TEST_CASE("PMU config helpers", pmu_config_helpers), { .name =3D NULL, } }; =20 diff --git a/tools/perf/util/evsel.c b/tools/perf/util/evsel.c index 2ee87fd84d3e..685c4118aef3 100644 --- a/tools/perf/util/evsel.c +++ b/tools/perf/util/evsel.c @@ -1396,6 +1396,12 @@ void evsel__set_config_if_unset(struct evsel *evsel,= const char *config_name, perf_pmu__format_pack(format->bits, val, vp, /*zero=3D*/true); } =20 +bool evsel__config_exists(const struct evsel *evsel, const char *config_na= me) +{ + struct perf_pmu_format *format =3D pmu_find_format(&evsel->pmu->format, c= onfig_name); + + return format && !bitmap_empty(format->bits, PERF_PMU_FORMAT_BITS); +} =20 int evsel__get_config_val(const struct evsel *evsel, const char *config_na= me, u64 *val) diff --git a/tools/perf/util/evsel.h b/tools/perf/util/evsel.h index 339b5c08a33d..a255ae2b1f8e 100644 --- a/tools/perf/util/evsel.h +++ b/tools/perf/util/evsel.h @@ -578,6 +578,7 @@ 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); +bool evsel__config_exists(const struct evsel *evsel, const char *config_na= me); int evsel__get_config_val(const struct evsel *evsel, const char *config_na= me, u64 *val); void evsel__set_config_if_unset(struct evsel *evsel, const char *config_na= me, --- base-commit: 4cf1f549bbcdfea9c20df52994bb342677472dcd change-id: 20260410-james-spe-discard-warning-049b27a53aac Best regards, --=20 James Clark