Re: [PATCH 2/2] clocksource/drivers/timer-ti-dm: Handle dra7 timer wrap errata i940
From: Drew Fustini <hidden>
Date: 2022-02-02 20:54:38
Also in:
linux-omap, lkml
On Mon, Jan 31, 2022 at 12:16:06PM +0200, Tony Lindgren wrote:
Hi, * Drew Fustini [off-list ref] [220129 21:05]:quoted
On Tue, Mar 23, 2021 at 09:43:26AM +0200, Tony Lindgren wrote:quoted
There is a timer wrap issue on dra7 for the ARM architected timer. In a typical clock configuration the timer fails to wrap after 388 days. To work around the issue, we need to use timer-ti-dm percpu timers instead. Let's configure dmtimer3 and 4 as percpu timers by default, and warn about the issue if the dtb is not configured properly.Hi Tony, This causes a conflict for IPU2 which is using timer 3 and 4. From arch/arm/boot/dts/dra7-ipu-dsp-common.dtsi: &ipu2 { mboxes = <&mailbox6 &mbox_ipu2_ipc3x>; ti,timers = <&timer3>; ti,watchdog-timers = <&timer4>, <&timer9>; };OK, sorry I missed that part.quoted
I noticed an error ("could not get timer platform device") when booting mainline on a BeagleBoard X15 (AM578): omap-rproc 55020000.ipu: assigned reserved memory node ipu2-memory@95800000 remoteproc remoteproc1: 55020000.ipu is available remoteproc remoteproc1: powering up 55020000.ipu remoteproc remoteproc1: Booting fw image dra7-ipu2-fw.xem4, size 3747220 omap-rproc 55020000.ipu: could not get timer platform device omap-rproc 55020000.ipu: omap_rproc_enable_timers failed: -19 remoteproc remoteproc1: can't start rproc 55020000.ipu: -19 I switched this errata fix to use timer 15 and 16 instead which resolves the error. Do you think that is an acceptable solution?I think the only difference is that timers 15 and 16 are in l4_per3 instead of l4_per1. I doubt that matters as they are pretty much always clocked in this case. If you want to check you can run cyclictest :)
I ran this with existing errata fix with dmtimer 3 and 4: root@am57xx-evm:~# cyclictest --mlockall --smp --priority=80 --interval=200 --distance=0 # /dev/cpu_dma_latency set to 0us policy: fifo: loadavg: 0.02 0.03 0.05 T: 0 ( 1449) P:80 I:200 C: 800368 Min: 0 Act: 32 Avg: 22 Max: 128 T: 1 ( 1450) P:80 I:200 C: 800301 Min: 0 Act: 12 Avg: 23 Max: 70 And the results after my switch to dmtimer 15 and 16: root@am57xx-evm:~# cyclictest --mlockall --smp --priority=80 --interval=200 --distance=0 # /dev/cpu_dma_latency set to 0us policy: fifo: loadavg: 0.36 0.19 0.07 T: 0 ( 1711) P:80 I:200 C: 759599 Min: 0 Act: 6 Avg: 22 Max: 108 T: 1 ( 1712) P:80 I:200 C: 759539 Min: 0 Act: 19 Avg: 23 Max: 79 This doesn't appear to show any latency regression. Any other options for cyclictest that that you'd recommend trying? Thank you, Drew _______________________________________________ linux-arm-kernel mailing list linux-arm-kernel@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-arm-kernel