Received: by 2002:a6b:fb09:0:0:0:0:0 with SMTP id h9csp302952iog; Mon, 13 Jun 2022 03:06:11 -0700 (PDT) X-Google-Smtp-Source: ABdhPJzMZiQutG4uqBR44yQJdRgK8xJrOX5m71+oe3pug9IjR24wIIWOLEwntPp1ZornZClokhRx X-Received: by 2002:a50:8e58:0:b0:433:2d3b:ed5 with SMTP id 24-20020a508e58000000b004332d3b0ed5mr26571515edx.246.1655114771057; Mon, 13 Jun 2022 03:06:11 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1655114771; cv=none; d=google.com; s=arc-20160816; b=CmL1Ze2/WpqYCR89wDBWVSPorMKvVJJJR5z+Pznvtc3ZBPmI78ca7iWokqZSUV20VN dWUyrvq/gRNdHlJdXAAI+9zmHWhG7oGR0QPXyrsHTAhlGvTwuIyWnzwNfJwRYMh+xYFI 8VBAwgkX8g98wWdEQBEKoRqP5TfZGoAX5tUhaynWtDpzj4epF7kNQ6ZnHxN3QkpGxHfq Y6gwK6uhbMaNEqjmnL1xsjmw7e3cO8SqfWH7dXM2a5n1fvlowcdXxcy/NEwKTRV8P7kU A6iWLcwdmXrwIBVQQ2upIICjYTIZgS+OsrwUuhqVc7wmyI3A43CMPvj/OJQv32V2wc02 eWrA== 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=PqXIUcQisFQJgTAF2d2EhVESvhDBnNsIii/KcsmtKRM=; b=xBoc6VDW8dxgmCqHx6yyIhLVmfzrsRvlWMiSoQNQxdNPu+31m9xf0483GIwsrYoO1j 9CV/2lWZ2Nl+24PPD88vXHuYseHmxYMpZRIUIfmXPIDa2O7m9Luy0b6Q2dllc/3IUrEl H3tMpSEdmlOZTZhk2Agh5Ra7hW6rf8txLpwICwiyaRS2SVeWPsXwEXsmZGJQhO5Ickmn bgP9DnC6EM/sUpv5AnA2+SEE1U+FHHZAlc6cDUiXd/TGplSUz4K+O3ETW0SeMfACnQVh GkJ6zh+H1AN3+CiWP5W9jA0cUUcwRcVG8rAnxJbPDNvdeJ8+ElKBzWDY155qjhak3+n9 zSNw== 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 e18-20020a056402191200b0042bceff9315si9217495edz.211.2022.06.13.03.05.46; Mon, 13 Jun 2022 03:06:11 -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 S241206AbiFMKCQ (ORCPT + 99 others); Mon, 13 Jun 2022 06:02:16 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:40266 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S241204AbiFMKCL (ORCPT ); Mon, 13 Jun 2022 06:02:11 -0400 Received: from foss.arm.com (foss.arm.com [217.140.110.172]) by lindbergh.monkeyblade.net (Postfix) with ESMTP id 509671D0F3; Mon, 13 Jun 2022 03:02:08 -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 1AE781042; Mon, 13 Jun 2022 03:02:08 -0700 (PDT) Received: from a077893.arm.com (unknown [10.163.38.134]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPA id EBE383F66F; Mon, 13 Jun 2022 03:02:01 -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 5/8] driver/perf/arm_pmu_platform: Add support for BRBE attributes detection Date: Mon, 13 Jun 2022 15:31:16 +0530 Message-Id: <20220613100119.684673-6-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 This adds arm pmu infrastrure to probe BRBE implementation's attributes via driver exported callbacks later. The actual BRBE feature detection will be added by the driver itself. CPU specific BRBE entries, cycle count, format support gets detected during PMU init. This information gets saved in per-cpu struct pmu_hw_events which later helps in operating BRBE during a perf event context. Cc: Will Deacon Cc: Mark Rutland Cc: linux-arm-kernel@lists.infradead.org Cc: linux-kernel@vger.kernel.org Signed-off-by: Anshuman Khandual --- drivers/perf/arm_pmu_platform.c | 34 +++++++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) diff --git a/drivers/perf/arm_pmu_platform.c b/drivers/perf/arm_pmu_platform.c index 513de1f54e2d..800e4a6e8bc3 100644 --- a/drivers/perf/arm_pmu_platform.c +++ b/drivers/perf/arm_pmu_platform.c @@ -172,6 +172,36 @@ static int armpmu_request_irqs(struct arm_pmu *armpmu) return err; } +static void arm_brbe_probe_cpu(void *info) +{ + struct pmu_hw_events *hw_events; + struct arm_pmu *armpmu = info; + + /* + * Return from here, if BRBE driver has not been + * implemented for this PMU. This helps prevent + * kernel crash later when brbe_probe() will be + * called on the PMU. + */ + if (!armpmu->brbe_probe) + return; + + hw_events = per_cpu_ptr(armpmu->hw_events, smp_processor_id()); + armpmu->brbe_probe(hw_events); +} + +static int armpmu_request_brbe(struct arm_pmu *armpmu) +{ + int cpu, err = 0; + + for_each_cpu(cpu, &armpmu->supported_cpus) { + err = smp_call_function_single(cpu, arm_brbe_probe_cpu, armpmu, 1); + if (err) + return err; + } + return err; +} + static void armpmu_free_irqs(struct arm_pmu *armpmu) { int cpu; @@ -229,6 +259,10 @@ int arm_pmu_device_probe(struct platform_device *pdev, if (ret) goto out_free_irqs; + ret = armpmu_request_brbe(pmu); + if (ret) + goto out_free_irqs; + ret = armpmu_register(pmu); if (ret) { dev_err(dev, "failed to register PMU devices!\n"); -- 2.25.1