From nobody Sun Dec 14 07:59:09 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 2DA6A35772B for ; Tue, 11 Nov 2025 11:38:31 +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=1762861114; cv=none; b=SGwNlAFDigcRJj5EoL+YEkpCdiEZZ6/fwGCuGcvgWMy/sxUS8hOlGZwBmDu/HhOiKsPf9jaiNjIlNMkxAamwh4s1+Ax8PBHnvRsmrPxNcxI1LKO+pAY57LIj2q6Tf3hBWZ5q6I1usRzXb+KYnawABi7GrfgccX4L/CJd6Bj1y4U= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1762861114; c=relaxed/simple; bh=x95u+IAe5V5q3kdJyo2Q7B3yE503oFrO1P0dSeyIme8=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=kVCR5F0fVJMMIY1YAOkMqCbglUh1wCHhBGiZ3i53/O801inH2UbaMoJw1kiTLbUGTeviKNNxQfAXAKq6IJyNakbzNqyNS8cM+tXmnsHzpyaAXNoDi0pyfnMtaTFltOutw80j/b4M2hNpZMgtkqVo3OMaf0iIIK6OShV+Km3E9fQ= 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=ZkwRqYON; 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="ZkwRqYON" Received: by mail-wm1-f43.google.com with SMTP id 5b1f17b1804b1-477632cc932so16458455e9.3 for ; Tue, 11 Nov 2025 03:38:31 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1762861110; x=1763465910; 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=hfuWM/BYuIKRAqpYoUgwQd7cyFQJ3HADoloFiEPlZDo=; b=ZkwRqYONLunVmEc9PIqNrVtCbI/1N5gLB7N9TnqRc/9xnoA31Ejn6steSAtkZfzfOm Y9ZH+Ca8t5IlBWW+ATJwBv+VJ5Nmgl2HmP9cDIWrIdkkOp2df/K7bMinIxZyprq26UWw 4sGVB4y6gvLDXoFXpjHU4/MuvTZsNSCVysrYoagHQBZ1rlEIkJtNZ5qGPSfrcyNvBUp/ 7bczIxUMf+YE3SJ+MVotPoRprFI8VAU5X5cvtmMsLW0k/fz6lU7l2kMYp49JwC/w1WCX m6EX+/Il7RiGc6JysB7e9wrJpmnN+Rs/K2NWEf9ZYex8qOeI90C+6UPTOWiEzjgO8dz3 Wu1g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1762861110; x=1763465910; 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=hfuWM/BYuIKRAqpYoUgwQd7cyFQJ3HADoloFiEPlZDo=; b=MgsO9eMNV6gIW8+6HOgCmrsY2+W4X2cjAB4ETXcVVeheynznr6FhkpXvfge4D4fny1 QChllo9IDovcwczvYHfLaTYTwIYsj0vKFAEoF0ZyZqp17ksgngrtS3SZrlDK2QG6vThy g5vHB6eVLWNooz3bE4nGrcBUp1E2qC9rdFIelCG6rYX3rHBtoDNyi9NqrNm037U0ga3R R/PXA9jj1yxfJEXkI6ZAet6hVOXTe54Fxiko675wGwpKwu2Bnt1F+TQw2Wx/LRuuqfU7 6DcnWEmbR1mUbKdfa64lbMLzMc9JP9wgBA1vV6qdE6d8t8bE6ssLfCpehGSjpKCcifI8 9PiA== X-Forwarded-Encrypted: i=1; AJvYcCUcNW+pKGPtSKhynpbz7jYTFZ99cyxg06ugf2kTe7mUDmYcAq/Gpz39qKwtgtcNDEJrp3FzC7pn5jx5h2U=@vger.kernel.org X-Gm-Message-State: AOJu0Ywubm4prNdNlXdhT5kRXp9O84Hx9Q4MtO7ElxrvenlsLt4Ulk83 baxJzkwUD+Q8XVctvvziEdFMGxPmedZHzZHJpfTo0fUgZ0HeJNJkHoYrfWqrV6Fx/6g= X-Gm-Gg: ASbGncsgamfDBzLrKHv7wQ4Q2cmYmgjAAbWo378ftHdSkzbLbT3KBqPcX1S5H1o1wqT 5mI+jrsCNEHdFUh18gDU5hzx0PyLuyxrsH3rV/R5790+g5n6yPp0huxVWdss0hCmvzXzN8CD61s 4X+IVoDkFyg2GndXCss2L/dFY5SBA0FW7hjPCXIWYzZT60EQzchINuQ8FxBQ1izQ0ikz1n5P1U6 Kjr/rCDU+kI/xG4b4sqTRjTb4IWI7cYcAEVdlSbdOzSbMqKCOx44r6NqG0sx8I2CakvbWKZ3UTT MxriED56CquF/Jbs8bkxYmzjsmAsY1vO+qCePDZfljyRf0cQ9TjFr4S4bUmzj96C0wToH5Zhor0 5SQp+vIpeJJ5XAla1BKzEAw5ez5MA2W03TFFFFi3xwRrdlzxf1KwCIoFlbzuBOG56USYCZpGMwn J5x7EnZEPtLIYKhvjGMl3OUvCxg/YJQ7A= X-Google-Smtp-Source: AGHT+IGYPR7rqVbdbF+k3EWMkcQQ1XUolXYoeKsYoPvyE020LtvRy4kS5z2d7QV4g2hQ3KZfV9KU5w== X-Received: by 2002:a05:600c:1c15:b0:477:7c44:c0c3 with SMTP id 5b1f17b1804b1-4777c44c1e2mr78464655e9.40.1762861110374; Tue, 11 Nov 2025 03:38:30 -0800 (PST) Received: from ho-tower-lan.lan ([185.48.77.170]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-42ac675cd25sm28133486f8f.22.2025.11.11.03.38.29 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 11 Nov 2025 03:38:30 -0800 (PST) From: James Clark Date: Tue, 11 Nov 2025 11:37:55 +0000 Subject: [PATCH v10 1/5] perf: Add perf_event_attr::config4 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: <20251111-james-perf-feat_spe_eft-v10-1-1e1b5bf2cd05@linaro.org> References: <20251111-james-perf-feat_spe_eft-v10-0-1e1b5bf2cd05@linaro.org> In-Reply-To: <20251111-james-perf-feat_spe_eft-v10-0-1e1b5bf2cd05@linaro.org> To: Catalin Marinas , Will Deacon , Mark Rutland , Jonathan Corbet , Marc Zyngier , Oliver Upton , Joey Gouly , Suzuki K Poulose , Zenghui Yu , Peter Zijlstra , Ingo Molnar , Arnaldo Carvalho de Melo , Namhyung Kim , Alexander Shishkin , Jiri Olsa , Ian Rogers , Adrian Hunter , Leo Yan , Anshuman Khandual Cc: linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, linux-perf-users@vger.kernel.org, linux-doc@vger.kernel.org, kvmarm@lists.linux.dev, James Clark X-Mailer: b4 0.14.0 Arm FEAT_SPE_FDS adds the ability to filter on the data source of a packet using 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 'config4' field. Reviewed-by: Leo Yan Tested-by: Leo Yan Reviewed-by: Ian Rogers Acked-by: Peter Zijlstra (Intel) Signed-off-by: James Clark --- include/uapi/linux/perf_event.h | 2 ++ 1 file changed, 2 insertions(+) diff --git a/include/uapi/linux/perf_event.h b/include/uapi/linux/perf_even= t.h index 78a362b80027..0d0ed85ad8cb 100644 --- a/include/uapi/linux/perf_event.h +++ b/include/uapi/linux/perf_event.h @@ -382,6 +382,7 @@ enum perf_event_read_format { #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 */ +#define PERF_ATTR_SIZE_VER9 144 /* add: config4 */ =20 /* * 'struct perf_event_attr' contains various attributes that define @@ -543,6 +544,7 @@ struct perf_event_attr { __u64 sig_data; =20 __u64 config3; /* extension of config2 */ + __u64 config4; /* extension of config3 */ }; =20 /* --=20 2.34.1 From nobody Sun Dec 14 07:59:09 2025 Received: from mail-wm1-f54.google.com (mail-wm1-f54.google.com [209.85.128.54]) (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 3C0D3357730 for ; Tue, 11 Nov 2025 11:38:33 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.54 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1762861117; cv=none; b=pVZiyHOhdZF4UsIqNzLmzzvJFS+HqNzvF5CKy+UmUSToUhNiMtL6krVnh413qVRFcCw8+NhhTsDW9HxLiprtCmExjioxYSNvEJxdHVlCCrLfCsu3UXupzZBDQ2L0lJDHH7M/bRwDs4o5cTSF7mxaB2gJnddaQu4S/BKUQXn/9QQ= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1762861117; c=relaxed/simple; bh=wuWGqKWZZ/BTt5fqv81cBQwVikNNCsOKo8cdQBD/rvs=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=eV06s6RsHz2LtH3/6AYBJFW8COBhh56xadKnG+PqiamD4GqQ0VOx91VUcpeT764lyHho5LG71b0gl4yrI51H10PPaKOdNwKW/1IWTHWDiKBRl/84q/sdgSvj1g2J0udJGKZFXAvIoanqiH44bu/knB2xDYfBWKliFaKFQ8nPEJc= 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=lDZqaDiq; arc=none smtp.client-ip=209.85.128.54 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="lDZqaDiq" Received: by mail-wm1-f54.google.com with SMTP id 5b1f17b1804b1-477619f8ae5so30698685e9.3 for ; Tue, 11 Nov 2025 03:38:33 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1762861112; x=1763465912; 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=gwCuT4qpbf858s5dq2pagCIko/kgMzJ+Cwp9chp+q6I=; b=lDZqaDiqywqaaZM1tvO7QMn2TkJNGsZeP1loG17uERUs4YpjthLT595dVZI5knXpnG kbfPOwSLZs0HlrWb7AdpLECAc633vMjUUtGaSIPjiircdaK+vx2g+YEeovY3wM/Vc+gY ExXVlZ+8tiY/ptvTZcInbVoChjSoTwon5LuV6M6RWtCgvbpHOB5GdV6CgXTw5LyoApSM 2fd7FaaNY8X7J/RdYAxKmUDLDyfAbmHbgGDvhLiByYfJHxicIHkI/Pj0X+VXBttYC4l7 4YyqUTGr/91mzcWsizlmEDzOj+OgZlaGVYZuNcQ6zMHBH2n8P2R4M5/GerofXWVDU52L smdQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1762861112; x=1763465912; 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=gwCuT4qpbf858s5dq2pagCIko/kgMzJ+Cwp9chp+q6I=; b=cENDhwpfBJGrfEnPo4jaNNL4FtCaIsSDQHICeCteAoXAYYu6P1g1RjU2A6CG5MI0yt J5JgQnyM3MqjJaTDf516n7Bsk0y2ztA0hpguf1caf19XX1b3qRqNwgh+bVldck0PEtp7 9mauO6YREPuLAcEDtc3qkwB/vIIMOsI84A08azjGUB21IF+doDVsjwGAYU+L+vyIqPZn PfXbRzEGCDpS7i3IZ+fXHVzzIl+qYCSvBTEkPolOWxGb7GcAj9d5Hu5KNt+iVmgulumX qP/URq33TV00YP/TK2Cjtz1Ikb2a1N6SEN/eSOMPll7HONmEjrPd+QnqsVxbD8PE+Ih5 9Fsg== X-Forwarded-Encrypted: i=1; AJvYcCVmOeYwCYggNiGEq2tL5CfhofIHIjURF4RPF1KxzpDzX5VXQcMKLZuxewe1Fl1Am/28baywyh/7a0kkzcI=@vger.kernel.org X-Gm-Message-State: AOJu0Yw15TpvcTULdWG1HXivODIvSfOUoMgf6P9bQVkC4wRRfS3NI/nK iwZyH02KD++3eW4wiCRQKID4fBlDNNkjUSxXhyCKvlmjOEU74ur93kkHPIiKdWJxMSo= X-Gm-Gg: ASbGnctGBJrPXeRKm6lIJag3RTJyWwMg8oyqqarMftVHGbKpIbwbn3hEl3Bi/jwTZyg 8/T7Qei3nqRPB0eBUd2OHhuBCIbhtj+TYr9UPB96Di9w/bCgj32IGMfN8P7SGo/hYqwnTdtTydV E6mstROh+abWUyo+VBagnj9c5gsIj30zHZ23nl13TPeModrp4TsCWGmMsgn0s6YBnvu7j2pfytQ QHa2EEXpDl3i2Ziheo07as+mf6Lohb/v1B/aHh/L8kvZvciTuykR1UkeaYQumKrHVjXKPly8ubY bpm7mqWIrJsHXtbRQQhMlWMkEDayb5++LOoQSii1wHqm9xJEQ5QfVI/CdH7A6VTrj5/uL/LwmQd trojYYG9Bg7lR5uvJGwXzF+ie26bXdxSoIxjDP5sZUF3WACIZ8Ht+CT7L4RbIM3QBSNcT7onD+Z PDEMEuOBiVkg== X-Google-Smtp-Source: AGHT+IHoaAdyno4PCEkIfLITG0AGBI1bC/mX+D1DG/Yst4Q/794Wn0/d79DNOynMvzJ3hrqergaE6g== X-Received: by 2002:a5d:588a:0:b0:42b:3e20:f1b4 with SMTP id ffacd0b85a97d-42b3e20f5bdmr5248092f8f.5.1762861111797; Tue, 11 Nov 2025 03:38:31 -0800 (PST) Received: from ho-tower-lan.lan ([185.48.77.170]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-42ac675cd25sm28133486f8f.22.2025.11.11.03.38.30 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 11 Nov 2025 03:38:31 -0800 (PST) From: James Clark Date: Tue, 11 Nov 2025 11:37:56 +0000 Subject: [PATCH v10 2/5] perf: arm_spe: Add support for filtering on data source 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: <20251111-james-perf-feat_spe_eft-v10-2-1e1b5bf2cd05@linaro.org> References: <20251111-james-perf-feat_spe_eft-v10-0-1e1b5bf2cd05@linaro.org> In-Reply-To: <20251111-james-perf-feat_spe_eft-v10-0-1e1b5bf2cd05@linaro.org> To: Catalin Marinas , Will Deacon , Mark Rutland , Jonathan Corbet , Marc Zyngier , Oliver Upton , Joey Gouly , Suzuki K Poulose , Zenghui Yu , Peter Zijlstra , Ingo Molnar , Arnaldo Carvalho de Melo , Namhyung Kim , Alexander Shishkin , Jiri Olsa , Ian Rogers , Adrian Hunter , Leo Yan , Anshuman Khandual Cc: linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, linux-perf-users@vger.kernel.org, linux-doc@vger.kernel.org, kvmarm@lists.linux.dev, James Clark X-Mailer: b4 0.14.0 SPE_FEAT_FDS adds the ability to filter on the data source of packets. Like the other existing filters, enable filtering with PMSFCR_EL1.FDS when any of the filter bits are set. Each bit position of the 64 bit filter maps to numerical data sources 0-63 described by bits[0:5] in the data source packet (although the full range of data source is 16 bits so higher value data sources can't be filtered on). The filter is an OR of all the filter bits, so for example clearing filter bits 0 and 3 only includes packets from data sources 0 OR 3. Invert the filter given by userspace so that the default value of 0 is equivalent to including all values (no filtering). This allows us to skip adding a new format bit to enable filtering and still support excluding all data sources which would have been a filter value of 0 if not for the inversion. Tested-by: Leo Yan Reviewed-by: Leo Yan Signed-off-by: James Clark --- drivers/perf/arm_spe_pmu.c | 37 +++++++++++++++++++++++++++++++++++++ 1 file changed, 37 insertions(+) diff --git a/drivers/perf/arm_spe_pmu.c b/drivers/perf/arm_spe_pmu.c index fa50645fedda..617f8a98dd63 100644 --- a/drivers/perf/arm_spe_pmu.c +++ b/drivers/perf/arm_spe_pmu.c @@ -87,6 +87,7 @@ struct arm_spe_pmu { #define SPE_PMU_FEAT_INV_FILT_EVT (1UL << 6) #define SPE_PMU_FEAT_DISCARD (1UL << 7) #define SPE_PMU_FEAT_EFT (1UL << 8) +#define SPE_PMU_FEAT_FDS (1UL << 9) #define SPE_PMU_FEAT_DEV_PROBED (1UL << 63) u64 features; =20 @@ -252,6 +253,10 @@ static const struct attribute_group arm_spe_pmu_cap_gr= oup =3D { #define ATTR_CFG_FLD_inv_event_filter_LO 0 #define ATTR_CFG_FLD_inv_event_filter_HI 63 =20 +#define ATTR_CFG_FLD_inv_data_src_filter_CFG config4 /* inverse of PMSDSFR= _EL1 */ +#define ATTR_CFG_FLD_inv_data_src_filter_LO 0 +#define ATTR_CFG_FLD_inv_data_src_filter_HI 63 + GEN_PMU_FORMAT_ATTR(ts_enable); GEN_PMU_FORMAT_ATTR(pa_enable); GEN_PMU_FORMAT_ATTR(pct_enable); @@ -268,6 +273,7 @@ GEN_PMU_FORMAT_ATTR(float_filter); GEN_PMU_FORMAT_ATTR(float_filter_mask); GEN_PMU_FORMAT_ATTR(event_filter); GEN_PMU_FORMAT_ATTR(inv_event_filter); +GEN_PMU_FORMAT_ATTR(inv_data_src_filter); GEN_PMU_FORMAT_ATTR(min_latency); GEN_PMU_FORMAT_ATTR(discard); =20 @@ -288,6 +294,7 @@ static struct attribute *arm_spe_pmu_formats_attr[] =3D= { &format_attr_float_filter_mask.attr, &format_attr_event_filter.attr, &format_attr_inv_event_filter.attr, + &format_attr_inv_data_src_filter.attr, &format_attr_min_latency.attr, &format_attr_discard.attr, NULL, @@ -306,6 +313,10 @@ static umode_t arm_spe_pmu_format_attr_is_visible(stru= ct kobject *kobj, if (attr =3D=3D &format_attr_inv_event_filter.attr && !(spe_pmu->features= & SPE_PMU_FEAT_INV_FILT_EVT)) return 0; =20 + if (attr =3D=3D &format_attr_inv_data_src_filter.attr && + !(spe_pmu->features & SPE_PMU_FEAT_FDS)) + return 0; + if ((attr =3D=3D &format_attr_branch_filter_mask.attr || attr =3D=3D &format_attr_load_filter_mask.attr || attr =3D=3D &format_attr_store_filter_mask.attr || @@ -430,6 +441,9 @@ static u64 arm_spe_event_to_pmsfcr(struct perf_event *e= vent) if (ATTR_CFG_GET_FLD(attr, inv_event_filter)) reg |=3D PMSFCR_EL1_FnE; =20 + if (ATTR_CFG_GET_FLD(attr, inv_data_src_filter)) + reg |=3D PMSFCR_EL1_FDS; + if (ATTR_CFG_GET_FLD(attr, min_latency)) reg |=3D PMSFCR_EL1_FL; =20 @@ -454,6 +468,17 @@ static u64 arm_spe_event_to_pmslatfr(struct perf_event= *event) return FIELD_PREP(PMSLATFR_EL1_MINLAT, ATTR_CFG_GET_FLD(attr, min_latency= )); } =20 +static u64 arm_spe_event_to_pmsdsfr(struct perf_event *event) +{ + struct perf_event_attr *attr =3D &event->attr; + + /* + * Data src filter is inverted so that the default value of 0 is + * equivalent to no filtering. + */ + return ~ATTR_CFG_GET_FLD(attr, inv_data_src_filter); +} + static void arm_spe_pmu_pad_buf(struct perf_output_handle *handle, int len) { struct arm_spe_pmu_buf *buf =3D perf_get_aux(handle); @@ -791,6 +816,10 @@ static int arm_spe_pmu_event_init(struct perf_event *e= vent) if (arm_spe_event_to_pmsnevfr(event) & spe_pmu->pmsevfr_res0) return -EOPNOTSUPP; =20 + if (arm_spe_event_to_pmsdsfr(event) !=3D U64_MAX && + !(spe_pmu->features & SPE_PMU_FEAT_FDS)) + return -EOPNOTSUPP; + if (attr->exclude_idle) return -EOPNOTSUPP; =20 @@ -866,6 +895,11 @@ static void arm_spe_pmu_start(struct perf_event *event= , int flags) write_sysreg_s(reg, SYS_PMSNEVFR_EL1); } =20 + if (spe_pmu->features & SPE_PMU_FEAT_FDS) { + reg =3D arm_spe_event_to_pmsdsfr(event); + write_sysreg_s(reg, SYS_PMSDSFR_EL1); + } + reg =3D arm_spe_event_to_pmslatfr(event); write_sysreg_s(reg, SYS_PMSLATFR_EL1); =20 @@ -1125,6 +1159,9 @@ static void __arm_spe_pmu_dev_probe(void *info) if (FIELD_GET(PMSIDR_EL1_EFT, reg)) spe_pmu->features |=3D SPE_PMU_FEAT_EFT; =20 + if (FIELD_GET(PMSIDR_EL1_FDS, reg)) + spe_pmu->features |=3D SPE_PMU_FEAT_FDS; + /* This field has a spaced out encoding, so just use a look-up */ fld =3D FIELD_GET(PMSIDR_EL1_INTERVAL, reg); switch (fld) { --=20 2.34.1 From nobody Sun Dec 14 07:59:09 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 6B9853590A6 for ; Tue, 11 Nov 2025 11:38:36 +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=1762861119; cv=none; b=u0l/Nv+ZfjViQxQ6DU/sQ/Q+OABp1AD6NogLDxZnr26L9/n2Ha1E9q2aiqZNUWztRAaAimH7q83HSIp8U1BuygQWdQGogjNqSd9NgSG4MtgUsM/PaB7cte6xmrJ//3n8HgeZRfgtveUSzV8peOX5zAtuGpXdUmqUYiefhRD9z20= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1762861119; c=relaxed/simple; bh=b/ttJae4xiEHONrSB61gWYPCVcnCnqIpQyNKL5V/Pqw=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=I3QE9m2UQTDFNP0mrncsyxR7+nrZIaFLAFagjynUDtyg+Mxwf2bujpoKZ9snDvtu0xmsqTM/DYX72mclWsrwZgSz/+MmCNvathrf0BNSWUUOD4hsiBApX68iS+KWEessTHnEJNWvSxz7wJPJXH+eFKvgziqXrUw6fW65as+4xCM= 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=vDehWl/b; 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="vDehWl/b" Received: by mail-wm1-f43.google.com with SMTP id 5b1f17b1804b1-47118259fd8so28970585e9.3 for ; Tue, 11 Nov 2025 03:38:35 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1762861113; x=1763465913; 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=YGtpCZfgBTuGsyBPIkbeq53HmntuKbontBvcg3TVESk=; b=vDehWl/be0EvJq+Cp0eB1lTOJLz767+Fv4g5FD2lEo74N9c+Zs5J9LeU2Tam0+/3t1 h3pM9bX0q8OffUmbFGVIohlru3qgrN1th+Ph9AezTjXqg1/phZu+2aciX5fYZc1cW700 FTEGgRttwZc9gSY9lZDuEeR4y15jWQNb7uPT1uMVcCgezJIV6M7KaRBDnUye+xkMDwds e5Yco7m2yAPi2Edo4Gm4KRDGJzwk9VVclCPKWnZfSY/66r4fHib3xKcQn11W6Nwr6gqq xzD1gT2vszWqzsaAe7f/phJC5P6lr6QZ/0rnxMlbEzEuFnIh8bOZ83v76ZDYMBYnOdmL XOkg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1762861113; x=1763465913; 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=YGtpCZfgBTuGsyBPIkbeq53HmntuKbontBvcg3TVESk=; b=KSnsMkBGTp/b4NlyDgI2DN/oEQi+EsE+ZvmyAHDrHWfKF7mCsfiDjevCrrab+yYwvi hjLAQLVgYTUdrN38hLg6yrnJWJNgzuWOY4452Y/FWf3rBmS+Hxi1HKoGIa25KEFM/XOa OkZKdnIgUefY8X9BYDui85c7QZ7Cj6jxC2Al+bIIMsKPKgkU8+MSXBr0t6Fr4OnJAEnV IbWLeWUqhMVEnYM5xpWdVLN9yY3MF8N06ci7kvC1gyqPQH3ROwzf1scvd5duJfVajnEU rx4LuZa/9RcvJCdvhFtjcyY1axa8Lr3dklYIPHZAOAN5NZ1ng+R5Zfkj/dACJnIRq9AH h4cA== X-Forwarded-Encrypted: i=1; AJvYcCVdWJQmarrrGNVyoW2nu3gLuXvL/mTE36Re2i/EpGUzLHnyuAutq4p9mvSORySw+42nKXun6cRXuK4srss=@vger.kernel.org X-Gm-Message-State: AOJu0Yx+w6xy3xnL+FMydtRNS14b/QM1oVDkgtsfjx7Fbbmpdq3RAwIT jrK5mXDF8rbMcM63/HSZwvQUio4uT4b1sChmpTi1Hl9jc0szEgeAckJpEuKJ1rWVeHY= X-Gm-Gg: ASbGnct4tezGDESvk9cOUUdFh+CITtG20KkN6EubZDSPwQ3CVBCc4BGA286J1tX3uEK E6mOLJm4Frxb8jANiN1ZOuG7uI2CrgGRzbTxLW446ghRKnMTeJnHShqlAh8VCLZUln4jD8PPBlk PwtFEqX0a0fMC/mLIARIkq2K4QblhVMg1dtMtZZ6yUTJ94giUYw22juiqXETlcB6R0LgP3wGsOR Z61/9JQ/jJWgwUqj6Pim4AW7rt+ZaUZcIYa8FAR/sWv6h/af6Jgl0Mh8T/kjQF00cSIgiqPMJI/ 4z/5fGKq9sEKPbL3dOhspqr4mfC41S7NoVtwwhACtpZkefbttrldUcnu2ygfUDHWUL8/9mIUHew 7zV7WIZFEAcFal/ZVj1Aymbwzh0RyTG/DYj/wgBhPKFMOIKJlX5YpT4uzeTVUcM1nicJX6CoYdJ tsVg88vt3y08ZhEo/zbbyX X-Google-Smtp-Source: AGHT+IHHKYLRfVgN/W/e843ki5ckqj4gtDXuwTA8cbEV+6RFtEvcngH3q04dA3ZvJO4NaiMzNyBD6Q== X-Received: by 2002:a05:600c:1c14:b0:46e:4246:c90d with SMTP id 5b1f17b1804b1-4777323ed28mr117807465e9.11.1762861113334; Tue, 11 Nov 2025 03:38:33 -0800 (PST) Received: from ho-tower-lan.lan ([185.48.77.170]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-42ac675cd25sm28133486f8f.22.2025.11.11.03.38.31 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 11 Nov 2025 03:38:32 -0800 (PST) From: James Clark Date: Tue, 11 Nov 2025 11:37:57 +0000 Subject: [PATCH v10 3/5] tools headers UAPI: Sync linux/perf_event.h with the kernel sources 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: <20251111-james-perf-feat_spe_eft-v10-3-1e1b5bf2cd05@linaro.org> References: <20251111-james-perf-feat_spe_eft-v10-0-1e1b5bf2cd05@linaro.org> In-Reply-To: <20251111-james-perf-feat_spe_eft-v10-0-1e1b5bf2cd05@linaro.org> To: Catalin Marinas , Will Deacon , Mark Rutland , Jonathan Corbet , Marc Zyngier , Oliver Upton , Joey Gouly , Suzuki K Poulose , Zenghui Yu , Peter Zijlstra , Ingo Molnar , Arnaldo Carvalho de Melo , Namhyung Kim , Alexander Shishkin , Jiri Olsa , Ian Rogers , Adrian Hunter , Leo Yan , Anshuman Khandual Cc: linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, linux-perf-users@vger.kernel.org, linux-doc@vger.kernel.org, kvmarm@lists.linux.dev, James Clark X-Mailer: b4 0.14.0 To pickup config4 changes. Tested-by: Leo Yan Reviewed-by: Ian Rogers Signed-off-by: James Clark --- tools/include/uapi/linux/perf_event.h | 2 ++ 1 file changed, 2 insertions(+) diff --git a/tools/include/uapi/linux/perf_event.h b/tools/include/uapi/lin= ux/perf_event.h index 78a362b80027..0d0ed85ad8cb 100644 --- a/tools/include/uapi/linux/perf_event.h +++ b/tools/include/uapi/linux/perf_event.h @@ -382,6 +382,7 @@ enum perf_event_read_format { #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 */ +#define PERF_ATTR_SIZE_VER9 144 /* add: config4 */ =20 /* * 'struct perf_event_attr' contains various attributes that define @@ -543,6 +544,7 @@ struct perf_event_attr { __u64 sig_data; =20 __u64 config3; /* extension of config2 */ + __u64 config4; /* extension of config3 */ }; =20 /* --=20 2.34.1 From nobody Sun Dec 14 07:59:09 2025 Received: from mail-wr1-f49.google.com (mail-wr1-f49.google.com [209.85.221.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 8F66E3590AA for ; Tue, 11 Nov 2025 11:38:37 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.221.49 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1762861124; cv=none; b=OcPQcFOAK5/IMnZ1AcSZtP8UZil0eWnADi2g/77gbgv7GE7gdB5NfhygA1ZsA77vlo8c/xIcRdReO9t60ejo2eVgyfhg7kpDeAJa3o8R/CuPnuZyM9X3iAV+2r7+bIg3Ix49rs0Le7bQfOGfOiWNfktT5PtElE9R89DiU0CjBkw= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1762861124; c=relaxed/simple; bh=z4OxMvmP1nKcc50m1O2xU3IMFaPo6aXZhWUI2e9QJ4A=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=TUmNET/9TIVBupgI+378z6BfOVdnvrRQzz7J9D70bO82Tvnwcg4U5p4ZLxHrtgBTCVVzeOlOQx6Z+tRSOh8O2JbQjFdlYmp64ABWmECNOPcVvCKb032MIkCZptxXl1FiiYNLuXBwinVkjA/70EGSF37WxEvgk231gRDm+E89wu4= 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=XsRo1SBz; arc=none smtp.client-ip=209.85.221.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="XsRo1SBz" Received: by mail-wr1-f49.google.com with SMTP id ffacd0b85a97d-429c4c65485so2830105f8f.0 for ; Tue, 11 Nov 2025 03:38:36 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1762861115; x=1763465915; 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=JBx1HBqIQESdJTpIMEPpGv3nDgzqUoY/hVTxp3fy06I=; b=XsRo1SBzxsUmjH4N1xrU7Nam6Cbf8rtGahzZC9cpRW0F+vgfrlpjugnFJQJ4FE9yBS tTuMpypU+WnOF2qHpEPIOVEAYGeWVfTfXwQnPVpK7Zg8WGUgcRxcyqTpVk9CoX+34Hq6 f9FojUTc4PawXYAl2UHJNa0QRiASZj4TTbm7+2Vk9DDgNkBg6mKXLJAGzWPpDhp/2fD0 LDO9f0NzO6Yt9s2RwCqOltQwZR1lZQai8FNgaWpSbJw1ypnPA5Y5+l7oYO/b6t2VKn09 g3mu8N5FKFIISpIa9LH8dtvNtv7xHkCSPKBLbvJo2f1dRzYGDOB+kok4j1kNO22fbbmN eZiw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1762861115; x=1763465915; 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=JBx1HBqIQESdJTpIMEPpGv3nDgzqUoY/hVTxp3fy06I=; b=Gm+u9CUlI0hM64HlcbIeHy/2zo+7ENZF47J3SRzrIsxttvEoHnk/qSU4IMMZzUgWDy qnvo5QHcHxNuIWR7pA8zEP9Pi3VhB3OQ8bSzfNYNSGyL4sCl/hEPyhzWGUtlZ0PlMZri v2nSexe4z8liAdd+4kw28wulRFaApV5XzByMRVcPB/HXDDb3dmiv9qkk7WeHh9vn8VwY sNfhsk8QPAzrOd8d5JnFiffKiPtI1/Mof/BwvRVF8QQ4H/2AjRPceGzQ6CAJP7dRvMrg Cu1t+us3kgAEAz5MIQnreUihdVFRl4UzTcyC2rGbv1h3Ka/vjkHWJ5fZvXrgPdhcadML Otcw== X-Forwarded-Encrypted: i=1; AJvYcCUld1CPLX3+zFeHqxQtYsKm+iRoZjRzBdVoFHlCJdZcNydY3K4RRHMxiqjFsIg4I4qT8AOvU9Wbvqp3tDk=@vger.kernel.org X-Gm-Message-State: AOJu0YySaB8oxQONTQ1oJ0vhxNIAV0+9LDVLmU5Ru5F6ohY6CXoqzUTo o5HzgV5W9OMq3RSErIAJTptysh/NGP4RdZj2JkQJqEOTYtH2XbnxQqfEzGX6fwVuSCA= X-Gm-Gg: ASbGnctV0KxssegAunglEMjrscHDIKMMhO/WPPRaekqCbFNt/iLBEakxd+bcJE/EgNV /Zd+0+b3hwJpWKsljei+dCF5orDQEIAvHajkoB6QkbKXUPGqpYy9wkRuyfx8bkCpCzDN8bRt5MK vALDRy6vUHX1wMBIQJadWLHUlMJd+7d0vl1ty01Z2du3SKm8W2kN3xjcOBbfswsOrkKcItxLJzn zzktBSUChLDGUFBAHxVJVt96seBpMT+XBpB9w10qQxAW1W8EbdF0s975Sa7iQya3ynqhUXcLshv ZfzqIStcAblTLwRTCImKkAYH9wQIAZqfFpyRPABByfkNRD8ugCP6UmalAP6XkXdOapmFXl28iBL Hb0dSLXPYXwcz8rLbEhTOTNmS8133t9qpOqRRnv9gXPQli2uTNB9/vIzRAI96S7J5dfp0sasfst J0pWzy8g/UEaGoI5JOTV1n X-Google-Smtp-Source: AGHT+IEPfgAQLS8AUOXc94ESB9KabdJywOD8T/3Tyt36yzAHaF7SmtNA++c1stBAKjmfW5tqqNGtaQ== X-Received: by 2002:a05:6000:1446:b0:42b:2c53:3abc with SMTP id ffacd0b85a97d-42b2dc1e2c5mr10660911f8f.19.1762861114743; Tue, 11 Nov 2025 03:38:34 -0800 (PST) Received: from ho-tower-lan.lan ([185.48.77.170]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-42ac675cd25sm28133486f8f.22.2025.11.11.03.38.33 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 11 Nov 2025 03:38:34 -0800 (PST) From: James Clark Date: Tue, 11 Nov 2025 11:37:58 +0000 Subject: [PATCH v10 4/5] perf tools: Add support for perf_event_attr::config4 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: <20251111-james-perf-feat_spe_eft-v10-4-1e1b5bf2cd05@linaro.org> References: <20251111-james-perf-feat_spe_eft-v10-0-1e1b5bf2cd05@linaro.org> In-Reply-To: <20251111-james-perf-feat_spe_eft-v10-0-1e1b5bf2cd05@linaro.org> To: Catalin Marinas , Will Deacon , Mark Rutland , Jonathan Corbet , Marc Zyngier , Oliver Upton , Joey Gouly , Suzuki K Poulose , Zenghui Yu , Peter Zijlstra , Ingo Molnar , Arnaldo Carvalho de Melo , Namhyung Kim , Alexander Shishkin , Jiri Olsa , Ian Rogers , Adrian Hunter , Leo Yan , Anshuman Khandual Cc: linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, linux-perf-users@vger.kernel.org, linux-doc@vger.kernel.org, kvmarm@lists.linux.dev, James Clark X-Mailer: b4 0.14.0 perf_event_attr has gained a new field, config4, so add support for it extending the existing configN support. Reviewed-by: Leo Yan Reviewed-by: Ian Rogers Tested-by: Leo Yan Signed-off-by: James Clark --- tools/perf/tests/parse-events.c | 13 ++++++++++++- tools/perf/util/parse-events.c | 11 +++++++++++ tools/perf/util/parse-events.h | 1 + tools/perf/util/parse-events.l | 1 + tools/perf/util/pmu.c | 8 ++++++++ tools/perf/util/pmu.h | 1 + 6 files changed, 34 insertions(+), 1 deletion(-) diff --git a/tools/perf/tests/parse-events.c b/tools/perf/tests/parse-event= s.c index e4cdb517c10e..128d21dc389f 100644 --- a/tools/perf/tests/parse-events.c +++ b/tools/perf/tests/parse-events.c @@ -647,6 +647,7 @@ static int test__checkevent_pmu(struct evlist *evlist) TEST_ASSERT_EVSEL("wrong config1", 1 =3D=3D evsel->core.attr.config1, = evsel); TEST_ASSERT_EVSEL("wrong config2", 3 =3D=3D evsel->core.attr.config2, = evsel); TEST_ASSERT_EVSEL("wrong config3", 0 =3D=3D evsel->core.attr.config3, = evsel); + TEST_ASSERT_EVSEL("wrong config4", 0 =3D=3D evsel->core.attr.config4, = evsel); /* * The period value gets configured within evlist__config, * while this test executes only parse events method. @@ -669,6 +670,7 @@ static int test__checkevent_list(struct evlist *evlist) TEST_ASSERT_EVSEL("wrong config1", 0 =3D=3D evsel->core.attr.config1, ev= sel); TEST_ASSERT_EVSEL("wrong config2", 0 =3D=3D evsel->core.attr.config2, ev= sel); TEST_ASSERT_EVSEL("wrong config3", 0 =3D=3D evsel->core.attr.config3, ev= sel); + TEST_ASSERT_EVSEL("wrong config4", 0 =3D=3D evsel->core.attr.config4, ev= sel); TEST_ASSERT_EVSEL("wrong exclude_user", !evsel->core.attr.exclude_user, = evsel); TEST_ASSERT_EVSEL("wrong exclude_kernel", !evsel->core.attr.exclude_kern= el, evsel); TEST_ASSERT_EVSEL("wrong exclude_hv", !evsel->core.attr.exclude_hv, evse= l); @@ -849,6 +851,15 @@ static int test__checkterms_simple(struct parse_events= _terms *terms) TEST_ASSERT_VAL("wrong val", term->val.num =3D=3D 4); TEST_ASSERT_VAL("wrong config", !strcmp(term->config, "config3")); =20 + /* config4=3D5 */ + term =3D list_entry(term->list.next, struct parse_events_term, list); + TEST_ASSERT_VAL("wrong type term", + term->type_term =3D=3D PARSE_EVENTS__TERM_TYPE_CONFIG4); + TEST_ASSERT_VAL("wrong type val", + term->type_val =3D=3D PARSE_EVENTS__TERM_TYPE_NUM); + TEST_ASSERT_VAL("wrong val", term->val.num =3D=3D 5); + TEST_ASSERT_VAL("wrong config", !strcmp(term->config, "config4")); + /* umask=3D1*/ term =3D list_entry(term->list.next, struct parse_events_term, list); TEST_ASSERT_VAL("wrong type term", @@ -2516,7 +2527,7 @@ struct terms_test { =20 static const struct terms_test test__terms[] =3D { [0] =3D { - .str =3D "config=3D10,config1,config2=3D3,config3=3D4,umask=3D1,read,r= 0xead", + .str =3D "config=3D10,config1,config2=3D3,config3=3D4,config4=3D5,umas= k=3D1,read,r0xead", .check =3D test__checkterms_simple, }, }; diff --git a/tools/perf/util/parse-events.c b/tools/perf/util/parse-events.c index 0c0dc20b1c13..ee4f55cbd3cb 100644 --- a/tools/perf/util/parse-events.c +++ b/tools/perf/util/parse-events.c @@ -215,6 +215,8 @@ __add_event(struct list_head *list, int *idx, PERF_PMU_FORMAT_VALUE_CONFIG2, "config2"); perf_pmu__warn_invalid_config(pmu, attr->config3, name, PERF_PMU_FORMAT_VALUE_CONFIG3, "config3"); + perf_pmu__warn_invalid_config(pmu, attr->config4, name, + PERF_PMU_FORMAT_VALUE_CONFIG4, "config4"); } } /* @@ -700,6 +702,7 @@ const char *parse_events__term_type_str(enum parse_even= ts__term_type term_type) [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_CONFIG4] =3D "config4", [PARSE_EVENTS__TERM_TYPE_NAME] =3D "name", [PARSE_EVENTS__TERM_TYPE_SAMPLE_PERIOD] =3D "period", [PARSE_EVENTS__TERM_TYPE_SAMPLE_FREQ] =3D "freq", @@ -749,6 +752,7 @@ config_term_avail(enum parse_events__term_type term_typ= e, struct parse_events_er 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_NAME: case PARSE_EVENTS__TERM_TYPE_METRIC_ID: case PARSE_EVENTS__TERM_TYPE_SAMPLE_PERIOD: @@ -819,6 +823,10 @@ do { \ CHECK_TYPE_VAL(NUM); attr->config3 =3D term->val.num; break; + case PARSE_EVENTS__TERM_TYPE_CONFIG4: + CHECK_TYPE_VAL(NUM); + attr->config4 =3D term->val.num; + break; case PARSE_EVENTS__TERM_TYPE_SAMPLE_PERIOD: CHECK_TYPE_VAL(NUM); break; @@ -1064,6 +1072,7 @@ static int config_term_tracepoint(struct perf_event_a= ttr *attr, 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: @@ -1207,6 +1216,7 @@ do { \ 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: @@ -1245,6 +1255,7 @@ static int get_config_chgs(struct perf_pmu *pmu, stru= ct parse_events_terms *head 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: diff --git a/tools/perf/util/parse-events.h b/tools/perf/util/parse-events.h index 1012b441e9cd..3577ab213730 100644 --- a/tools/perf/util/parse-events.h +++ b/tools/perf/util/parse-events.h @@ -59,6 +59,7 @@ enum parse_events__term_type { PARSE_EVENTS__TERM_TYPE_CONFIG1, PARSE_EVENTS__TERM_TYPE_CONFIG2, PARSE_EVENTS__TERM_TYPE_CONFIG3, + PARSE_EVENTS__TERM_TYPE_CONFIG4, 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 8e0ea441e57f..251ce4321878 100644 --- a/tools/perf/util/parse-events.l +++ b/tools/perf/util/parse-events.l @@ -287,6 +287,7 @@ config { return term(yyscanner, PARSE_EVENTS__TERM_TY= PE_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); } +config4 { return term(yyscanner, PARSE_EVENTS__TERM_TYPE_CONFIG4); } 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 f14f2a12d061..1b7c712d8f99 100644 --- a/tools/perf/util/pmu.c +++ b/tools/perf/util/pmu.c @@ -1574,6 +1574,10 @@ static int pmu_config_term(const struct perf_pmu *pm= u, assert(term->type_val =3D=3D PARSE_EVENTS__TERM_TYPE_NUM); pmu_format_value(bits, term->val.num, &attr->config3, zero); break; + case PARSE_EVENTS__TERM_TYPE_CONFIG4: + assert(term->type_val =3D=3D PARSE_EVENTS__TERM_TYPE_NUM); + pmu_format_value(bits, term->val.num, &attr->config4, zero); + break; case PARSE_EVENTS__TERM_TYPE_LEGACY_HARDWARE_CONFIG: assert(term->type_val =3D=3D PARSE_EVENTS__TERM_TYPE_NUM); assert(term->val.num < PERF_COUNT_HW_MAX); @@ -1649,6 +1653,9 @@ static int pmu_config_term(const struct perf_pmu *pmu, case PERF_PMU_FORMAT_VALUE_CONFIG3: vp =3D &attr->config3; break; + case PERF_PMU_FORMAT_VALUE_CONFIG4: + vp =3D &attr->config4; + break; default: return -EINVAL; } @@ -2008,6 +2015,7 @@ int perf_pmu__for_each_format(struct perf_pmu *pmu, v= oid *state, pmu_format_call "config1=3D0..0xffffffffffffffff", "config2=3D0..0xffffffffffffffff", "config3=3D0..0xffffffffffffffff", + "config4=3D0..0xffffffffffffffff", "legacy-hardware-config=3D0..9,", "legacy-cache-config=3D0..0xffffff,", "name=3Dstring", diff --git a/tools/perf/util/pmu.h b/tools/perf/util/pmu.h index 1ebcf0242af8..67431f765266 100644 --- a/tools/perf/util/pmu.h +++ b/tools/perf/util/pmu.h @@ -23,6 +23,7 @@ enum { PERF_PMU_FORMAT_VALUE_CONFIG1, PERF_PMU_FORMAT_VALUE_CONFIG2, PERF_PMU_FORMAT_VALUE_CONFIG3, + PERF_PMU_FORMAT_VALUE_CONFIG4, PERF_PMU_FORMAT_VALUE_CONFIG_END, }; =20 --=20 2.34.1 From nobody Sun Dec 14 07:59:09 2025 Received: from mail-wr1-f49.google.com (mail-wr1-f49.google.com [209.85.221.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 821A335BDD9 for ; Tue, 11 Nov 2025 11:38:39 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.221.49 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1762861123; cv=none; b=kqAsTOyesgKbJYrzyvdw1VPiNYj3tH55hhATfKpTskV8oSx7LJ0CnxcbAM7TU/kqbY6q+wBOGn76fkud28cpBGvGqfExsc5KyHcMzc50X4iRm1baRMK5EMPpkHrfiGVIVQFu0oqZ97trju6ghrGvy/VAVlaIEX2Iinmp+vczc/c= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1762861123; c=relaxed/simple; bh=HCAve+/meC9Wab9CoQxypeNR03XvBSi8OfLDRXMNQeE=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=CGBiavbEp7fgyKYldXhY4uNqBwehFX2WlI1JXfzdyEgS4sZtfGL8NhvNEYiakakOyBwMveZ7n6QaAbPRbkemf9k34hYTJ5fecavJSwq6sjwJOwwp7Z5yTIw7qEYmY+OPtlMcIuVK8EfrzCPb7fDnjqmtrIvVnZG0+4uPtG1NJc4= 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=UjewDlo7; arc=none smtp.client-ip=209.85.221.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="UjewDlo7" Received: by mail-wr1-f49.google.com with SMTP id ffacd0b85a97d-42b3c965cc4so322306f8f.0 for ; Tue, 11 Nov 2025 03:38:38 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1762861116; x=1763465916; 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=503A5zbvnWzbfI+gim0EXQRVNQ1ZkO34HFUXzTRqSG8=; b=UjewDlo7FHtwTCQXyX833zwBaZQsf9AKQm3ZRrJx883YHy2XDpwOaL9m2ihHEPO41c 3KsXA6V9xMabyxqprcukYoTywR+ZDYIO0BKWa+/sUJ//mrhgI+LIWgpGl1OFnjM13zp4 ge1J1bJ2c98C7+ObspePewXbWqYPnmK/wnZaItJOi4zZTOJmjhdXouYS6SbFA2Sp78pH 56Sc4BbxkOztu6GzQrLlsgbZtrx1CJT78AIqTC6v7klPDQ29Cpini1KGRIGdTe/zmIiA g1AeVtFIaUjJo6MvPKAu2waj9RE+S/ASdHnv3/kWg3ROJ5Ap0V63AKeMdt8HoNgZqhFw w66A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1762861116; x=1763465916; 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=503A5zbvnWzbfI+gim0EXQRVNQ1ZkO34HFUXzTRqSG8=; b=apPPhnujckBlf7N0xy0Qss23HIlehGHv7FAYkl7ktA+QhThfRz6/0qgKweFgeanmQ2 VMMNYhgYHnAuH3sGRfLvbSAGauc4LS2eXjInm47fDRhAsxfpkFJt8/3iZO4LcA69csPI lOYmcktDHbwOzxX2DhqUSrO4lSibL5qxD66FKyCcAXO/SU74OqwvKSbaXmO5zr5MWIAk wCxJzk2eIvp6MC/l390raTn1I7vJKMDmsTyRYDjRNrCy1ajzUo+8Qiz6RvMPUk7P85LU ay7aZzkKXZye9hA+Z3JIKWqnczqWKtqLlLJ8niJLS+FdL+USNEhAuv3+Ly8JpYPmQWvd HkrA== X-Forwarded-Encrypted: i=1; AJvYcCWGqAxWNdjZKGPN4PLTfDARx9dnZ/eXOIjRcZjzhwvnmmYDeZMTSvRZZ62oXSE2CQuavWUxf6XRmCdNul8=@vger.kernel.org X-Gm-Message-State: AOJu0YwCqz5pGwNYzGKtjTvLPPO7sU1HC6VOmb2NvuiPAZ3S7K+XiKhW QQdJn1i6tp8LAXkgWkWuNDb4jtr0TehjLPKB4hG74xcskhP3aTOImreTJapVrGEn/Qc= X-Gm-Gg: ASbGncsBI/nHiEUQAIYc22SrzNfDG7Xz/rY7CMclN6Vfv6fAq077w220JqZmxwSQEDk tVoz2Tysi1K8tGBLlcEYAB9PwhHdCxK/HPoDTXHlLr7UaktVO3+vDSobZDkb7h+g6AJYcXZy8An w0y6+bxN+afYLTkQZSF1zeHi1uBGG4FIbYkvGDOQiJ4GuJRwhSMsTFF706MC4wU35G8qZ0Q0v/Y Fg+o/fqd6QkPcbipgIVDiHPxqnCjNyfLyIchL14sdqZ3sJyT7O451FHubG8oxozH/7nbjJjlGvf jih49XG1MKHErcMgl/fSn0BK2McjxQe8RUroJB6H6iiwvF76nYUGrUx4biM/BO7h5pvg9gUgtNL jew82prg8QUZJHtnxgndaC45gO1FcGJ9JK6Pnrk5rkLFvGTwALXUDm4pbbqEOjRgEykK88lrUUc 8HmnJYbwOO9NqB7ybhLsqY X-Google-Smtp-Source: AGHT+IEOr1v9/Pc9moQWAwZ23g36hWIfx3hLWAVY2mXXyIWQG5MuiZA0cHtu3NhIW7NhqiecKM4eWQ== X-Received: by 2002:a05:6000:2203:b0:42b:2a41:f2b with SMTP id ffacd0b85a97d-42b432b1d34mr2998046f8f.7.1762861116244; Tue, 11 Nov 2025 03:38:36 -0800 (PST) Received: from ho-tower-lan.lan ([185.48.77.170]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-42ac675cd25sm28133486f8f.22.2025.11.11.03.38.34 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 11 Nov 2025 03:38:35 -0800 (PST) From: James Clark Date: Tue, 11 Nov 2025 11:37:59 +0000 Subject: [PATCH v10 5/5] perf docs: arm-spe: Document new SPE filtering features 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: <20251111-james-perf-feat_spe_eft-v10-5-1e1b5bf2cd05@linaro.org> References: <20251111-james-perf-feat_spe_eft-v10-0-1e1b5bf2cd05@linaro.org> In-Reply-To: <20251111-james-perf-feat_spe_eft-v10-0-1e1b5bf2cd05@linaro.org> To: Catalin Marinas , Will Deacon , Mark Rutland , Jonathan Corbet , Marc Zyngier , Oliver Upton , Joey Gouly , Suzuki K Poulose , Zenghui Yu , Peter Zijlstra , Ingo Molnar , Arnaldo Carvalho de Melo , Namhyung Kim , Alexander Shishkin , Jiri Olsa , Ian Rogers , Adrian Hunter , Leo Yan , Anshuman Khandual Cc: linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, linux-perf-users@vger.kernel.org, linux-doc@vger.kernel.org, kvmarm@lists.linux.dev, James Clark X-Mailer: b4 0.14.0 FEAT_SPE_EFT and FEAT_SPE_FDS etc have new user facing format attributes so document them. Also document existing 'event_filter' bits that were missing from the doc and the fact that latency values are stored in the weight field. Reviewed-by: Leo Yan Tested-by: Leo Yan Reviewed-by: Ian Rogers Signed-off-by: James Clark --- tools/perf/Documentation/perf-arm-spe.txt | 104 ++++++++++++++++++++++++++= +--- 1 file changed, 95 insertions(+), 9 deletions(-) diff --git a/tools/perf/Documentation/perf-arm-spe.txt b/tools/perf/Documen= tation/perf-arm-spe.txt index cda8dd47fc4d..8b02e5b983fa 100644 --- a/tools/perf/Documentation/perf-arm-spe.txt +++ b/tools/perf/Documentation/perf-arm-spe.txt @@ -141,27 +141,65 @@ Config parameters These are placed between the // in the event and comma separated. For exam= ple '-e arm_spe/load_filter=3D1,min_latency=3D10/' =20 - branch_filter=3D1 - collect branches only (PMSFCR.B) - event_filter=3D - filter on specific events (PMSEVFR) - see bitfie= ld description below + event_filter=3D - logical AND filter on specific events (PMSEVFR) = - see bitfield description below + inv_event_filter=3D - logical OR to filter out specific events (PM= SNEVFR, FEAT_SPEv1p2) - see bitfield description below jitter=3D1 - use jitter to avoid resonance when sampling (PMS= IRR.RND) - load_filter=3D1 - collect loads only (PMSFCR.LD) min_latency=3D - collect only samples with this latency or higher= * (PMSLATFR) pa_enable=3D1 - collect physical address (as well as VA) of load= s/stores (PMSCR.PA) - requires privilege pct_enable=3D1 - collect physical timestamp instead of virtual ti= mestamp (PMSCR.PCT) - requires privilege - store_filter=3D1 - collect stores only (PMSFCR.ST) ts_enable=3D1 - enable timestamping with value of generic timer = (PMSCR.TS) discard=3D1 - enable SPE PMU events but don't collect sample d= ata - see 'Discard mode' (PMBLIMITR.FM =3D DISCARD) + inv_data_src_filter=3D - mask to filter from 0-63 possible data so= urces (PMSDSFR, FEAT_SPE_FDS) - See 'Data source filtering' =20 +++*+++ Latency is the total latency from the point at which sampling star= ted on that instruction, rather than only the execution latency. =20 -Only some events can be filtered on; these include: - - bit 1 - instruction retired (i.e. omit speculative instructions) +Only some events can be filtered on using 'event_filter' bits. The overall +filter is the logical AND of these bits, for example if bits 3 and 5 are s= et +only samples that have both 'L1D cache refill' AND 'TLB walk' are recorded= . When +FEAT_SPEv1p2 is implemented 'inv_event_filter' can also be used to exclude +events that have any (OR) of the filter's bits set. For example setting bi= ts 3 +and 5 in 'inv_event_filter' will exclude any events that are either L1D ca= che +refill OR TLB walk. If the same bit is set in both filters it's UNPREDICTA= BLE +whether the sample is included or excluded. Filter bits for both event_fil= ter +and inv_event_filter are: + + bit 1 - Instruction retired (i.e. omit speculative instructions) + bit 2 - L1D access (FEAT_SPEv1p4) bit 3 - L1D refill + bit 4 - TLB access (FEAT_SPEv1p4) bit 5 - TLB refill - bit 7 - mispredict - bit 11 - misaligned access + bit 6 - Not taken event (FEAT_SPEv1p2) + bit 7 - Mispredict + bit 8 - Last level cache access (FEAT_SPEv1p4) + bit 9 - Last level cache miss (FEAT_SPEv1p4) + bit 10 - Remote access (FEAT_SPEv1p4) + bit 11 - Misaligned access (FEAT_SPEv1p1) + bit 12-15 - IMPLEMENTATION DEFINED events (when implemented) + bit 16 - Transaction (FEAT_TME) + bit 17 - Partial or empty SME or SVE predicate (FEAT_SPEv1p1) + bit 18 - Empty SME or SVE predicate (FEAT_SPEv1p1) + bit 19 - L2D access (FEAT_SPEv1p4) + bit 20 - L2D miss (FEAT_SPEv1p4) + bit 21 - Cache data modified (FEAT_SPEv1p4) + bit 22 - Recently fetched (FEAT_SPEv1p4) + bit 23 - Data snooped (FEAT_SPEv1p4) + bit 24 - Streaming SVE mode event (when FEAT_SPE_SME is implemented),= or + IMPLEMENTATION DEFINED event 24 (when implemented, only vers= ions + less than FEAT_SPEv1p4) + bit 25 - SMCU or external coprocessor operation event when FEAT_SPE_S= ME is + implemented, or IMPLEMENTATION DEFINED event 25 (when implem= ented, + only versions less than FEAT_SPEv1p4) + bit 26-31 - IMPLEMENTATION DEFINED events (only versions less than FEAT_= SPEv1p4) + bit 48-63 - IMPLEMENTATION DEFINED events (when implemented) + +For IMPLEMENTATION DEFINED bits, refer to the CPU TRM if these bits are +implemented. + +The driver will reject events if requested filter bits require unimplement= ed SPE +versions, but will not reject filter bits for unimplemented IMPDEF bits or= when +their related feature is not present (e.g. SME). For example, if FEAT_SPEv= 1p2 is +not implemented, filtering on "Not taken event" (bit 6) will be rejected. =20 So to sample just retired instructions: =20 @@ -171,6 +209,31 @@ or just mispredicted branches: =20 perf record -e arm_spe/event_filter=3D0x80/ -- ./mybench =20 +When set, the following filters can be used to select samples that match a= ny of +the operation types (OR filtering). If only one is set then only samples o= f that +type are collected: + + branch_filter=3D1 - Collect branches (PMSFCR.B) + load_filter=3D1 - Collect loads (PMSFCR.LD) + store_filter=3D1 - Collect stores (PMSFCR.ST) + +When extended filtering is supported (FEAT_SPE_EFT), SIMD and float +pointer operations can also be selected: + + simd_filter=3D1 - Collect SIMD loads, stores and operations (PMS= FCR.SIMD) + float_filter=3D1 - Collect floating point loads, stores and opera= tions (PMSFCR.FP) + +When extended filtering is supported (FEAT_SPE_EFT), operation type filter= s can +be changed to AND using _mask fields. For example samples could be selecte= d if +they are store AND SIMD by setting 'store_filter=3D1,simd_filter=3D1, +store_filter_mask=3D1,simd_filter_mask=3D1'. The new masks are as follows: + + branch_filter_mask=3D1 - Change branch filter behavior from OR to AND (= PMSFCR.Bm) + load_filter_mask=3D1 - Change load filter behavior from OR to AND (PM= SFCR.LDm) + store_filter_mask=3D1 - Change store filter behavior from OR to AND (P= MSFCR.STm) + simd_filter_mask=3D1 - Change SIMD filter behavior from OR to AND (PM= SFCR.SIMDm) + float_filter_mask=3D1 - Change floating point filter behavior from OR = to AND (PMSFCR.FPm) + Viewing the data ~~~~~~~~~~~~~~~~~ =20 @@ -210,6 +273,10 @@ Memory access details are also stored on the samples a= nd this can be viewed with =20 perf report --mem-mode =20 +The latency value from the SPE sample is stored in the 'weight' field of t= he +Perf samples and can be displayed in Perf script and report outputs by ena= bling +its display from the command line. + Common errors ~~~~~~~~~~~~~ =20 @@ -253,6 +320,25 @@ to minimize output. Then run perf stat: perf record -e arm_spe/discard/ -a -N -B --no-bpf-event -o - > /dev/null= & perf stat -e SAMPLE_FEED_LD =20 +Data source filtering +~~~~~~~~~~~~~~~~~~~~~ + +When FEAT_SPE_FDS is present, 'inv_data_src_filter' can be used as a mask = to +filter on a subset (0 - 63) of possible data source IDs. The full range of= data +sources is 0 - 65535 although these are unlikely to be used in practice. D= ata +sources are IMPDEF so refer to the TRM for the mappings. Each bit N of the +filter maps to data source N. The filter is an OR of all the bits, and the= value +provided inv_data_src_filter is inverted before writing to PMSDSFR_EL1 so = that +set bits exclude that data source and cleared bits include that data sourc= e. +Therefore the default value of 0 is equivalent to no filtering (all data s= ources +included). + +For example, to include only data sources 0 and 3, clear bits 0 and 3 +(0xFFFFFFFFFFFFFFF6) + +When 'inv_data_src_filter' is set to 0xFFFFFFFFFFFFFFFF, any samples with = any +data source set are excluded. + SEE ALSO -------- =20 --=20 2.34.1