Thread (18 messages) 18 messages, 4 authors, 2022-10-12

Re: [PATCH V3 7/7] arm64/perf: Enable branch stack sampling

From: Suzuki K Poulose <suzuki.poulose@arm.com>
Date: 2022-10-10 15:48:46
Also in: linux-perf-users, lkml

On 10/10/2022 14:55, James Clark wrote:

On 29/09/2022 08:58, Anshuman Khandual wrote:
quoted
Now that all the required pieces are already in place, just enable the perf
branch stack sampling support on arm64 platform, by removing the gate which
blocks it in armpmu_event_init().

Cc: Mark Rutland <mark.rutland@arm.com>
Cc: Will Deacon <will@kernel.org>
Cc: Catalin Marinas <catalin.marinas@arm.com>
Cc: linux-kernel@vger.kernel.org
Cc: linux-arm-kernel@lists.infradead.org
Signed-off-by: Anshuman Khandual <redacted>
---
  drivers/perf/arm_pmu.c | 32 +++++++++++++++++++++++++++++---
  1 file changed, 29 insertions(+), 3 deletions(-)
diff --git a/drivers/perf/arm_pmu.c b/drivers/perf/arm_pmu.c
index 93b36933124f..2a9b988b53c2 100644
--- a/drivers/perf/arm_pmu.c
+++ b/drivers/perf/arm_pmu.c
@@ -537,9 +537,35 @@ static int armpmu_event_init(struct perf_event *event)
  		!cpumask_test_cpu(event->cpu, &armpmu->supported_cpus))
  		return -ENOENT;
  
-	/* does not support taken branch sampling */
-	if (has_branch_stack(event))
-		return -EOPNOTSUPP;
+	if (has_branch_stack(event)) {
+		/*
+		 * BRBE support is absent. Select CONFIG_ARM_BRBE_PMU
+		 * in the config, before branch stack sampling events
+		 * can be requested.
+		 */
+		if (!IS_ENABLED(CONFIG_ARM_BRBE_PMU)) {
+			pr_warn_once("BRBE is disabled, select CONFIG_ARM_BRBE_PMU\n");
+			return -EOPNOTSUPP;
+		}
+
+		if (event->attr.branch_sample_type & PERF_SAMPLE_BRANCH_KERNEL) {
+			if (!perfmon_capable()) {
I'm still getting different behaviour compared to x86 when using
perf_event_paranoid because of this perfmon_capable() call here.
Given the generic events framework already checks this for any
privileged branch samples (i.e., for both KERNEL and HV), the
individual drivers must not add additional restrictions.
quoted
+				pr_warn_once("does not have permission for kernel branch filter\n");
Also I was under the impression that this should be more like a
KERN_INFO loglevel rather than a KERN_WARNING. It's more like expected
behavior rather than unexpected behavior and as far as I know anyone who
sees something in dmesg might think something has gone wrong and try to
follow it up. It is quite a useful message but I remember getting a
review like this before and it made sense to me.
+1

Suzuki


_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help