[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <20230614134034.3p3p75a3jophi2eu@mercury.elektranox.org>
Date: Wed, 14 Jun 2023 15:40:34 +0200
From: Sebastian Reichel <sebastian.reichel@...labora.com>
To: Sascha Hauer <s.hauer@...gutronix.de>
Cc: linux-rockchip@...ts.infradead.org,
linux-arm-kernel@...ts.infradead.org, linux-kernel@...r.kernel.org,
linux-pm@...r.kernel.org, Heiko Stuebner <heiko@...ech.de>,
Kyungmin Park <kyungmin.park@...sung.com>,
MyungJoo Ham <myungjoo.ham@...sung.com>,
Will Deacon <will@...nel.org>,
Mark Rutland <mark.rutland@....com>, kernel@...gutronix.de,
Michael Riesch <michael.riesch@...fvision.net>,
Robin Murphy <robin.murphy@....com>,
Vincent Legoll <vincent.legoll@...il.com>,
Rob Herring <robh+dt@...nel.org>,
Krzysztof Kozlowski <krzysztof.kozlowski+dt@...aro.org>,
Conor Dooley <conor+dt@...nel.org>, devicetree@...r.kernel.org
Subject: Re: [PATCH v5 00/25] Add perf support to the rockchip-dfi driver
Hi,
On Wed, May 24, 2023 at 10:31:28AM +0200, Sascha Hauer wrote:
> This is v5 of the series adding perf support to the rockchip DFI driver.
>
> A lot has changed in the perf driver since v4. First of all the review
> feedback from Robin and Jonathan has been integrated. The perf driver
> now not only supports monitoring the total DDR utilization, but also the
> individual channels. I also reworked the way the raw 32bit counter
> values are summed up to 64bit perf values, so hopefully the code is
> easier to follow now.
>
> lockdep found out that that locking in the perf driver was broken, so I
> reworked that as well. None of the perf hooks allows locking with
> mutexes or spinlocks, so in perf it's not possible to enable the DFI
> controller when needed. Instead I now unconditionally enable the DFI
> controller during probe when perf is enabled.
>
> Furthermore the hrtimer I use for reading out the hardware counter
> values before they overflow race with perf. Now a seqlock is used to
> prevent that.
>
> The RK3588 device tree changes for the DFI were not part of v4. As
> Vincent Legoll showed interest in testing this series the necessary
> device tree changes are now part of this series.
I tested the series on RK3588 EVB1. The read/write byts looks
sensible. Sometimes cycles reads unrealistic values, though:
Performance counter stats for 'system wide':
18446744070475110400 rockchip_ddr/cycles/
828.63 MB rockchip_ddr/read-bytes/
207.19 MB rockchip_ddr/read-bytes0/
207.15 MB rockchip_ddr/read-bytes1/
207.14 MB rockchip_ddr/read-bytes2/
207.15 MB rockchip_ddr/read-bytes3/
1.48 MB rockchip_ddr/write-bytes/
0.37 MB rockchip_ddr/write-bytes0/
0.37 MB rockchip_ddr/write-bytes1/
0.37 MB rockchip_ddr/write-bytes2/
0.38 MB rockchip_ddr/write-bytes3/
830.12 MB rockchip_ddr/bytes/
1.004239766 seconds time elapsed
(This is with memdump running in parallel)
Otherwise the series is
Tested-by: Sebastian Reichel <sebastian.reichel@...labora.com>
-- Sebastian
> Changes since v4:
> - Add device tree changes for RK3588
> - Use seqlock to protect perf counter values from hrtimer
> - Unconditionally enable DFI when perf is enabled
> - Bring back changes to dts/binding patches that were lost in v4
>
> Changes since v3:
> - Add RK3588 support
>
> Changes since v2:
> - Fix broken reference to binding
> - Add Reviewed-by from Rob
>
> Changes since v1:
> - Fix example to actually match the binding and fix the warnings resulted thereof
> - Make addition of rockchip,rk3568-dfi an extra patch
>
> Sascha Hauer (25):
> PM / devfreq: rockchip-dfi: Make pmu regmap mandatory
> 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: 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: give variable a better name
> PM / devfreq: rockchip-dfi: Add perf support
> PM / devfreq: rockchip-dfi: make register stride SoC specific
> PM / devfreq: rockchip-dfi: account for multiple DDRMON_CTRL registers
> PM / devfreq: rockchip-dfi: add support for RK3588
> dt-bindings: devfreq: event: convert Rockchip DFI binding to yaml
> dt-bindings: devfreq: event: rockchip,dfi: Add rk3568 support
> dt-bindings: devfreq: event: rockchip,dfi: Add rk3588 support
> arm64: dts: rockchip: rk3399: Enable DFI
> arm64: dts: rockchip: rk356x: Add DFI
> arm64: dts: rockchip: rk3588s: Add DFI
>
> .../bindings/devfreq/event/rockchip,dfi.yaml | 84 ++
> .../bindings/devfreq/event/rockchip-dfi.txt | 18 -
> .../rockchip,rk3399-dmc.yaml | 2 +-
> arch/arm64/boot/dts/rockchip/rk3399.dtsi | 1 -
> arch/arm64/boot/dts/rockchip/rk356x.dtsi | 7 +
> arch/arm64/boot/dts/rockchip/rk3588s.dtsi | 16 +
> drivers/devfreq/event/rockchip-dfi.c | 796 +++++++++++++++---
> drivers/devfreq/rk3399_dmc.c | 10 +-
> include/soc/rockchip/rk3399_grf.h | 9 +-
> include/soc/rockchip/rk3568_grf.h | 13 +
> include/soc/rockchip/rk3588_grf.h | 18 +
> include/soc/rockchip/rockchip_grf.h | 18 +
> 12 files changed, 854 insertions(+), 138 deletions(-)
> create mode 100644 Documentation/devicetree/bindings/devfreq/event/rockchip,dfi.yaml
> delete mode 100644 Documentation/devicetree/bindings/devfreq/event/rockchip-dfi.txt
> create mode 100644 include/soc/rockchip/rk3568_grf.h
> create mode 100644 include/soc/rockchip/rk3588_grf.h
> create mode 100644 include/soc/rockchip/rockchip_grf.h
>
> --
> 2.39.2
>
Download attachment "signature.asc" of type "application/pgp-signature" (834 bytes)
Powered by blists - more mailing lists