Re: [PATCH/RFC 0/5] R-Car Gen2 DMAC hardware descriptor list support

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi Morimoto-san,

On Tuesday 22 July 2014 19:17:23 Kuninori Morimoto wrote:
> Hi Laurent
> 
> > The code has been tested by artificially lowering the maximum chunk size
> > to 4096 bytes and running dmatest, which completed sucessfully. Morimoto-
> > san, is there an easy way to test cyclic transfers with your audio driver
> > ?
>
> Thank you for your offer.
> I tested this patchset with audio DMAC (= cyclic transfer)
> but, it doesn't work for me.
> 
> First of all, this sound driver which is using cyclic transfer
> was worked well in shdma-base driver.
> I had sent audio DMA support plafrom side patches before.
> But, of course I'm happy to update sound driver side.
> 
> I will re-send my audio DMAC support patches after this email.
> 
> My troubles are...
> 
> 1. "filter" still can't care "dma0" or "audma0"
> 
>  	dmac0: dma-controller@e6700000 {
> 	..
> 	};
> 	dmac1: dma-controller@e6720000 {
> 	...
> 	};
> 	audma0: dma-contorller@ec700000 {
> 	...
> 	};
> 	audma1: dma-controller@ec720000 {
> 	...
> 	};
> 	audmapp: audio-dma-pp@0xec740000 {
> 	...
> 	};
> 
>   audio driver requests "audma0, 0x01",
>   but, filter accepts it as "dmac0, 0x01"

Indeed, I've fixed the rcar-dmac driver to ignore channels handled by a 
different driver, but not channels handled by the same driver but a different 
device. I'll fix that.

By the way, I've noticed an issue with the snd_soc_rcar driver. If a 
dma_request_slave_channel_compat() call fails in a module probe operation, the 
rsnd_probe() function will return an error immediately

        for_each_rsnd_dai(rdai, priv, i) {
                ret = rsnd_dai_call(probe, &rdai->playback, rdai);
                if (ret)
                        return ret;

                ret = rsnd_dai_call(probe, &rdai->capture, rdai);
                if (ret)
                        return ret;
        }

The modules that have been successfully probed are not cleaned up, so DMA 
channels allocated by modules successfully probed are never released.

> 2. cyclic transfer doesn't work
> 
>    I got attached error.

I'm not too surprised as I haven't tested cyclic DMA yet :-) I'll fix it.

> ----------------------
> Playing WAVE '/home/Calm_16bit_48k.wav' : Signed 16 bit Little Endian, Rate
> 48000 Hz, Stereo ------------[ cut here ]------------
> WARNING: CPU: 0 PID: 0 at
> /opt/home/morimoto/linux/drivers/dma/sh/rcar-dmac.c:1264
> rcar_dmac_isr_channel+0x68/0x184() CPU: 0 PID: 0 Comm: swapper/0 Not
> tainted 3.16.0-rc4-02824-gfc6caf1-dirty #291 Backtrace:
> [<c0011bbc>] (dump_backtrace) from [<c0011df8>] (show_stack+0x18/0x1c)
>  r6:c0516218 r5:00000009 r4:00000000 r3:00200000
> [<c0011de0>] (show_stack) from [<c0437e44>] (dump_stack+0x7c/0x98)
> [<c0437dc8>] (dump_stack) from [<c0024dac>] (warn_slowpath_common+0x68/0x8c)
> r4:00000000 r3:600f0193
> [<c0024d44>] (warn_slowpath_common) from [<c0024ea8>]
> (warn_slowpath_null+0x24/0x2c) r8:edbe6800 r7:00000000 r6:00000000
> r5:3e0c1810 r4:ee278010
> [<c0024e84>] (warn_slowpath_null) from [<c01d4710>]
> (rcar_dmac_isr_channel+0x68/0x184) [<c01d46a8>] (rcar_dmac_isr_channel)
> from [<c005f2dc>] (handle_irq_event_percpu+0x38/0x130) r6:00000000
> r5:00000160 r4:ee3ab3c0 r3:c01d46a8
> [<c005f2a4>] (handle_irq_event_percpu) from [<c005f41c>]
> (handle_irq_event+0x48/0x68) r10:00000000 r9:00000014 r8:edbe6800
> r7:c0587c9c r6:c0587f40 r5:c05a0c84 r4:ee818c40
> [<c005f3d4>] (handle_irq_event) from [<c00621c0>]
> (handle_fasteoi_irq+0xbc/0x144) r5:c05a0c84 r4:ee818c40
> [<c0062104>] (handle_fasteoi_irq) from [<c005ed04>]
> (generic_handle_irq+0x28/0x38) r5:c0583bcc r4:00000160
> [<c005ecdc>] (generic_handle_irq) from [<c000f184>] (handle_IRQ+0x70/0x98)
>  r4:00000160 r3:000001a7
> [<c000f114>] (handle_IRQ) from [<c0009320>] (gic_handle_irq+0x44/0x68)
>  r6:c058e88c r5:c0587c68 r4:f0002000 r3:000001a0
> [<c00092dc>] (gic_handle_irq) from [<c00129c0>] (__irq_svc+0x40/0x50)
> Exception stack(0xc0587c68 to 0xc0587cb0)
> 7c60:                   c05b308c 00000000 0d4a0d4a 0d4b0d4a ee231a00
> edb71b80 7c80: 00000000 00000000 edbe6800 00000014 00000000 c0587cbc
> c0587cc0 c0587cb0 7ca0: c03871f0 c043c4c0 600f0113 ffffffff
>  r6:ffffffff r5:600f0113 r4:c043c4c0 r3:c03871f0
> [<c043c49c>] (_raw_spin_lock) from [<c03871f0>] (ip_defrag+0xaac/0xcb8)
> [<c0386744>] (ip_defrag) from [<c0385a10>] (ip_local_deliver+0x5c/0x268)
>  r10:edb71b80 r9:c058f24c r8:00000008 r7:c05b2f40 r6:edb71b80 r5:edb71b98
>  r4:ee22332e
> [<c03859b4>] (ip_local_deliver) from [<c038626c>] (ip_rcv+0x650/0x6f0)
>  r7:c05b2f40 r6:edb71b80 r5:edb71b98 r4:ee22332e
> [<c0385c1c>] (ip_rcv) from [<c035e6a0>]
> (__netif_receive_skb_core+0x470/0x50c) r9:c058f24c r8:00000008 r7:c05900d0
> r6:00000000 r5:c058f238 r4:00000000 [<c035e230>] (__netif_receive_skb_core)
> from [<c035e908>] (__netif_receive_skb+0x2c/0x80) r10:000005ea r9:edbe6a78
> r8:edbe6d10 r7:0000003f r6:0000003f r5:c058f238 r4:edb71b80
> [<c035e8dc>] (__netif_receive_skb) from [<c035e9c0>]
> (netif_receive_skb_internal+0x64/0xa4) r5:c058f238 r4:edb71b80
> [<c035e95c>] (netif_receive_skb_internal) from [<c0362200>]
> (netif_receive_skb+0x10/0x14) r5:edb71b80 r4:edbe6800
> [<c03621f0>] (netif_receive_skb) from [<c027b230>] (sh_eth_poll+0x214/0x494)
> [<c027b01c>] (sh_eth_poll) from [<c0362784>] (net_rx_action+0xb8/0x174)
> r10:c05880c0 r9:00000040 r8:c05ba8b8 r7:eef9fc88 r6:0000012c r5:eef9fc80
> r4:edbe6d10
> [<c03626cc>] (net_rx_action) from [<c0028a04>] (__do_softirq+0xf0/0x22c)
>  r10:c0586000 r9:00000100 r8:c058808c r7:c0588080 r6:c0586000 r5:c0586018
>  r4:00000008
> [<c0028914>] (__do_softirq) from [<c0028da4>] (irq_exit+0x8c/0xe8)
>  r10:00000000 r9:413fc0f2 r8:ef7fccc0 r7:c0587f74 r6:00000000 r5:c0583bcc
>  r4:c0586028
> [<c0028d18>] (irq_exit) from [<c000f188>] (handle_IRQ+0x74/0x98)
>  r4:000000c2 r3:000001a7
> [<c000f114>] (handle_IRQ) from [<c0009320>] (gic_handle_irq+0x44/0x68)
>  r6:c058e88c r5:c0587f40 r4:f0002000 r3:000001a0
> [<c00092dc>] (gic_handle_irq) from [<c00129c0>] (__irq_svc+0x40/0x50)
> Exception stack(0xc0587f40 to 0xc0587f88)
> 7f40: eef9e490 00000000 0000404a 00000000 c0586018 c0586000 c0586000
> c0579814 7f60: ef7fccc0 413fc0f2 00000000 c0587f94 c0587f98 c0587f88
> c000f484 c000f488 7f80: 600f0013 ffffffff
>  r6:ffffffff r5:600f0013 r4:c000f488 r3:c000f484
> [<c000f45c>] (arch_cpu_idle) from [<c0056428>]
> (cpu_startup_entry+0xf4/0x154) [<c0056334>] (cpu_startup_entry) from
> [<c0434ea8>] (rest_init+0x68/0x80) [<c0434e40>] (rest_init) from
> [<c0548b74>] (start_kernel+0x2cc/0x31c) [<c05488a8>] (start_kernel) from
> [<40008074>] (0x40008074)
> ----------------------

-- 
Regards,

Laurent Pinchart

--
To unsubscribe from this list: send the line "unsubscribe dmaengine" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html




[Index of Archives]     [Linux Kernel]     [Linux ARM (vger)]     [Linux ARM MSM]     [Linux Omap]     [Linux Arm]     [Linux Tegra]     [Fedora ARM]     [Linux for Samsung SOC]     [eCos]     [Linux PCI]     [Linux Fastboot]     [Gcc Help]     [Git]     [DCCP]     [IETF Announce]     [Security]     [Linux MIPS]     [Yosemite Campsites]

  Powered by Linux