projects
/
profile
/
ivi
/
kernel-x86-ivi.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
| inline |
side by side
(parent:
c2b9e97
)
dmaengine: imx-dma: fix slow path issue in prep_dma_cyclic
author
Michael Grzeschik
<m.grzeschik@pengutronix.de>
Tue, 17 Sep 2013 13:56:06 +0000
(15:56 +0200)
committer
Vinod Koul
<vinod.koul@intel.com>
Fri, 4 Oct 2013 09:04:47 +0000
(14:34 +0530)
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@pengutronix.de>
Signed-off-by: Vinod Koul <vinod.koul@intel.com>
drivers/dma/imx-dma.c
patch
|
blob
|
history
diff --git
a/drivers/dma/imx-dma.c
b/drivers/dma/imx-dma.c
index 78f8ca5fccee91e7a422c419df4ee0ab427d4ad4..442af6189cbc6ba36ca7866f9f4e7fe2e70f53db 100644
(file)
--- a/
drivers/dma/imx-dma.c
+++ b/
drivers/dma/imx-dma.c
@@
-883,7
+883,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;