<feed xmlns='http://www.w3.org/2005/Atom'>
<title>linux-toradex.git/drivers/dma/imx-dma.c, branch v3.4.87</title>
<subtitle>Linux kernel for Apalis and Colibri modules</subtitle>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/'/>
<entry>
<title>dmaengine: imx-dma: fix slow path issue in prep_dma_cyclic</title>
<updated>2013-10-13T22:42:49+00:00</updated>
<author>
<name>Michael Grzeschik</name>
<email>m.grzeschik@pengutronix.de</email>
</author>
<published>2013-09-17T13:56:06+00:00</published>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/commit/?id=d11fb4bbd90fd424834f51f8f85f6df51d76e5d9'/>
<id>d11fb4bbd90fd424834f51f8f85f6df51d76e5d9</id>
<content type='text'>
commit edc530fe7ee5a562680615d2e7cd205879c751a7 upstream.

When perparing cyclic_dma buffers by the sound layer, it will dump the
following lockdep trace. The leading snd_pcm_action_single get called
with read_lock_irq called. To fix this, we change the kcalloc call from
GFP_KERNEL to GFP_ATOMIC.

WARNING: at kernel/lockdep.c:2740 lockdep_trace_alloc+0xcc/0x114()
DEBUG_LOCKS_WARN_ON(irqs_disabled_flags(flags))
Modules linked in:
CPU: 0 PID: 832 Comm: aplay Not tainted 3.11.0-20130823+ #903
Backtrace:
[&lt;c000b98c&gt;] (dump_backtrace+0x0/0x10c) from [&lt;c000bb28&gt;] (show_stack+0x18/0x1c)
 r6:c004c090 r5:00000009 r4:c2e0bd18 r3:00404000
[&lt;c000bb10&gt;] (show_stack+0x0/0x1c) from [&lt;c02f397c&gt;] (dump_stack+0x20/0x28)
[&lt;c02f395c&gt;] (dump_stack+0x0/0x28) from [&lt;c001531c&gt;] (warn_slowpath_common+0x54/0x70)
[&lt;c00152c8&gt;] (warn_slowpath_common+0x0/0x70) from [&lt;c00153dc&gt;] (warn_slowpath_fmt+0x38/0x40)
 r8:00004000 r7:a3b90000 r6:000080d0 r5:60000093 r4:c2e0a000 r3:00000009
[&lt;c00153a4&gt;] (warn_slowpath_fmt+0x0/0x40) from [&lt;c004c090&gt;] (lockdep_trace_alloc+0xcc/0x114)
 r3:c03955d8 r2:c03907db
[&lt;c004bfc4&gt;] (lockdep_trace_alloc+0x0/0x114) from [&lt;c008f16c&gt;] (__kmalloc+0x34/0x118)
 r6:000080d0 r5:c3800120 r4:000080d0 r3:c040a0f8
[&lt;c008f138&gt;] (__kmalloc+0x0/0x118) from [&lt;c019c95c&gt;] (imxdma_prep_dma_cyclic+0x64/0x168)
 r7:a3b90000 r6:00000004 r5:c39d8420 r4:c3847150
[&lt;c019c8f8&gt;] (imxdma_prep_dma_cyclic+0x0/0x168) from [&lt;c024618c&gt;] (snd_dmaengine_pcm_trigger+0xa8/0x160)
[&lt;c02460e4&gt;] (snd_dmaengine_pcm_trigger+0x0/0x160) from [&lt;c0241fa8&gt;] (soc_pcm_trigger+0x90/0xb4)
 r8:c058c7b0 r7:c3b8140c r6:c39da560 r5:00000001 r4:c3b81000
[&lt;c0241f18&gt;] (soc_pcm_trigger+0x0/0xb4) from [&lt;c022ece4&gt;] (snd_pcm_do_start+0x2c/0x38)
 r7:00000000 r6:00000003 r5:c058c7b0 r4:c3b81000
[&lt;c022ecb8&gt;] (snd_pcm_do_start+0x0/0x38) from [&lt;c022e958&gt;] (snd_pcm_action_single+0x40/0x6c)
[&lt;c022e918&gt;] (snd_pcm_action_single+0x0/0x6c) from [&lt;c022ea64&gt;] (snd_pcm_action_lock_irq+0x7c/0x9c)
 r7:00000003 r6:c3b810f0 r5:c3b810f0 r4:c3b81000
[&lt;c022e9e8&gt;] (snd_pcm_action_lock_irq+0x0/0x9c) from [&lt;c023009c&gt;] (snd_pcm_common_ioctl1+0x7f8/0xfd0)
 r8:c3b7f888 r7:005407b8 r6:c2c991c0 r5:c3b81000 r4:c3b81000 r3:00004142
[&lt;c022f8a4&gt;] (snd_pcm_common_ioctl1+0x0/0xfd0) from [&lt;c023117c&gt;] (snd_pcm_playback_ioctl1+0x464/0x488)
[&lt;c0230d18&gt;] (snd_pcm_playback_ioctl1+0x0/0x488) from [&lt;c02311d4&gt;] (snd_pcm_playback_ioctl+0x34/0x40)
 r8:c3b7f888 r7:00004142 r6:00000004 r5:c2c991c0 r4:005407b8
[&lt;c02311a0&gt;] (snd_pcm_playback_ioctl+0x0/0x40) from [&lt;c00a14a4&gt;] (vfs_ioctl+0x30/0x44)
[&lt;c00a1474&gt;] (vfs_ioctl+0x0/0x44) from [&lt;c00a1fe8&gt;] (do_vfs_ioctl+0x55c/0x5c0)
[&lt;c00a1a8c&gt;] (do_vfs_ioctl+0x0/0x5c0) from [&lt;c00a208c&gt;] (SyS_ioctl+0x40/0x68)
[&lt;c00a204c&gt;] (SyS_ioctl+0x0/0x68) from [&lt;c0009380&gt;] (ret_fast_syscall+0x0/0x44)
 r8:c0009544 r7:00000036 r6:bedeaa58 r5:00000000 r4:000000c0

Signed-off-by: Michael Grzeschik &lt;m.grzeschik@pengutronix.de&gt;
Signed-off-by: Vinod Koul &lt;vinod.koul@intel.com&gt;
Cc: Jonghwan Choi &lt;jhbird.choi@samsung.com&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;

</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
commit edc530fe7ee5a562680615d2e7cd205879c751a7 upstream.

When perparing cyclic_dma buffers by the sound layer, it will dump the
following lockdep trace. The leading snd_pcm_action_single get called
with read_lock_irq called. To fix this, we change the kcalloc call from
GFP_KERNEL to GFP_ATOMIC.

WARNING: at kernel/lockdep.c:2740 lockdep_trace_alloc+0xcc/0x114()
DEBUG_LOCKS_WARN_ON(irqs_disabled_flags(flags))
Modules linked in:
CPU: 0 PID: 832 Comm: aplay Not tainted 3.11.0-20130823+ #903
Backtrace:
[&lt;c000b98c&gt;] (dump_backtrace+0x0/0x10c) from [&lt;c000bb28&gt;] (show_stack+0x18/0x1c)
 r6:c004c090 r5:00000009 r4:c2e0bd18 r3:00404000
[&lt;c000bb10&gt;] (show_stack+0x0/0x1c) from [&lt;c02f397c&gt;] (dump_stack+0x20/0x28)
[&lt;c02f395c&gt;] (dump_stack+0x0/0x28) from [&lt;c001531c&gt;] (warn_slowpath_common+0x54/0x70)
[&lt;c00152c8&gt;] (warn_slowpath_common+0x0/0x70) from [&lt;c00153dc&gt;] (warn_slowpath_fmt+0x38/0x40)
 r8:00004000 r7:a3b90000 r6:000080d0 r5:60000093 r4:c2e0a000 r3:00000009
[&lt;c00153a4&gt;] (warn_slowpath_fmt+0x0/0x40) from [&lt;c004c090&gt;] (lockdep_trace_alloc+0xcc/0x114)
 r3:c03955d8 r2:c03907db
[&lt;c004bfc4&gt;] (lockdep_trace_alloc+0x0/0x114) from [&lt;c008f16c&gt;] (__kmalloc+0x34/0x118)
 r6:000080d0 r5:c3800120 r4:000080d0 r3:c040a0f8
[&lt;c008f138&gt;] (__kmalloc+0x0/0x118) from [&lt;c019c95c&gt;] (imxdma_prep_dma_cyclic+0x64/0x168)
 r7:a3b90000 r6:00000004 r5:c39d8420 r4:c3847150
[&lt;c019c8f8&gt;] (imxdma_prep_dma_cyclic+0x0/0x168) from [&lt;c024618c&gt;] (snd_dmaengine_pcm_trigger+0xa8/0x160)
[&lt;c02460e4&gt;] (snd_dmaengine_pcm_trigger+0x0/0x160) from [&lt;c0241fa8&gt;] (soc_pcm_trigger+0x90/0xb4)
 r8:c058c7b0 r7:c3b8140c r6:c39da560 r5:00000001 r4:c3b81000
[&lt;c0241f18&gt;] (soc_pcm_trigger+0x0/0xb4) from [&lt;c022ece4&gt;] (snd_pcm_do_start+0x2c/0x38)
 r7:00000000 r6:00000003 r5:c058c7b0 r4:c3b81000
[&lt;c022ecb8&gt;] (snd_pcm_do_start+0x0/0x38) from [&lt;c022e958&gt;] (snd_pcm_action_single+0x40/0x6c)
[&lt;c022e918&gt;] (snd_pcm_action_single+0x0/0x6c) from [&lt;c022ea64&gt;] (snd_pcm_action_lock_irq+0x7c/0x9c)
 r7:00000003 r6:c3b810f0 r5:c3b810f0 r4:c3b81000
[&lt;c022e9e8&gt;] (snd_pcm_action_lock_irq+0x0/0x9c) from [&lt;c023009c&gt;] (snd_pcm_common_ioctl1+0x7f8/0xfd0)
 r8:c3b7f888 r7:005407b8 r6:c2c991c0 r5:c3b81000 r4:c3b81000 r3:00004142
[&lt;c022f8a4&gt;] (snd_pcm_common_ioctl1+0x0/0xfd0) from [&lt;c023117c&gt;] (snd_pcm_playback_ioctl1+0x464/0x488)
[&lt;c0230d18&gt;] (snd_pcm_playback_ioctl1+0x0/0x488) from [&lt;c02311d4&gt;] (snd_pcm_playback_ioctl+0x34/0x40)
 r8:c3b7f888 r7:00004142 r6:00000004 r5:c2c991c0 r4:005407b8
[&lt;c02311a0&gt;] (snd_pcm_playback_ioctl+0x0/0x40) from [&lt;c00a14a4&gt;] (vfs_ioctl+0x30/0x44)
[&lt;c00a1474&gt;] (vfs_ioctl+0x0/0x44) from [&lt;c00a1fe8&gt;] (do_vfs_ioctl+0x55c/0x5c0)
[&lt;c00a1a8c&gt;] (do_vfs_ioctl+0x0/0x5c0) from [&lt;c00a208c&gt;] (SyS_ioctl+0x40/0x68)
[&lt;c00a204c&gt;] (SyS_ioctl+0x0/0x68) from [&lt;c0009380&gt;] (ret_fast_syscall+0x0/0x44)
 r8:c0009544 r7:00000036 r6:bedeaa58 r5:00000000 r4:000000c0

Signed-off-by: Michael Grzeschik &lt;m.grzeschik@pengutronix.de&gt;
Signed-off-by: Vinod Koul &lt;vinod.koul@intel.com&gt;
Cc: Jonghwan Choi &lt;jhbird.choi@samsung.com&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;

</pre>
</div>
</content>
</entry>
<entry>
<title>dmaengine: imx-dma: fix callback path in tasklet</title>
<updated>2013-10-13T22:42:49+00:00</updated>
<author>
<name>Michael Grzeschik</name>
<email>m.grzeschik@pengutronix.de</email>
</author>
<published>2013-09-17T13:56:08+00:00</published>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/commit/?id=cd8ccd534cf8782116049336a31b2476b9049ed2'/>
<id>cd8ccd534cf8782116049336a31b2476b9049ed2</id>
<content type='text'>
commit fcaaba6c7136fe47e5a13352f99a64b019b6d2c5 upstream.

We need to free the ld_active list head before jumping into the callback
routine. Otherwise the callback could run into issue_pending and change
our ld_active list head we just going to free. This will run the channel
list into an currupted and undefined state.

Signed-off-by: Michael Grzeschik &lt;m.grzeschik@pengutronix.de&gt;
Signed-off-by: Vinod Koul &lt;vinod.koul@intel.com&gt;
Cc: Jonghwan Choi &lt;jhbird.choi@samsung.com&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;

</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
commit fcaaba6c7136fe47e5a13352f99a64b019b6d2c5 upstream.

We need to free the ld_active list head before jumping into the callback
routine. Otherwise the callback could run into issue_pending and change
our ld_active list head we just going to free. This will run the channel
list into an currupted and undefined state.

Signed-off-by: Michael Grzeschik &lt;m.grzeschik@pengutronix.de&gt;
Signed-off-by: Vinod Koul &lt;vinod.koul@intel.com&gt;
Cc: Jonghwan Choi &lt;jhbird.choi@samsung.com&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;

</pre>
</div>
</content>
</entry>
<entry>
<title>dmaengine: imx-dma: fix lockdep issue between irqhandler and tasklet</title>
<updated>2013-10-13T22:42:49+00:00</updated>
<author>
<name>Michael Grzeschik</name>
<email>m.grzeschik@pengutronix.de</email>
</author>
<published>2013-09-17T13:56:07+00:00</published>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/commit/?id=218118c73db0a1b9aaece4c9ae697745218c3aa5'/>
<id>218118c73db0a1b9aaece4c9ae697745218c3aa5</id>
<content type='text'>
commit 5a276fa6bdf82fd442046969603968c83626ce0b upstream.

The tasklet and irqhandler are using spin_lock while other routines are
using spin_lock_irqsave/restore. This leads to lockdep issues as
described bellow. This patch is changing the code to use
spinlock_irq_save/restore in both code pathes.

As imxdma_xfer_desc always gets called with spin_lock_irqsave lock held,
this patch also removes the spare call inside the routine to avoid
double locking.

[  403.358162] =================================
[  403.362549] [ INFO: inconsistent lock state ]
[  403.366945] 3.10.0-20130823+ #904 Not tainted
[  403.371331] ---------------------------------
[  403.375721] inconsistent {IN-HARDIRQ-W} -&gt; {HARDIRQ-ON-W} usage.
[  403.381769] swapper/0 [HC0[0]:SC1[1]:HE1:SE0] takes:
[  403.386762]  (&amp;(&amp;imxdma-&gt;lock)-&gt;rlock){?.-...}, at: [&lt;c019d77c&gt;] imxdma_tasklet+0x20/0x134
[  403.395201] {IN-HARDIRQ-W} state was registered at:
[  403.400108]   [&lt;c004b264&gt;] mark_lock+0x2a0/0x6b4
[  403.404798]   [&lt;c004d7c8&gt;] __lock_acquire+0x650/0x1a64
[  403.410004]   [&lt;c004f15c&gt;] lock_acquire+0x94/0xa8
[  403.414773]   [&lt;c02f74e4&gt;] _raw_spin_lock+0x54/0x8c
[  403.419720]   [&lt;c019d094&gt;] dma_irq_handler+0x78/0x254
[  403.424845]   [&lt;c0061124&gt;] handle_irq_event_percpu+0x38/0x1b4
[  403.430670]   [&lt;c00612e4&gt;] handle_irq_event+0x44/0x64
[  403.435789]   [&lt;c0063a70&gt;] handle_level_irq+0xd8/0xf0
[  403.440903]   [&lt;c0060a20&gt;] generic_handle_irq+0x28/0x38
[  403.446194]   [&lt;c0009cc4&gt;] handle_IRQ+0x68/0x8c
[  403.450789]   [&lt;c0008714&gt;] avic_handle_irq+0x3c/0x48
[  403.455811]   [&lt;c0008f84&gt;] __irq_svc+0x44/0x74
[  403.460314]   [&lt;c0040b04&gt;] cpu_startup_entry+0x88/0xf4
[  403.465525]   [&lt;c02f00d0&gt;] rest_init+0xb8/0xe0
[  403.470045]   [&lt;c03e07dc&gt;] start_kernel+0x28c/0x2d4
[  403.474986]   [&lt;a0008040&gt;] 0xa0008040
[  403.478709] irq event stamp: 50854
[  403.482140] hardirqs last  enabled at (50854): [&lt;c001c6b8&gt;] tasklet_action+0x38/0xdc
[  403.489954] hardirqs last disabled at (50853): [&lt;c001c6a0&gt;] tasklet_action+0x20/0xdc
[  403.497761] softirqs last  enabled at (50850): [&lt;c001bc64&gt;] _local_bh_enable+0x14/0x18
[  403.505741] softirqs last disabled at (50851): [&lt;c001c268&gt;] irq_exit+0x88/0xdc
[  403.513026]
[  403.513026] other info that might help us debug this:
[  403.519593]  Possible unsafe locking scenario:
[  403.519593]
[  403.525548]        CPU0
[  403.528020]        ----
[  403.530491]   lock(&amp;(&amp;imxdma-&gt;lock)-&gt;rlock);
[  403.534828]   &lt;Interrupt&gt;
[  403.537474]     lock(&amp;(&amp;imxdma-&gt;lock)-&gt;rlock);
[  403.541983]
[  403.541983]  *** DEADLOCK ***
[  403.541983]
[  403.547951] no locks held by swapper/0.
[  403.551813]
[  403.551813] stack backtrace:
[  403.556222] CPU: 0 PID: 0 Comm: swapper Not tainted 3.10.0-20130823+ #904
[  403.563039] Backtrace:
[  403.565581] [&lt;c000b98c&gt;] (dump_backtrace+0x0/0x10c) from [&lt;c000bb28&gt;] (show_stack+0x18/0x1c)
[  403.574054]  r6:00000000 r5:c05c51d8 r4:c040bd58 r3:00200000
[  403.579872] [&lt;c000bb10&gt;] (show_stack+0x0/0x1c) from [&lt;c02f398c&gt;] (dump_stack+0x20/0x28)
[  403.587955] [&lt;c02f396c&gt;] (dump_stack+0x0/0x28) from [&lt;c02f29c8&gt;] (print_usage_bug.part.28+0x224/0x28c)
[  403.597340] [&lt;c02f27a4&gt;] (print_usage_bug.part.28+0x0/0x28c) from [&lt;c004b404&gt;] (mark_lock+0x440/0x6b4)
[  403.606682]  r8:c004a41c r7:00000000 r6:c040bd58 r5:c040c040 r4:00000002
[  403.613566] [&lt;c004afc4&gt;] (mark_lock+0x0/0x6b4) from [&lt;c004d844&gt;] (__lock_acquire+0x6cc/0x1a64)
[  403.622244] [&lt;c004d178&gt;] (__lock_acquire+0x0/0x1a64) from [&lt;c004f15c&gt;] (lock_acquire+0x94/0xa8)
[  403.631010] [&lt;c004f0c8&gt;] (lock_acquire+0x0/0xa8) from [&lt;c02f74e4&gt;] (_raw_spin_lock+0x54/0x8c)
[  403.639614] [&lt;c02f7490&gt;] (_raw_spin_lock+0x0/0x8c) from [&lt;c019d77c&gt;] (imxdma_tasklet+0x20/0x134)
[  403.648434]  r6:c3847010 r5:c040e890 r4:c38470d4
[  403.653194] [&lt;c019d75c&gt;] (imxdma_tasklet+0x0/0x134) from [&lt;c001c70c&gt;] (tasklet_action+0x8c/0xdc)
[  403.662013]  r8:c0599160 r7:00000000 r6:00000000 r5:c040e890 r4:c3847114 r3:c019d75c
[  403.670042] [&lt;c001c680&gt;] (tasklet_action+0x0/0xdc) from [&lt;c001bd4c&gt;] (__do_softirq+0xe4/0x1f0)
[  403.678687]  r7:00000101 r6:c0402000 r5:c059919c r4:00000001
[  403.684498] [&lt;c001bc68&gt;] (__do_softirq+0x0/0x1f0) from [&lt;c001c268&gt;] (irq_exit+0x88/0xdc)
[  403.692652] [&lt;c001c1e0&gt;] (irq_exit+0x0/0xdc) from [&lt;c0009cc8&gt;] (handle_IRQ+0x6c/0x8c)
[  403.700514]  r4:00000030 r3:00000110
[  403.704192] [&lt;c0009c5c&gt;] (handle_IRQ+0x0/0x8c) from [&lt;c0008714&gt;] (avic_handle_irq+0x3c/0x48)
[  403.712664]  r5:c0403f28 r4:c0593ebc
[  403.716343] [&lt;c00086d8&gt;] (avic_handle_irq+0x0/0x48) from [&lt;c0008f84&gt;] (__irq_svc+0x44/0x74)
[  403.724733] Exception stack(0xc0403f28 to 0xc0403f70)
[  403.729841] 3f20:                   00000001 00000004 00000000 20000013 c0402000 c04104a8
[  403.738078] 3f40: 00000002 c0b69620 a0004000 41069264 a03fb5f4 c0403f7c c0403f40 c0403f70
[  403.746301] 3f60: c004b92c c0009e74 20000013 ffffffff
[  403.751383]  r6:ffffffff r5:20000013 r4:c0009e74 r3:c004b92c
[  403.757210] [&lt;c0009e30&gt;] (arch_cpu_idle+0x0/0x4c) from [&lt;c0040b04&gt;] (cpu_startup_entry+0x88/0xf4)
[  403.766161] [&lt;c0040a7c&gt;] (cpu_startup_entry+0x0/0xf4) from [&lt;c02f00d0&gt;] (rest_init+0xb8/0xe0)
[  403.774753] [&lt;c02f0018&gt;] (rest_init+0x0/0xe0) from [&lt;c03e07dc&gt;] (start_kernel+0x28c/0x2d4)
[  403.783051]  r6:c03fc484 r5:ffffffff r4:c040a0e0
[  403.787797] [&lt;c03e0550&gt;] (start_kernel+0x0/0x2d4) from [&lt;a0008040&gt;] (0xa0008040)

Signed-off-by: Michael Grzeschik &lt;m.grzeschik@pengutronix.de&gt;
Signed-off-by: Vinod Koul &lt;vinod.koul@intel.com&gt;
Cc: Jonghwan Choi &lt;jhbird.choi@samsung.com&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;

</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
commit 5a276fa6bdf82fd442046969603968c83626ce0b upstream.

The tasklet and irqhandler are using spin_lock while other routines are
using spin_lock_irqsave/restore. This leads to lockdep issues as
described bellow. This patch is changing the code to use
spinlock_irq_save/restore in both code pathes.

As imxdma_xfer_desc always gets called with spin_lock_irqsave lock held,
this patch also removes the spare call inside the routine to avoid
double locking.

[  403.358162] =================================
[  403.362549] [ INFO: inconsistent lock state ]
[  403.366945] 3.10.0-20130823+ #904 Not tainted
[  403.371331] ---------------------------------
[  403.375721] inconsistent {IN-HARDIRQ-W} -&gt; {HARDIRQ-ON-W} usage.
[  403.381769] swapper/0 [HC0[0]:SC1[1]:HE1:SE0] takes:
[  403.386762]  (&amp;(&amp;imxdma-&gt;lock)-&gt;rlock){?.-...}, at: [&lt;c019d77c&gt;] imxdma_tasklet+0x20/0x134
[  403.395201] {IN-HARDIRQ-W} state was registered at:
[  403.400108]   [&lt;c004b264&gt;] mark_lock+0x2a0/0x6b4
[  403.404798]   [&lt;c004d7c8&gt;] __lock_acquire+0x650/0x1a64
[  403.410004]   [&lt;c004f15c&gt;] lock_acquire+0x94/0xa8
[  403.414773]   [&lt;c02f74e4&gt;] _raw_spin_lock+0x54/0x8c
[  403.419720]   [&lt;c019d094&gt;] dma_irq_handler+0x78/0x254
[  403.424845]   [&lt;c0061124&gt;] handle_irq_event_percpu+0x38/0x1b4
[  403.430670]   [&lt;c00612e4&gt;] handle_irq_event+0x44/0x64
[  403.435789]   [&lt;c0063a70&gt;] handle_level_irq+0xd8/0xf0
[  403.440903]   [&lt;c0060a20&gt;] generic_handle_irq+0x28/0x38
[  403.446194]   [&lt;c0009cc4&gt;] handle_IRQ+0x68/0x8c
[  403.450789]   [&lt;c0008714&gt;] avic_handle_irq+0x3c/0x48
[  403.455811]   [&lt;c0008f84&gt;] __irq_svc+0x44/0x74
[  403.460314]   [&lt;c0040b04&gt;] cpu_startup_entry+0x88/0xf4
[  403.465525]   [&lt;c02f00d0&gt;] rest_init+0xb8/0xe0
[  403.470045]   [&lt;c03e07dc&gt;] start_kernel+0x28c/0x2d4
[  403.474986]   [&lt;a0008040&gt;] 0xa0008040
[  403.478709] irq event stamp: 50854
[  403.482140] hardirqs last  enabled at (50854): [&lt;c001c6b8&gt;] tasklet_action+0x38/0xdc
[  403.489954] hardirqs last disabled at (50853): [&lt;c001c6a0&gt;] tasklet_action+0x20/0xdc
[  403.497761] softirqs last  enabled at (50850): [&lt;c001bc64&gt;] _local_bh_enable+0x14/0x18
[  403.505741] softirqs last disabled at (50851): [&lt;c001c268&gt;] irq_exit+0x88/0xdc
[  403.513026]
[  403.513026] other info that might help us debug this:
[  403.519593]  Possible unsafe locking scenario:
[  403.519593]
[  403.525548]        CPU0
[  403.528020]        ----
[  403.530491]   lock(&amp;(&amp;imxdma-&gt;lock)-&gt;rlock);
[  403.534828]   &lt;Interrupt&gt;
[  403.537474]     lock(&amp;(&amp;imxdma-&gt;lock)-&gt;rlock);
[  403.541983]
[  403.541983]  *** DEADLOCK ***
[  403.541983]
[  403.547951] no locks held by swapper/0.
[  403.551813]
[  403.551813] stack backtrace:
[  403.556222] CPU: 0 PID: 0 Comm: swapper Not tainted 3.10.0-20130823+ #904
[  403.563039] Backtrace:
[  403.565581] [&lt;c000b98c&gt;] (dump_backtrace+0x0/0x10c) from [&lt;c000bb28&gt;] (show_stack+0x18/0x1c)
[  403.574054]  r6:00000000 r5:c05c51d8 r4:c040bd58 r3:00200000
[  403.579872] [&lt;c000bb10&gt;] (show_stack+0x0/0x1c) from [&lt;c02f398c&gt;] (dump_stack+0x20/0x28)
[  403.587955] [&lt;c02f396c&gt;] (dump_stack+0x0/0x28) from [&lt;c02f29c8&gt;] (print_usage_bug.part.28+0x224/0x28c)
[  403.597340] [&lt;c02f27a4&gt;] (print_usage_bug.part.28+0x0/0x28c) from [&lt;c004b404&gt;] (mark_lock+0x440/0x6b4)
[  403.606682]  r8:c004a41c r7:00000000 r6:c040bd58 r5:c040c040 r4:00000002
[  403.613566] [&lt;c004afc4&gt;] (mark_lock+0x0/0x6b4) from [&lt;c004d844&gt;] (__lock_acquire+0x6cc/0x1a64)
[  403.622244] [&lt;c004d178&gt;] (__lock_acquire+0x0/0x1a64) from [&lt;c004f15c&gt;] (lock_acquire+0x94/0xa8)
[  403.631010] [&lt;c004f0c8&gt;] (lock_acquire+0x0/0xa8) from [&lt;c02f74e4&gt;] (_raw_spin_lock+0x54/0x8c)
[  403.639614] [&lt;c02f7490&gt;] (_raw_spin_lock+0x0/0x8c) from [&lt;c019d77c&gt;] (imxdma_tasklet+0x20/0x134)
[  403.648434]  r6:c3847010 r5:c040e890 r4:c38470d4
[  403.653194] [&lt;c019d75c&gt;] (imxdma_tasklet+0x0/0x134) from [&lt;c001c70c&gt;] (tasklet_action+0x8c/0xdc)
[  403.662013]  r8:c0599160 r7:00000000 r6:00000000 r5:c040e890 r4:c3847114 r3:c019d75c
[  403.670042] [&lt;c001c680&gt;] (tasklet_action+0x0/0xdc) from [&lt;c001bd4c&gt;] (__do_softirq+0xe4/0x1f0)
[  403.678687]  r7:00000101 r6:c0402000 r5:c059919c r4:00000001
[  403.684498] [&lt;c001bc68&gt;] (__do_softirq+0x0/0x1f0) from [&lt;c001c268&gt;] (irq_exit+0x88/0xdc)
[  403.692652] [&lt;c001c1e0&gt;] (irq_exit+0x0/0xdc) from [&lt;c0009cc8&gt;] (handle_IRQ+0x6c/0x8c)
[  403.700514]  r4:00000030 r3:00000110
[  403.704192] [&lt;c0009c5c&gt;] (handle_IRQ+0x0/0x8c) from [&lt;c0008714&gt;] (avic_handle_irq+0x3c/0x48)
[  403.712664]  r5:c0403f28 r4:c0593ebc
[  403.716343] [&lt;c00086d8&gt;] (avic_handle_irq+0x0/0x48) from [&lt;c0008f84&gt;] (__irq_svc+0x44/0x74)
[  403.724733] Exception stack(0xc0403f28 to 0xc0403f70)
[  403.729841] 3f20:                   00000001 00000004 00000000 20000013 c0402000 c04104a8
[  403.738078] 3f40: 00000002 c0b69620 a0004000 41069264 a03fb5f4 c0403f7c c0403f40 c0403f70
[  403.746301] 3f60: c004b92c c0009e74 20000013 ffffffff
[  403.751383]  r6:ffffffff r5:20000013 r4:c0009e74 r3:c004b92c
[  403.757210] [&lt;c0009e30&gt;] (arch_cpu_idle+0x0/0x4c) from [&lt;c0040b04&gt;] (cpu_startup_entry+0x88/0xf4)
[  403.766161] [&lt;c0040a7c&gt;] (cpu_startup_entry+0x0/0xf4) from [&lt;c02f00d0&gt;] (rest_init+0xb8/0xe0)
[  403.774753] [&lt;c02f0018&gt;] (rest_init+0x0/0xe0) from [&lt;c03e07dc&gt;] (start_kernel+0x28c/0x2d4)
[  403.783051]  r6:c03fc484 r5:ffffffff r4:c040a0e0
[  403.787797] [&lt;c03e0550&gt;] (start_kernel+0x0/0x2d4) from [&lt;a0008040&gt;] (0xa0008040)

Signed-off-by: Michael Grzeschik &lt;m.grzeschik@pengutronix.de&gt;
Signed-off-by: Vinod Koul &lt;vinod.koul@intel.com&gt;
Cc: Jonghwan Choi &lt;jhbird.choi@samsung.com&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;

</pre>
</div>
</content>
</entry>
<entry>
<title>dmaengine: imx-dma: fix missing unlock on error in imxdma_xfer_desc()</title>
<updated>2012-10-31T17:03:02+00:00</updated>
<author>
<name>Wei Yongjun</name>
<email>yongjun_wei@trendmicro.com.cn</email>
</author>
<published>2012-10-21T11:58:30+00:00</published>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/commit/?id=7e8cec32110be45739569e04f35d83d47064dd86'/>
<id>7e8cec32110be45739569e04f35d83d47064dd86</id>
<content type='text'>
commit 720dfd250e48a8c7fd1b2b8645955413989c4ee0 upstream.

Add the missing unlock on the error handling path in function
imxdma_xfer_desc().

Signed-off-by: Wei Yongjun &lt;yongjun_wei@trendmicro.com.cn&gt;
Signed-off-by: Vinod Koul &lt;vinod.koul@linux.intel.com&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;

</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
commit 720dfd250e48a8c7fd1b2b8645955413989c4ee0 upstream.

Add the missing unlock on the error handling path in function
imxdma_xfer_desc().

Signed-off-by: Wei Yongjun &lt;yongjun_wei@trendmicro.com.cn&gt;
Signed-off-by: Vinod Koul &lt;vinod.koul@linux.intel.com&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;

</pre>
</div>
</content>
</entry>
<entry>
<title>Revert dma: imx-dma: Fix kernel crash due to missing clock conversion</title>
<updated>2012-09-14T17:00:04+00:00</updated>
<author>
<name>Fabio Estevam</name>
<email>festevam@gmail.com</email>
</author>
<published>2012-07-03T18:33:29+00:00</published>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/commit/?id=449daa0ed24c186c7fd014e698f37cbb8aaf7a4c'/>
<id>449daa0ed24c186c7fd014e698f37cbb8aaf7a4c</id>
<content type='text'>
This reverts 9ea2c02bafe276e97b592a046ac733610a6d57fd, which was commit
a2367db2ec5e7fc6fe93e221e0fcdee81b053daf upstream.

It broke the build on 3.4, and was not needed there.

Reported-by: Eric Bénard &lt;eric@eukrea.com&gt;
Cc: Javier Martin &lt;javier.martin@vista-silicon.com&gt;
Cc: Fabio Estevam &lt;fabio.estevam@freescale.com&gt;
Cc: Sascha Hauer &lt;s.hauer@pengutronix.de&gt;
Cc: Vinod Koul &lt;vinod.koul@linux.intel.com&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;

</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
This reverts 9ea2c02bafe276e97b592a046ac733610a6d57fd, which was commit
a2367db2ec5e7fc6fe93e221e0fcdee81b053daf upstream.

It broke the build on 3.4, and was not needed there.

Reported-by: Eric Bénard &lt;eric@eukrea.com&gt;
Cc: Javier Martin &lt;javier.martin@vista-silicon.com&gt;
Cc: Fabio Estevam &lt;fabio.estevam@freescale.com&gt;
Cc: Sascha Hauer &lt;s.hauer@pengutronix.de&gt;
Cc: Vinod Koul &lt;vinod.koul@linux.intel.com&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;

</pre>
</div>
</content>
</entry>
<entry>
<title>dma: imx-dma: Fix kernel crash due to missing clock conversion</title>
<updated>2012-08-26T22:00:39+00:00</updated>
<author>
<name>Fabio Estevam</name>
<email>festevam@gmail.com</email>
</author>
<published>2012-07-03T18:33:29+00:00</published>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/commit/?id=9ea2c02bafe276e97b592a046ac733610a6d57fd'/>
<id>9ea2c02bafe276e97b592a046ac733610a6d57fd</id>
<content type='text'>
commit a2367db2ec5e7fc6fe93e221e0fcdee81b053daf upstream.

With the new i.MX clock infrastructure we need to request the dma clocks
seperately: ahb and ipg clocks.

This fixes the following kernel crash and make audio to be functional again:

root@freescale /home$ aplay audio48k16S.wav
Playing WAVE 'audio48k16S.wav' : Signed 16 bit Little Endian, Rate 48000 Hz, Stereo
Unable to handle kernel NULL pointer dereference at virtual address 00000000
pgd = c7b74000
[00000000] *pgd=a7bb5831, *pte=00000000, *ppte=00000000
Internal error: Oops: 17 [#1] PREEMPT ARM
Modules linked in:
CPU: 0    Not tainted  (3.5.0-rc5-next-20120702-00007-g3028b64 #1128)
PC is at snd_dmaengine_pcm_get_chan+0x8/0x10
LR is at snd_imx_pcm_hw_params+0x18/0xdc
pc : [&lt;c02d3cf8&gt;]    lr : [&lt;c02e95ec&gt;]    psr: a0000013
sp : c7b45e30  ip : ffffffff  fp : c7ae58e0
r10: 00000000  r9 : c7ae981c  r8 : c7b88800
r7 : c7ae5a60  r6 : c7ae5b20  r5 : c7ae9810  r4 : c7afa060
r3 : 00000000  r2 : 00000001  r1 : c7b88800  r0 : c7afa060
Flags: NzCv  IRQs on  FIQs on  Mode SVC_32  ISA ARM  Segment user
Control: 0005317f  Table: a7b74000  DAC: 00000015
Process aplay (pid: 701, stack limit = 0xc7b44270)
Stack: (0xc7b45e30 to 0xc7b46000)
5e20:                                     00100000 00000029 c7b88800 c02db870
5e40: c7ae5a60 c02d4594 00000010 01ae5a60 c7ae5a60 c7ae9810 c7ae9810 c7afa060
5e60: c7ae5b20 c7ae5a60 c7b88800 c02e3ef0 c02e3e08 c7b1e400 c7afa060 c7b88800
5e80: 00000000 c0014da8 c7b44000 00000000 bec566ac c02cd400 c7afa060 c7afa060
5ea0: bec56800 c7b88800 c0014da8 c02cdd7c c04ee710 c04ee7b8 00000003 c005fc74
5ec0: 00000000 7fffffff c7b45f00 c7afa060 c7b67420 c7ba3070 00000004 c0014da8
5ee0: c7b44000 00000000 bec566ac c02ced88 c04e95f8 b6f5ab04 c7b45fb0 0145a468
5f00: 0145a600 bec566bc bec56800 c7b67420 c7ba3070 c00d499c c7b45f18 c7b45f18
5f20: 0000001a 00000004 00000001 c7b44000 c0527f40 00000009 00000008 00000000
5f40: c7b44000 c002c9ec 00000001 c04f0ab0 c04ebec0 00000101 00000000 0000000a
5f60: 60000093 c7b67420 bec56800 c25c4111 00000004 c0014da8 c7b44000 00000000
5f80: bec566ac c00d4f38 b6ffb658 00000000 c0522d80 0145a468 b6fd5000 0145a418
5fa0: 00000036 c0014c00 0145a468 b6fd5000 00000004 c25c4111 bec56800 00020001
5fc0: 0145a468 b6fd5000 0145a418 00000036 0145a468 0145a600 bec566bc bec566ac
5fe0: 0145a468 bec56388 b6f65ce4 b6dcebec 20000010 00000004 00000000 00000000
[&lt;c02d3cf8&gt;] (snd_dmaengine_pcm_get_chan+0x8/0x10) from [&lt;c02e95ec&gt;] (snd_imx_pcm_hw_params+0x18/0xdc)
[&lt;c02e95ec&gt;] (snd_imx_pcm_hw_params+0x18/0xdc) from [&lt;c02e3ef0&gt;] (soc_pcm_hw_params+0xe8/0x1f0)
[&lt;c02e3ef0&gt;] (soc_pcm_hw_params+0xe8/0x1f0) from [&lt;c02cd400&gt;] (snd_pcm_hw_params+0x124/0x474)
[&lt;c02cd400&gt;] (snd_pcm_hw_params+0x124/0x474) from [&lt;c02cdd7c&gt;] (snd_pcm_common_ioctl1+0x4b4/0xf74)
[&lt;c02cdd7c&gt;] (snd_pcm_common_ioctl1+0x4b4/0xf74) from [&lt;c02ced88&gt;] (snd_pcm_playback_ioctl1+0x30/0x510)
[&lt;c02ced88&gt;] (snd_pcm_playback_ioctl1+0x30/0x510) from [&lt;c00d499c&gt;] (do_vfs_ioctl+0x80/0x5e4)
[&lt;c00d499c&gt;] (do_vfs_ioctl+0x80/0x5e4) from [&lt;c00d4f38&gt;] (sys_ioctl+0x38/0x60)
[&lt;c00d4f38&gt;] (sys_ioctl+0x38/0x60) from [&lt;c0014c00&gt;] (ret_fast_syscall+0x0/0x2c)
Code: e593000c e12fff1e e59030a0 e59330bc (e5930000)
---[ end trace fa518c8ba3a74e97 ]--

Reported-by: Javier Martin &lt;javier.martin@vista-silicon.com&gt;
Signed-off-by: Fabio Estevam &lt;fabio.estevam@freescale.com&gt;
Acked-by: Sascha Hauer &lt;s.hauer@pengutronix.de&gt;
Signed-off-by: Vinod Koul &lt;vinod.koul@linux.intel.com&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;

</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
commit a2367db2ec5e7fc6fe93e221e0fcdee81b053daf upstream.

With the new i.MX clock infrastructure we need to request the dma clocks
seperately: ahb and ipg clocks.

This fixes the following kernel crash and make audio to be functional again:

root@freescale /home$ aplay audio48k16S.wav
Playing WAVE 'audio48k16S.wav' : Signed 16 bit Little Endian, Rate 48000 Hz, Stereo
Unable to handle kernel NULL pointer dereference at virtual address 00000000
pgd = c7b74000
[00000000] *pgd=a7bb5831, *pte=00000000, *ppte=00000000
Internal error: Oops: 17 [#1] PREEMPT ARM
Modules linked in:
CPU: 0    Not tainted  (3.5.0-rc5-next-20120702-00007-g3028b64 #1128)
PC is at snd_dmaengine_pcm_get_chan+0x8/0x10
LR is at snd_imx_pcm_hw_params+0x18/0xdc
pc : [&lt;c02d3cf8&gt;]    lr : [&lt;c02e95ec&gt;]    psr: a0000013
sp : c7b45e30  ip : ffffffff  fp : c7ae58e0
r10: 00000000  r9 : c7ae981c  r8 : c7b88800
r7 : c7ae5a60  r6 : c7ae5b20  r5 : c7ae9810  r4 : c7afa060
r3 : 00000000  r2 : 00000001  r1 : c7b88800  r0 : c7afa060
Flags: NzCv  IRQs on  FIQs on  Mode SVC_32  ISA ARM  Segment user
Control: 0005317f  Table: a7b74000  DAC: 00000015
Process aplay (pid: 701, stack limit = 0xc7b44270)
Stack: (0xc7b45e30 to 0xc7b46000)
5e20:                                     00100000 00000029 c7b88800 c02db870
5e40: c7ae5a60 c02d4594 00000010 01ae5a60 c7ae5a60 c7ae9810 c7ae9810 c7afa060
5e60: c7ae5b20 c7ae5a60 c7b88800 c02e3ef0 c02e3e08 c7b1e400 c7afa060 c7b88800
5e80: 00000000 c0014da8 c7b44000 00000000 bec566ac c02cd400 c7afa060 c7afa060
5ea0: bec56800 c7b88800 c0014da8 c02cdd7c c04ee710 c04ee7b8 00000003 c005fc74
5ec0: 00000000 7fffffff c7b45f00 c7afa060 c7b67420 c7ba3070 00000004 c0014da8
5ee0: c7b44000 00000000 bec566ac c02ced88 c04e95f8 b6f5ab04 c7b45fb0 0145a468
5f00: 0145a600 bec566bc bec56800 c7b67420 c7ba3070 c00d499c c7b45f18 c7b45f18
5f20: 0000001a 00000004 00000001 c7b44000 c0527f40 00000009 00000008 00000000
5f40: c7b44000 c002c9ec 00000001 c04f0ab0 c04ebec0 00000101 00000000 0000000a
5f60: 60000093 c7b67420 bec56800 c25c4111 00000004 c0014da8 c7b44000 00000000
5f80: bec566ac c00d4f38 b6ffb658 00000000 c0522d80 0145a468 b6fd5000 0145a418
5fa0: 00000036 c0014c00 0145a468 b6fd5000 00000004 c25c4111 bec56800 00020001
5fc0: 0145a468 b6fd5000 0145a418 00000036 0145a468 0145a600 bec566bc bec566ac
5fe0: 0145a468 bec56388 b6f65ce4 b6dcebec 20000010 00000004 00000000 00000000
[&lt;c02d3cf8&gt;] (snd_dmaengine_pcm_get_chan+0x8/0x10) from [&lt;c02e95ec&gt;] (snd_imx_pcm_hw_params+0x18/0xdc)
[&lt;c02e95ec&gt;] (snd_imx_pcm_hw_params+0x18/0xdc) from [&lt;c02e3ef0&gt;] (soc_pcm_hw_params+0xe8/0x1f0)
[&lt;c02e3ef0&gt;] (soc_pcm_hw_params+0xe8/0x1f0) from [&lt;c02cd400&gt;] (snd_pcm_hw_params+0x124/0x474)
[&lt;c02cd400&gt;] (snd_pcm_hw_params+0x124/0x474) from [&lt;c02cdd7c&gt;] (snd_pcm_common_ioctl1+0x4b4/0xf74)
[&lt;c02cdd7c&gt;] (snd_pcm_common_ioctl1+0x4b4/0xf74) from [&lt;c02ced88&gt;] (snd_pcm_playback_ioctl1+0x30/0x510)
[&lt;c02ced88&gt;] (snd_pcm_playback_ioctl1+0x30/0x510) from [&lt;c00d499c&gt;] (do_vfs_ioctl+0x80/0x5e4)
[&lt;c00d499c&gt;] (do_vfs_ioctl+0x80/0x5e4) from [&lt;c00d4f38&gt;] (sys_ioctl+0x38/0x60)
[&lt;c00d4f38&gt;] (sys_ioctl+0x38/0x60) from [&lt;c0014c00&gt;] (ret_fast_syscall+0x0/0x2c)
Code: e593000c e12fff1e e59030a0 e59330bc (e5930000)
---[ end trace fa518c8ba3a74e97 ]--

Reported-by: Javier Martin &lt;javier.martin@vista-silicon.com&gt;
Signed-off-by: Fabio Estevam &lt;fabio.estevam@freescale.com&gt;
Acked-by: Sascha Hauer &lt;s.hauer@pengutronix.de&gt;
Signed-off-by: Vinod Koul &lt;vinod.koul@linux.intel.com&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;

</pre>
</div>
</content>
</entry>
<entry>
<title>dmaengine: imx-dma: dont complete descriptor for cyclic dma</title>
<updated>2012-04-20T09:58:07+00:00</updated>
<author>
<name>Vinod Koul</name>
<email>vinod.koul@linux.intel.com</email>
</author>
<published>2012-04-20T09:58:07+00:00</published>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/commit/?id=60f2951e3ad9b833bc12e2ea7652be2611771792'/>
<id>60f2951e3ad9b833bc12e2ea7652be2611771792</id>
<content type='text'>
the cookie updates completed the cyclic dma descriptor wrongly. This caused the
BUG_ON to be hit as submit is called for completed descriptor

Fix this by not marking the cyclic descriptor as complete

Tested-by: Javier Martin &lt;javier.martin@vista-silicon.com&gt;
Signed-off-by: Vinod Koul &lt;vinod.koul@linux.intel.com&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
the cookie updates completed the cyclic dma descriptor wrongly. This caused the
BUG_ON to be hit as submit is called for completed descriptor

Fix this by not marking the cyclic descriptor as complete

Tested-by: Javier Martin &lt;javier.martin@vista-silicon.com&gt;
Signed-off-by: Vinod Koul &lt;vinod.koul@linux.intel.com&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>Merge branch 'next' of git://git.infradead.org/users/vkoul/slave-dma</title>
<updated>2012-03-29T22:34:57+00:00</updated>
<author>
<name>Linus Torvalds</name>
<email>torvalds@linux-foundation.org</email>
</author>
<published>2012-03-29T22:34:57+00:00</published>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/commit/?id=ef08e78268423fc4d7fbc3e54bd9a67fc8da7cc5'/>
<id>ef08e78268423fc4d7fbc3e54bd9a67fc8da7cc5</id>
<content type='text'>
Pull slave-dmaengine update from Vinod Koul:
 "This includes the cookie cleanup by Russell, the addition of context
  parameter for dmaengine APIs, more arm dmaengine driver cleanup by
  moving code to dmaengine, this time for imx by Javier and pl330 by
  Boojin along with the usual driver fixes."

Fix up some fairly trivial conflicts with various other cleanups.

* 'next' of git://git.infradead.org/users/vkoul/slave-dma: (67 commits)
  dmaengine: imx: fix the build failure on x86_64
  dmaengine: i.MX: Fix merge of cookie branch.
  dmaengine: i.MX: Add support for interleaved transfers.
  dmaengine: imx-dma: use 'dev_dbg' and 'dev_warn' for messages.
  dmaengine: imx-dma: remove 'imx_dmav1_baseaddr' and 'dma_clk'.
  dmaengine: imx-dma: remove unused arg of imxdma_sg_next.
  dmaengine: imx-dma: remove internal structure.
  dmaengine: imx-dma: remove 'resbytes' field of 'internal' structure.
  dmaengine: imx-dma: remove 'in_use' field of 'internal' structure.
  dmaengine: imx-dma: remove sg member from internal structure.
  dmaengine: imx-dma: remove 'imxdma_setup_sg_hw' function.
  dmaengine: imx-dma: remove 'imxdma_config_channel_hw' function.
  dmaengine: imx-dma: remove 'imxdma_setup_mem2mem_hw' function.
  dmaengine: imx-dma: remove dma_mode member of internal structure.
  dmaengine: imx-dma: remove data member from internal structure.
  dmaengine: imx-dma: merge old dma-v1.c with imx-dma.c
  dmaengine: at_hdmac: add slave config operation
  dmaengine: add context parameter to prep_slave_sg and prep_dma_cyclic
  dmaengine/dma_slave: introduce inline wrappers
  dma: imx-sdma: Treat firmware messages as warnings instead of erros
  ...
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Pull slave-dmaengine update from Vinod Koul:
 "This includes the cookie cleanup by Russell, the addition of context
  parameter for dmaengine APIs, more arm dmaengine driver cleanup by
  moving code to dmaengine, this time for imx by Javier and pl330 by
  Boojin along with the usual driver fixes."

Fix up some fairly trivial conflicts with various other cleanups.

* 'next' of git://git.infradead.org/users/vkoul/slave-dma: (67 commits)
  dmaengine: imx: fix the build failure on x86_64
  dmaengine: i.MX: Fix merge of cookie branch.
  dmaengine: i.MX: Add support for interleaved transfers.
  dmaengine: imx-dma: use 'dev_dbg' and 'dev_warn' for messages.
  dmaengine: imx-dma: remove 'imx_dmav1_baseaddr' and 'dma_clk'.
  dmaengine: imx-dma: remove unused arg of imxdma_sg_next.
  dmaengine: imx-dma: remove internal structure.
  dmaengine: imx-dma: remove 'resbytes' field of 'internal' structure.
  dmaengine: imx-dma: remove 'in_use' field of 'internal' structure.
  dmaengine: imx-dma: remove sg member from internal structure.
  dmaengine: imx-dma: remove 'imxdma_setup_sg_hw' function.
  dmaengine: imx-dma: remove 'imxdma_config_channel_hw' function.
  dmaengine: imx-dma: remove 'imxdma_setup_mem2mem_hw' function.
  dmaengine: imx-dma: remove dma_mode member of internal structure.
  dmaengine: imx-dma: remove data member from internal structure.
  dmaengine: imx-dma: merge old dma-v1.c with imx-dma.c
  dmaengine: at_hdmac: add slave config operation
  dmaengine: add context parameter to prep_slave_sg and prep_dma_cyclic
  dmaengine/dma_slave: introduce inline wrappers
  dma: imx-sdma: Treat firmware messages as warnings instead of erros
  ...
</pre>
</div>
</content>
</entry>
<entry>
<title>dmaengine: i.MX: Fix merge of cookie branch.</title>
<updated>2012-03-26T06:01:32+00:00</updated>
<author>
<name>Javier Martin</name>
<email>javier.martin@vista-silicon.com</email>
</author>
<published>2012-03-22T13:54:15+00:00</published>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/commit/?id=660cd0dd94eba5201c69cd10f2d2fefb52807fa8'/>
<id>660cd0dd94eba5201c69cd10f2d2fefb52807fa8</id>
<content type='text'>
When merging DMA cookie changes a small chunk
of code was dropped. This broke imx-dma driver.

This patch adds this chunk again and fixes the problem.

Signed-off-by: Javier Martin &lt;javier.martin@vista-silicon.com&gt;
Signed-off-by: Vinod Koul &lt;vinod.koul@linux.intel.com&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
When merging DMA cookie changes a small chunk
of code was dropped. This broke imx-dma driver.

This patch adds this chunk again and fixes the problem.

Signed-off-by: Javier Martin &lt;javier.martin@vista-silicon.com&gt;
Signed-off-by: Vinod Koul &lt;vinod.koul@linux.intel.com&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>dmaengine: i.MX: Add support for interleaved transfers.</title>
<updated>2012-03-26T06:01:32+00:00</updated>
<author>
<name>Javier Martin</name>
<email>javier.martin@vista-silicon.com</email>
</author>
<published>2012-03-22T13:54:14+00:00</published>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/commit/?id=f606ab897b6d7f35b57c7474424676e30457520b'/>
<id>f606ab897b6d7f35b57c7474424676e30457520b</id>
<content type='text'>
i.MX2 and i.MX1 chips have the possibility to do
interleaved transfers with two constraints:
- Only one chunk can be used (i.e. only 2D transfers are allowed).
- Only 2 interleaved configurations can be applied at the same time
for all channels.

Since this patch adds a new resource 'slots_2d' which is shared
by all the DMA channels and to avoid disgustin locking BUGs, the
'lock' member has been moved to the global 'imxdma_engine' structure.

Signed-off-by: Javier Martin &lt;javier.martin@vista-silicon.com&gt;
Acked-by: Sascha Hauer &lt;s.hauer@pengutronix.de&gt;
Signed-off-by: Vinod Koul &lt;vinod.koul@linux.intel.com&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
i.MX2 and i.MX1 chips have the possibility to do
interleaved transfers with two constraints:
- Only one chunk can be used (i.e. only 2D transfers are allowed).
- Only 2 interleaved configurations can be applied at the same time
for all channels.

Since this patch adds a new resource 'slots_2d' which is shared
by all the DMA channels and to avoid disgustin locking BUGs, the
'lock' member has been moved to the global 'imxdma_engine' structure.

Signed-off-by: Javier Martin &lt;javier.martin@vista-silicon.com&gt;
Acked-by: Sascha Hauer &lt;s.hauer@pengutronix.de&gt;
Signed-off-by: Vinod Koul &lt;vinod.koul@linux.intel.com&gt;
</pre>
</div>
</content>
</entry>
</feed>
