From patchwork Fri Feb 3 12:49:54 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Sascha Hauer X-Patchwork-Id: 13127465 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id E9F0DC636D6 for ; Fri, 3 Feb 2023 12:56:40 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender: Content-Transfer-Encoding:Content-Type:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:MIME-Version:Message-Id:Date:Subject:Cc :To:From:Reply-To:Content-ID:Content-Description:Resent-Date:Resent-From: Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:In-Reply-To:References: List-Owner; bh=GeD02/GjQaDF5tweiuseJFZBGCiEDPQW/FMgnqofEPI=; b=vJzl82uoijqocJ NRcUXirYomceYhtjVvVh0wBS6reM4Vln5C5Joq/9Q+23YUDkNTEKwdqCxe8IwDaseV5TNWE2a+a28 NpOoX2R9bU2koCmvQal4Ptg58iHHQAoI9RR1Fkfbv3wpVDEWWstXlEuhzxYFe5s/ZbsTrfVzqJxAz GoHJvPFi5pvTtjy5dbtZXTgrXDPiGRVc1vW0naztjoidTLIscrLBroEUIniFF1Vti9GenOQyUz9UV 89QSEfN0bmCgHaIGlagjRir2XpF219/r6ChoLZyE1dgih6spBABcL1nHKlAoAanh0vcucf8n8Gab8 G8M78rOs1WMv2c0cD+ng==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.94.2 #2 (Red Hat Linux)) id 1pNvcF-001tBC-Tq; Fri, 03 Feb 2023 12:56:31 +0000 Received: from metis.ext.pengutronix.de ([2001:67c:670:201:290:27ff:fe1d:cc33]) by bombadil.infradead.org with esmtps (Exim 4.94.2 #2 (Red Hat Linux)) id 1pNvWN-001pxZ-UA for linux-rockchip@lists.infradead.org; Fri, 03 Feb 2023 12:50:34 +0000 Received: from drehscheibe.grey.stw.pengutronix.de ([2a0a:edc0:0:c01:1d::a2]) by metis.ext.pengutronix.de with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1pNvWE-0000a6-5E; Fri, 03 Feb 2023 13:50:18 +0100 Received: from [2a0a:edc0:0:1101:1d::28] (helo=dude02.red.stw.pengutronix.de) by drehscheibe.grey.stw.pengutronix.de with esmtp (Exim 4.94.2) (envelope-from ) id 1pNvW9-002OpS-Be; Fri, 03 Feb 2023 13:50:14 +0100 Received: from sha by dude02.red.stw.pengutronix.de with local (Exim 4.94.2) (envelope-from ) id 1pNvW9-000Zk9-QM; Fri, 03 Feb 2023 13:50:13 +0100 From: Sascha Hauer To: linux-pm@vger.kernel.org Cc: linux-rockchip@lists.infradead.org, linux-arm-kernel@lists.infradead.org, devicetree@vger.kernel.org, Heiko Stuebner , Kyungmin Park , MyungJoo Ham , Will Deacon , Mark Rutland , kernel@pegutronix.de, Michael Riesch , Sascha Hauer Subject: [PATCH 00/18] Add perf support to the rockchip-dfi driver Date: Fri, 3 Feb 2023 13:49:54 +0100 Message-Id: <20230203125012.3804008-1-s.hauer@pengutronix.de> X-Mailer: git-send-email 2.30.2 MIME-Version: 1.0 X-SA-Exim-Connect-IP: 2a0a:edc0:0:c01:1d::a2 X-SA-Exim-Mail-From: sha@pengutronix.de X-SA-Exim-Scanned: No (on metis.ext.pengutronix.de); SAEximRunCond expanded to false X-PTX-Original-Recipient: linux-rockchip@lists.infradead.org X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20230203_045028_160390_DAF4127F X-CRM114-Status: GOOD ( 18.18 ) X-BeenThere: linux-rockchip@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: Upstream kernel work for Rockchip platforms List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "Linux-rockchip" Errors-To: linux-rockchip-bounces+linux-rockchip=archiver.kernel.org@lists.infradead.org This series adds perf support to the Rockchip DFI driver. The DFI is a unit for measuring DRAM performance. Its driver is currently located under drivers/devfreq/event/ as it serves as an event driver for DRAM frequency scaling. With this series it can also be used as a perf driver for measuring DRAM throughput. Usage looks like: perf stat -a -e rockchip_ddr/cycles/,\ rockchip_ddr/read-bytes/,\ rockchip_ddr/write-bytes/,\ rockchip_ddr/bytes/ sleep 1 Performance counter stats for 'system wide': 1582524826 rockchip_ddr/cycles/ 1802.25 MB rockchip_ddr/read-bytes/ 1793.72 MB rockchip_ddr/write-bytes/ 3595.90 MB rockchip_ddr/bytes/ 1.014369709 seconds time elapsed My target SoC is RK3568 which is not yet supported by the driver, so the series starts with some cleanups and preparations, then RK3568 support is added and finally perf support. The driver is tested on both a RK3568 board and a RK3399 board, the latter with dual channel memory. The measured values look sane, read-bytes plus write-bytes is equal to totally transferred bytes, the values reported by perf are slightly higher than the values my copy from/to RAM test tool reports, as expected. Sascha Sascha Hauer (18): PM / devfreq: rockchip-dfi: Embed desc into private data struct PM / devfreq: rockchip-dfi: use consistent name for private data struct PM / devfreq: rockchip-dfi: Make pmu regmap mandatory PM / devfreq: rockchip-dfi: Add SoC specific init function PM / devfreq: rockchip-dfi: dfi store raw values in counter struct PM / devfreq: rockchip-dfi: Use free running counter PM / devfreq: rockchip-dfi: introduce channel mask PM / devfreq: rk3399_dmc,dfi: generalize DDRTYPE defines PM / devfreq: rockchip-dfi: Clean up DDR type register defines PM / devfreq: rockchip-dfi: Add RK3568 support PM / devfreq: rockchip-dfi: Handle LPDDR2 correctly PM / devfreq: rockchip-dfi: Handle LPDDR4X PM / devfreq: rockchip-dfi: Pass private data struct to internal functions PM / devfreq: rockchip-dfi: Prepare for multiple users PM / devfreq: rockchip-dfi: Add perf support arm64: dts: rockchip: rk3399: Enable DFI arm64: dts: rockchip: rk356x: Add DFI dt-bindings: devfreq: event: convert Rockchip DFI binding to yaml .../bindings/devfreq/event/rockchip-dfi.txt | 18 - .../bindings/devfreq/event/rockchip-dfi.yaml | 38 + arch/arm64/boot/dts/rockchip/rk3399.dtsi | 1 - arch/arm64/boot/dts/rockchip/rk356x.dtsi | 6 + drivers/devfreq/event/rockchip-dfi.c | 659 +++++++++++++++--- drivers/devfreq/rk3399_dmc.c | 10 +- include/soc/rockchip/rk3399_grf.h | 9 +- include/soc/rockchip/rk3568_grf.h | 13 + include/soc/rockchip/rockchip_grf.h | 16 + 9 files changed, 638 insertions(+), 132 deletions(-) delete mode 100644 Documentation/devicetree/bindings/devfreq/event/rockchip-dfi.txt create mode 100644 Documentation/devicetree/bindings/devfreq/event/rockchip-dfi.yaml create mode 100644 include/soc/rockchip/rk3568_grf.h create mode 100644 include/soc/rockchip/rockchip_grf.h