Re: [PATCH 3.11-stable] dmaengine: imx-dma: fix slow path issue in prep_dma_cyclic

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

 



Jonghwan Choi <jhbird.choi@xxxxxxxxxxx> writes:

> This patch looks like it should be in the 3.11-stable tree, should we apply
> it?

All the 3 drivers/dma/imx-dma.c patches you're asking to be included
in 3.11:

 6e35f9b dmaengine: imx-dma: fix callback path in tasklet
 a158be1 dmaengine: imx-dma: fix lockdep issue between irqhandler and tasklet
 e1c88f7 dmaengine: imx-dma: fix slow path issue in prep_dma_cyclic

seem to be applicable to older kernels as well.  They are clean
cherry-picks for 3.5 and 3.4 (f628933 "dma: fix comments" can be
applied to solve 6e35f9b).  Is there any reason not to apply them to
these older kernels?

Cheers,
-- 
Luis


>
> ------------------
>
> From: "Michael Grzeschik <m.grzeschik@xxxxxxxxxxxxxx>"
>
> 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:
> [<c000b98c>] (dump_backtrace+0x0/0x10c) from [<c000bb28>]
> (show_stack+0x18/0x1c)
>  r6:c004c090 r5:00000009 r4:c2e0bd18 r3:00404000
> [<c000bb10>] (show_stack+0x0/0x1c) from [<c02f397c>] (dump_stack+0x20/0x28)
> [<c02f395c>] (dump_stack+0x0/0x28) from [<c001531c>]
> (warn_slowpath_common+0x54/0x70)
> [<c00152c8>] (warn_slowpath_common+0x0/0x70) from [<c00153dc>]
> (warn_slowpath_fmt+0x38/0x40)
>  r8:00004000 r7:a3b90000 r6:000080d0 r5:60000093 r4:c2e0a000 r3:00000009
> [<c00153a4>] (warn_slowpath_fmt+0x0/0x40) from [<c004c090>]
> (lockdep_trace_alloc+0xcc/0x114)
>  r3:c03955d8 r2:c03907db
> [<c004bfc4>] (lockdep_trace_alloc+0x0/0x114) from [<c008f16c>]
> (__kmalloc+0x34/0x118)
>  r6:000080d0 r5:c3800120 r4:000080d0 r3:c040a0f8
> [<c008f138>] (__kmalloc+0x0/0x118) from [<c019c95c>]
> (imxdma_prep_dma_cyclic+0x64/0x168)
>  r7:a3b90000 r6:00000004 r5:c39d8420 r4:c3847150
> [<c019c8f8>] (imxdma_prep_dma_cyclic+0x0/0x168) from [<c024618c>]
> (snd_dmaengine_pcm_trigger+0xa8/0x160)
> [<c02460e4>] (snd_dmaengine_pcm_trigger+0x0/0x160) from [<c0241fa8>]
> (soc_pcm_trigger+0x90/0xb4)
>  r8:c058c7b0 r7:c3b8140c r6:c39da560 r5:00000001 r4:c3b81000
> [<c0241f18>] (soc_pcm_trigger+0x0/0xb4) from [<c022ece4>]
> (snd_pcm_do_start+0x2c/0x38)
>  r7:00000000 r6:00000003 r5:c058c7b0 r4:c3b81000
> [<c022ecb8>] (snd_pcm_do_start+0x0/0x38) from [<c022e958>]
> (snd_pcm_action_single+0x40/0x6c)
> [<c022e918>] (snd_pcm_action_single+0x0/0x6c) from [<c022ea64>]
> (snd_pcm_action_lock_irq+0x7c/0x9c)
>  r7:00000003 r6:c3b810f0 r5:c3b810f0 r4:c3b81000
> [<c022e9e8>] (snd_pcm_action_lock_irq+0x0/0x9c) from [<c023009c>]
> (snd_pcm_common_ioctl1+0x7f8/0xfd0)
>  r8:c3b7f888 r7:005407b8 r6:c2c991c0 r5:c3b81000 r4:c3b81000 r3:00004142
> [<c022f8a4>] (snd_pcm_common_ioctl1+0x0/0xfd0) from [<c023117c>]
> (snd_pcm_playback_ioctl1+0x464/0x488)
> [<c0230d18>] (snd_pcm_playback_ioctl1+0x0/0x488) from [<c02311d4>]
> (snd_pcm_playback_ioctl+0x34/0x40)
>  r8:c3b7f888 r7:00004142 r6:00000004 r5:c2c991c0 r4:005407b8
> [<c02311a0>] (snd_pcm_playback_ioctl+0x0/0x40) from [<c00a14a4>]
> (vfs_ioctl+0x30/0x44)
> [<c00a1474>] (vfs_ioctl+0x0/0x44) from [<c00a1fe8>]
> (do_vfs_ioctl+0x55c/0x5c0)
> [<c00a1a8c>] (do_vfs_ioctl+0x0/0x5c0) from [<c00a208c>]
> (SyS_ioctl+0x40/0x68)
> [<c00a204c>] (SyS_ioctl+0x0/0x68) from [<c0009380>]
> (ret_fast_syscall+0x0/0x44)
>  r8:c0009544 r7:00000036 r6:bedeaa58 r5:00000000 r4:000000c0
>
> Signed-off-by: Michael Grzeschik <m.grzeschik@xxxxxxxxxxxxxx>
> Signed-off-by: Vinod Koul <vinod.koul@xxxxxxxxx>
> Signed-off-by: Jonghwan Choi <jhbird.choi@xxxxxxxxxxx>
> ---
>  drivers/dma/imx-dma.c |    2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/drivers/dma/imx-dma.c b/drivers/dma/imx-dma.c
> index ff2aab9..d193998 100644
> --- a/drivers/dma/imx-dma.c
> +++ b/drivers/dma/imx-dma.c
> @@ -885,7 +885,7 @@ static struct dma_async_tx_descriptor
> *imxdma_prep_dma_cyclic(
>  	kfree(imxdmac->sg_list);
>  
>  	imxdmac->sg_list = kcalloc(periods + 1,
> -			sizeof(struct scatterlist), GFP_KERNEL);
> +			sizeof(struct scatterlist), GFP_ATOMIC);
>  	if (!imxdmac->sg_list)
>  		return NULL;
--
To unsubscribe from this list: send the line "unsubscribe stable" 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]     [Kernel Development Newbies]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite Hiking]     [Linux Kernel]     [Linux SCSI]