Received: by 2002:a6b:fb09:0:0:0:0:0 with SMTP id h9csp303397iog; Mon, 13 Jun 2022 03:06:43 -0700 (PDT) X-Google-Smtp-Source: ABdhPJwYcCupiohzZexUF+MtCe6mIVprXjDji5c0/oHcbjSX9VjuFymPVqmFVpLsfiQGb3QPUepC X-Received: by 2002:a17:906:74cc:b0:712:381:9c5a with SMTP id z12-20020a17090674cc00b0071203819c5amr19437518ejl.466.1655114802975; Mon, 13 Jun 2022 03:06:42 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1655114802; cv=none; d=google.com; s=arc-20160816; b=Oujcz7a+o1bxEP9QzM2UaODzrwow8RrhtVdtDlGcAgDmbVrDxbOa2Ro8Aje6nDskS0 dJMYsQp+1LzfT3DuMgWoA+o50fQxXY4/Ckja4FahbYXcUNnoPcUUSMwuRU5VcsuNbIJx gl6BeU4vn0rmEDTWMnng4JOlnKIgGqePOiol0vi7+Yp5aQ+xm/1jlE0qvY7S6JSTctWs zhamSaOmJ52l+zFjmrGXhTAXpt5oOh/r752+5yi1sVNt3G39t94yAfuqHGKW0sPmFmll vPIaHZ6sUN0QXA6zY/mAkAspXmdBODsjfv4ohkdWjPVrmutQ36/lgXOHWh5jswIqzI8i sxWg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from; bh=Lmib5ZD+i/jHtTChzdjbH+zOXoPYCQfNX56alCNhZjw=; b=bCt/dpDNRXEbLn7uzn1X0PDrG8lGDfGmNCGBEY7j6K4TzeIdy1oLbdCpz4K57QvvrI EFbNF/1bkDdRZj2ZFrnquKNJIuMdVOFsw//ZNYtpKBtH8izKSxmApyXRyfWXFEW7NsEI C4b2t8W5atf0etLN/g0JOaiP6w848GPvGh5OHJVIBHCRVyO0SdCSaSBad3e/1S9OqKnm gEH4ALEug4Y+grId/gqVDRfNONInJnnFQPCdObDLPO1N8U2ESVoZaJ33ayBIBDKCHbzT l1onFpfzbyuBgt1hNSC+xK1D87qlaoTr6CqB+17z3cq3r1kXlJbu6MaStNkbDZ94tFYM 4O5w== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=arm.com Return-Path: Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id g23-20020a170906395700b00711d50b288fsi6102411eje.547.2022.06.13.03.06.18; Mon, 13 Jun 2022 03:06:42 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=arm.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S240279AbiFMKDG (ORCPT + 99 others); Mon, 13 Jun 2022 06:03:06 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:41800 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S241453AbiFMKCc (ORCPT ); Mon, 13 Jun 2022 06:02:32 -0400 Received: from foss.arm.com (foss.arm.com [217.140.110.172]) by lindbergh.monkeyblade.net (Postfix) with ESMTP id 6628226CF; Mon, 13 Jun 2022 03:02:29 -0700 (PDT) Received: from usa-sjc-imap-foss1.foss.arm.com (unknown [10.121.207.14]) by usa-sjc-mx-foss1.foss.arm.com (Postfix) with ESMTP id AE1C91042; Mon, 13 Jun 2022 03:02:29 -0700 (PDT) Received: from a077893.arm.com (unknown [10.163.38.134]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPA id 421013F66F; Mon, 13 Jun 2022 03:02:22 -0700 (PDT) From: Anshuman Khandual To: linux-kernel@vger.kernel.org, linux-arm-kernel@lists.infradead.org, peterz@infradead.org, acme@kernel.org, mark.rutland@arm.com, will@kernel.org Cc: Anshuman Khandual , Catalin Marinas , James Clark , Rob Herring , Marc Zyngier , Ingo Molnar , linux-perf-users@vger.kernel.org Subject: [PATCH 8/8] arm64/perf: Enable branch stack sampling Date: Mon, 13 Jun 2022 15:31:19 +0530 Message-Id: <20220613100119.684673-9-anshuman.khandual@arm.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20220613100119.684673-1-anshuman.khandual@arm.com> References: <20220613100119.684673-1-anshuman.khandual@arm.com> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Spam-Status: No, score=-6.9 required=5.0 tests=BAYES_00,RCVD_IN_DNSWL_HI, SPF_HELO_NONE,SPF_NONE,T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org 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 Cc: Will Deacon Cc: Catalin Marinas Cc: linux-kernel@vger.kernel.org Cc: linux-arm-kernel@lists.infradead.org Signed-off-by: Anshuman Khandual --- 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 52a903d26702..efbc6db42b35 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()) { + pr_warn_once("does not have permission for kernel branch filter\n"); + return -EPERM; + } + } + + /* + * Branch stack sampling event can not be supported in + * case either the required driver itself is absent or + * BRBE buffer, is not supported. Besides checking for + * the callback prevents a crash in case it's absent. + */ + if (!armpmu->brbe_supported || !armpmu->brbe_supported(event)) { + pr_warn_once("BRBE is not supported\n"); + return -EOPNOTSUPP; + } + } if (armpmu->map_event(event) == -ENOENT) return -ENOENT; -- 2.25.1