Re: [PATCH 00/14] Remove legacy sdma code for dt booting omaps

Peter Ujfalusi
2019-12-17T09:53:58Z

Hi Tony,

On 17/12/2019 2.19, Tony Lindgren wrote:
> Hi all,
>
> This series finally removes the legacy sdma code for omaps booting with
> devicetree. The legacy sdma code is still left for omap1, but makes
> further work a bit easier.
>
> We do the removal of legacy sdma code with the following steps:
>
> - Prepare for platform data removal by probing sdma with device tree
> data for the interconnect target module
>
> - Drop unused code and legacy interrupt code for omap2 and later
>
> - Update dmaengine driver to use device tree match data and add
> missing features
>
> - Allocate logical channels directly in the dmaengine driver
>
> - Drop legacy platform init and data

Thanks for doing this!
First things first:
Acked-by: Peter Ujfalusi <peter.ujfalusi@ti.com>
Tested-by: Peter Ujfalusi <peter.ujfalusi@ti.com>

But I was only able to test it with CPU_IDLE=n otherwise (even w/o this series)
I got a flood of (PandaBoard-ES):

[ 315.995819] ------------[ cut here ]------------
[ 316.000457] WARNING: CPU: 0 PID: 0 at drivers/bus/omap_l3_noc.c:141 l3_interrupt_handler+0x264/0x384
[ 316.009613] 44000000.ocp:L3 Standard Error: MASTER USBHOSTHS TARGET ABE (Read Link): At Address: 0x00000000 : Data Access in User mode during Functional access
[ 316.023925] Modules linked in:
[ 316.027008] CPU: 0 PID: 0 Comm: swapper/0 Tainted: G W 5.5.0-rc1-00016-g239582d9ad0c #1078
[ 316.036590] Hardware name: Generic OMAP4 (Flattened Device Tree)
[ 316.042633] [<c01105ac>] (unwind_backtrace) from [<c010b81c>] (show_stack+0x10/0x14)
[ 316.050415] [<c010b81c>] (show_stack) from [<c092dbf4>] (dump_stack+0xc0/0xdc)
[ 316.057678] [<c092dbf4>] (dump_stack) from [<c01366b0>] (__warn+0xa8/0xd4)
[ 316.064575] [<c01366b0>] (__warn) from [<c0136770>] (warn_slowpath_fmt+0x94/0xbc)
[ 316.072204] [<c0136770>] (warn_slowpath_fmt) from [<c04b27c4>] (l3_interrupt_handler+0x264/0x384)
[ 316.081176] [<c04b27c4>] (l3_interrupt_handler) from [<c018b420>] (__handle_irq_event_percpu+0x3c/0x128)
[ 316.090698] [<c018b420>] (__handle_irq_event_percpu) from [<c018b53c>] (handle_irq_event_percpu+0x30/0x84)
[ 316.100433] [<c018b53c>] (handle_irq_event_percpu) from [<c018b5c8>] (handle_irq_event+0x38/0x5c)
[ 316.109344] [<c018b5c8>] (handle_irq_event) from [<c018fdec>] (handle_fasteoi_irq+0xc8/0x180)
[ 316.117889] [<c018fdec>] (handle_fasteoi_irq) from [<c018a674>] (generic_handle_irq+0x20/0x34)
[ 316.127197] [<c018a674>] (generic_handle_irq) from [<c018ac44>] (__handle_domain_irq+0x64/0xdc)
[ 316.135955] [<c018ac44>] (__handle_domain_irq) from [<c04b0c44>] (gic_handle_irq+0x40/0x84)
[ 316.144317] [<c04b0c44>] (gic_handle_irq) from [<c0101aac>] (__irq_svc+0x6c/0xa8)
[ 316.151855] Exception stack(0xc0f01e10 to 0xc0f01e58)
[ 316.157348] 1e00: ffffabcf 2e645000 00000000 c0e64040
[ 316.166107] 1e20: 00000082 c0e63ffc c0f052c0 c0f00000 00000001 ee80c000 c0f052c0 c0fa19c4
[ 316.174316] 1e40: 00000000 c0f01e60 c013bc44 c0102278 60000153 ffffffff
[ 316.181121] [<c0101aac>] (__irq_svc) from [<c0102278>] (__do_softirq+0x78/0x280)
[ 316.188568] [<c0102278>] (__do_softirq) from [<c013bc44>] (irq_exit+0xa8/0xec)
[ 316.195831] [<c013bc44>] (irq_exit) from [<c018ac4c>] (__handle_domain_irq+0x6c/0xdc)
[ 316.203674] [<c018ac4c>] (__handle_domain_irq) from [<c04b0c44>] (gic_handle_irq+0x40/0x84)
[ 316.213134] [<c04b0c44>] (gic_handle_irq) from [<c0101aac>] (__irq_svc+0x6c/0xa8)
[ 316.221130] Exception stack(0xc0f01ee8 to 0xc0f01f30)
[ 316.226196] 1ee0: 00000000 00000000 00010001 ffffffff eef01580 00000002
[ 316.234405] 1f00: ef4a8678 c0f0b750 c0f05124 eef0158c c0f05244 c0fa19c4 00000010 c0f01f38
[ 316.242645] 1f20: ef4a86e8 c0773734 60000153 ffffffff
[ 316.247711] [<c0101aac>] (__irq_svc) from [<c0773734>] (cpuidle_enter_state_coupled+0x2e4/0x428)
[ 316.256530] [<c0773734>] (cpuidle_enter_state_coupled) from [<c0770be8>] (cpuidle_enter+0x44/0x5c)
[ 316.265533] [<c0770be8>] (cpuidle_enter) from [<c0163818>] (do_idle+0x1d8/0x2a4)
[ 316.272949] [<c0163818>] (do_idle) from [<c0163bc0>] (cpu_startup_entry+0x18/0x20)
[ 316.280578] [<c0163bc0>] (cpu_startup_entry) from [<c0e00d04>] (start_kernel+0x3d0/0x46c)
[ 316.288787] ---[ end trace be4a25d25ab32771 ]---

- Péter

> The patches are against v5.5-rc1, and need the following fixes:
>
> 2c81f0f6d3f5 ("bus: ti-sysc: Fix iterating over clocks")
> e709ed70d122 ("bus: ti-sysc: Fix missing reset delay handling")
> 93c60483b5fe ("bus: ti-sysc: Fix missing force mstandby quirk handling")
> 90bdfa0b05e3 ("ARM: OMAP2+: Fix ti_sysc_find_one_clockdomain to check for to_clk_hw_omap")
>
> To make testing easier, I've also pushed out a testing branch at [0][1].
>
> Regards,
>
> Tony
>
>
> [0] git://git.kernel.org/pub/scm/linux/kernel/git/tmlind/linux-omap.git omap-for-v5.6/sdma-testing
> [1] https://git.kernel.org/pub/scm/linux/kernel/git/tmlind/linux-omap.git/log/?h=omap-for-v5.6/sdma-testing
>
>
> Tony Lindgren (14):
> ARM: dts: Add generic compatible for omap sdma instances
> ARM: dts: Configure interconnect target module for omap2 sdma
> ARM: dts: Configure interconnect target module for omap3 sdma
> ARM: OMAP2+: Drop unused sdma functions
> ARM: OMAP2+: Drop sdma interrupt handling for mach-omap2
> ARM: OMAP2+: Configure sdma capabilities directly
> ARM: OMAP2+: Configure dma_plat_info directly and drop dma_dev_attr
> dmaengine: ti: omap-dma: Add device tree match data and use it for
> cpu_pm
> dmaengine: ti: omap-dma: Configure global priority register directly
> dmaengine: ti: omap-dma: Pass sdma auxdata to driver and use it
> dmaengine: ti: omap-dma: Allocate channels directly
> dmaengine: ti: omap-dma: Use cpu notifier to block idle for omap2
> ARM: OMAP2+: Drop legacy init for sdma
> ARM: OMAP2+: Drop legacy platform data for sdma
>
> arch/arm/boot/dts/dra7-l4.dtsi | 3 +-
> arch/arm/boot/dts/omap2.dtsi | 43 +-
> arch/arm/boot/dts/omap2430.dtsi | 4 +
> arch/arm/boot/dts/omap3-n900.dts | 5 +
> arch/arm/boot/dts/omap3.dtsi | 46 +-
> arch/arm/boot/dts/omap36xx.dtsi | 4 +
> arch/arm/boot/dts/omap4-l4.dtsi | 3 +-
> arch/arm/boot/dts/omap5-l4.dtsi | 3 +-
> arch/arm/mach-omap2/common.h | 3 +
> arch/arm/mach-omap2/dma.c | 119 +----
> arch/arm/mach-omap2/omap_device.c | 170 -------
> arch/arm/mach-omap2/omap_device.h | 4 -
> arch/arm/mach-omap2/omap_hwmod_2420_data.c | 34 --
> arch/arm/mach-omap2/omap_hwmod_2430_data.c | 34 --
> .../mach-omap2/omap_hwmod_2xxx_ipblock_data.c | 18 -
> arch/arm/mach-omap2/omap_hwmod_3xxx_data.c | 61 ---
> arch/arm/mach-omap2/omap_hwmod_44xx_data.c | 69 ---
> arch/arm/mach-omap2/omap_hwmod_54xx_data.c | 61 ---
> arch/arm/mach-omap2/omap_hwmod_7xx_data.c | 61 ---
> arch/arm/mach-omap2/omap_hwmod_common_data.h | 1 -
> arch/arm/mach-omap2/pdata-quirks.c | 1 +
> arch/arm/mach-omap2/pm24xx.c | 22 +-
> arch/arm/mach-omap2/pm34xx.c | 5 -
> arch/arm/plat-omap/dma.c | 471 +-----------------
> drivers/dma/ti/omap-dma.c | 288 ++++++++++-
> include/linux/omap-dma.h | 18 -
> 26 files changed, 391 insertions(+), 1160 deletions(-)
>

Texas Instruments Finland Oy, Porkkalankatu 22, 00180 Helsinki. Y-tunnus/Business ID: 0615521-4. Kotipaikka/Domicile: Helsinki