diff for duplicates of <1528822708.13468.9.camel@nxp.com> diff --git a/a/1.txt b/N1/1.txt index 1722958..74cf459 100644 --- a/a/1.txt +++ b/N1/1.txt @@ -7,88 +7,88 @@ dynamically in virt-dma instead of static allocated as before. I'll make another uart patch into my next version patchset. -[???46.155406] ===================================================== -[???46.161503] WARNING: HARDIRQ-safe -> HARDIRQ-unsafe lock order +[ 46.155406] ===================================================== +[ 46.161503] WARNING: HARDIRQ-safe -> HARDIRQ-unsafe lock order detected -[???46.168122] 4.17.0-rc6-00008-g7caafa3-dirty #48 Not tainted -[???46.173696] ----------------------------------------------------- -[???46.179795] mxc_uart_stress/419 [HC0[0]:SC0[0]:HE0:SE1] is trying to +[ 46.168122] 4.17.0-rc6-00008-g7caafa3-dirty #48 Not tainted +[ 46.173696] ----------------------------------------------------- +[ 46.179795] mxc_uart_stress/419 [HC0[0]:SC0[0]:HE0:SE1] is trying to acquire: -[???46.186934] fa7c1440 (fs_reclaim){+.+.}, at: +[ 46.186934] fa7c1440 (fs_reclaim){+.+.}, at: fs_reclaim_acquire.part.3+0x0/0x48 -[???46.194270] -[???46.194270] and this task is already holding: -[???46.200106] 09a17fda (&port_lock_key){-.-.}, at: +[ 46.194270] +[ 46.194270] and this task is already holding: +[ 46.200106] 09a17fda (&port_lock_key){-.-.}, at: uart_write+0x84/0x190 -[???46.206658] which would create a new lock dependency: -[???46.211710]??(&port_lock_key){-.-.} -> (fs_reclaim){+.+.} -[???46.217132] -[???46.217132] but this new dependency connects a HARDIRQ-irq-safe +[ 46.206658] which would create a new lock dependency: +[ 46.211710] (&port_lock_key){-.-.} -> (fs_reclaim){+.+.} +[ 46.217132] +[ 46.217132] but this new dependency connects a HARDIRQ-irq-safe lock: -[???46.225051]??(&port_lock_key){-.-.} -[???46.225062] -[???46.225062] ... which became HARDIRQ-irq-safe at: -[???46.234740]???lock_acquire+0x70/0x90 -[???46.238326]???_raw_spin_lock_irqsave+0x40/0x54 -[???46.242777]???imx_uart_console_write+0x1bc/0x1e0 -[???46.247402]???console_unlock+0x320/0x5f0 -[???46.251329]???vprintk_emit+0x22c/0x3fc -[???46.255082]???vprintk_default+0x28/0x30 -[???46.258923]???vprintk_func+0x78/0xcc -[???46.262503]???printk+0x34/0x54 -[???46.265566]???crng_fast_load+0xf8/0x138 -[???46.269407]???add_interrupt_randomness+0x21c/0x24c -[???46.274204]???handle_irq_event_percpu+0x40/0x84 -[???46.278739]???handle_irq_event+0x40/0x64 -[???46.282667]???handle_fasteoi_irq+0xbc/0x178 -[???46.286854]???generic_handle_irq+0x28/0x3c -[???46.290954]???__handle_domain_irq+0x6c/0xe8 -[???46.295148]???gic_handle_irq+0x64/0xc4 -[???46.298904]???__irq_svc+0x70/0x98 -[???46.302225]???_raw_spin_unlock_irq+0x30/0x34 -[???46.306505]???finish_task_switch+0xc0/0x27c -[???46.310693]???__schedule+0x2c0/0x79c -[???46.314272]???schedule_idle+0x40/0x84 -[???46.317941]???do_idle+0x178/0x2b4 -[???46.321259]???cpu_startup_entry+0x20/0x24 -[???46.325278]???rest_init+0x214/0x264 -[???46.328775]???start_kernel+0x39c/0x424 -[???46.332527]?????(null) -[???46.334891] -[???46.334891] to a HARDIRQ-irq-unsafe lock: -[???46.340379]??(fs_reclaim){+.+.} -[???46.340391] -[???46.340391] ... which became HARDIRQ-irq-unsafe at: -[???46.349885] ... -[???46.349895]???lock_acquire+0x70/0x90 -[???46.355225]???fs_reclaim_acquire.part.3+0x38/0x48 -[???46.359933]???fs_reclaim_acquire+0x1c/0x20 -[???46.364036]???kmem_cache_alloc+0x2c/0x174 -[???46.368051]???alloc_worker.constprop.10+0x1c/0x58 -[???46.372759]???init_rescuer.part.4+0x18/0xa4 -[???46.376952]???workqueue_init+0xc0/0x210 -[???46.380793]???kernel_init_freeable+0x58/0x1d8 -[???46.385156]???kernel_init+0x10/0x11c -[???46.388736]???ret_from_fork+0x14/0x20 -[???46.392399]?????(null) -[???46.394762] -[???46.394762] other info that might help us debug this: -[???46.394762] -[???46.402769]??Possible interrupt unsafe locking scenario: -[???46.402769] -[???46.409560]????????CPU0????????????????????CPU1 -[???46.414092]????????----????????????????????---- -[???46.418622]???lock(fs_reclaim); -[???46.421772]????????????????????????????????local_irq_disable(); -[???46.427693]????????????????????????????????lock(&port_lock_key); -[???46.433707]????????????????????????????????lock(fs_reclaim); -[???46.439372]???<Interrupt> -[???46.441993]?????lock(&port_lock_key); -[???46.445661] -[???46.445661]??*** DEADLOCK *** -[???46.445661] +[ 46.225051] (&port_lock_key){-.-.} +[ 46.225062] +[ 46.225062] ... which became HARDIRQ-irq-safe at: +[ 46.234740] lock_acquire+0x70/0x90 +[ 46.238326] _raw_spin_lock_irqsave+0x40/0x54 +[ 46.242777] imx_uart_console_write+0x1bc/0x1e0 +[ 46.247402] console_unlock+0x320/0x5f0 +[ 46.251329] vprintk_emit+0x22c/0x3fc +[ 46.255082] vprintk_default+0x28/0x30 +[ 46.258923] vprintk_func+0x78/0xcc +[ 46.262503] printk+0x34/0x54 +[ 46.265566] crng_fast_load+0xf8/0x138 +[ 46.269407] add_interrupt_randomness+0x21c/0x24c +[ 46.274204] handle_irq_event_percpu+0x40/0x84 +[ 46.278739] handle_irq_event+0x40/0x64 +[ 46.282667] handle_fasteoi_irq+0xbc/0x178 +[ 46.286854] generic_handle_irq+0x28/0x3c +[ 46.290954] __handle_domain_irq+0x6c/0xe8 +[ 46.295148] gic_handle_irq+0x64/0xc4 +[ 46.298904] __irq_svc+0x70/0x98 +[ 46.302225] _raw_spin_unlock_irq+0x30/0x34 +[ 46.306505] finish_task_switch+0xc0/0x27c +[ 46.310693] __schedule+0x2c0/0x79c +[ 46.314272] schedule_idle+0x40/0x84 +[ 46.317941] do_idle+0x178/0x2b4 +[ 46.321259] cpu_startup_entry+0x20/0x24 +[ 46.325278] rest_init+0x214/0x264 +[ 46.328775] start_kernel+0x39c/0x424 +[ 46.332527] (null) +[ 46.334891] +[ 46.334891] to a HARDIRQ-irq-unsafe lock: +[ 46.340379] (fs_reclaim){+.+.} +[ 46.340391] +[ 46.340391] ... which became HARDIRQ-irq-unsafe at: +[ 46.349885] ... +[ 46.349895] lock_acquire+0x70/0x90 +[ 46.355225] fs_reclaim_acquire.part.3+0x38/0x48 +[ 46.359933] fs_reclaim_acquire+0x1c/0x20 +[ 46.364036] kmem_cache_alloc+0x2c/0x174 +[ 46.368051] alloc_worker.constprop.10+0x1c/0x58 +[ 46.372759] init_rescuer.part.4+0x18/0xa4 +[ 46.376952] workqueue_init+0xc0/0x210 +[ 46.380793] kernel_init_freeable+0x58/0x1d8 +[ 46.385156] kernel_init+0x10/0x11c +[ 46.388736] ret_from_fork+0x14/0x20 +[ 46.392399] (null) +[ 46.394762] +[ 46.394762] other info that might help us debug this: +[ 46.394762] +[ 46.402769] Possible interrupt unsafe locking scenario: +[ 46.402769] +[ 46.409560] CPU0 CPU1 +[ 46.414092] ---- ---- +[ 46.418622] lock(fs_reclaim); +[ 46.421772] local_irq_disable(); +[ 46.427693] lock(&port_lock_key); +[ 46.433707] lock(fs_reclaim); +[ 46.439372] <Interrupt> +[ 46.441993] lock(&port_lock_key); +[ 46.445661] +[ 46.445661] *** DEADLOCK *** +[ 46.445661] -On ?, 2018-06-11 at 13:01 +0200, Lucas Stach wrote: +On 一, 2018-06-11 at 13:01 +0200, Lucas Stach wrote: > Hi Robin, > > this series breaks serial DMA for me. I wasn't able to dig in deeper @@ -102,19 +102,19 @@ On ?, 2018-06-11 at 13:01 +0200, Lucas Stach wrote: > Am Montag, den 11.06.2018, 22:59 +0800 schrieb Robin Gong: > > > > The legacy sdma driver has below limitations or drawbacks: -> > ? 1. Hardcode the max BDs number as "PAGE_SIZE / sizeof(*)", and +> > 1. Hardcode the max BDs number as "PAGE_SIZE / sizeof(*)", and > > alloc -> > ?????one page size for one channel regardless of only few BDs +> > one page size for one channel regardless of only few BDs > > needed -> > ?????most time. But in few cases, the max PAGE_SIZE maybe not +> > most time. But in few cases, the max PAGE_SIZE maybe not > > enough. -> > ? 2. One SDMA channel can't stop immediatley once channel disabled +> > 2. One SDMA channel can't stop immediatley once channel disabled > > which -> > ?????means SDMA interrupt may come in after this channel +> > means SDMA interrupt may come in after this channel > > terminated.There -> > ?????are some patches for this corner case such as commit +> > are some patches for this corner case such as commit > > "2746e2c389f9", -> > ?????but not cover non-cyclic. +> > but not cover non-cyclic. > > > > The common virt-dma overcomes the above limitations. It can alloc > > bd @@ -130,50 +130,50 @@ On ?, 2018-06-11 at 13:01 +0200, Lucas Stach wrote: > > maintain. > > > > Change from v2: -> > ? 1. include Sascha's patch to make the main patch easier to +> > 1. include Sascha's patch to make the main patch easier to > > review. -> > ?????Thanks Sacha. -> > ? 2. remove useless 'desc'/'chan' in struct sdma_channe. +> > Thanks Sacha. +> > 2. remove useless 'desc'/'chan' in struct sdma_channe. > > > > Change from v1: -> > ? 1. split v1 patch into 5 patches. -> > ? 2. remove some unnecessary condition check. -> > ? 3. remove unnecessary 'pending' list. +> > 1. split v1 patch into 5 patches. +> > 2. remove some unnecessary condition check. +> > 3. remove unnecessary 'pending' list. > > > > Robin Gong (5): -> > ? dmaengine: imx-sdma: add virt-dma support -> > ? Revert "dmaengine: imx-sdma: fix pagefault when channel is +> > dmaengine: imx-sdma: add virt-dma support +> > Revert "dmaengine: imx-sdma: fix pagefault when channel is > > disabled -> > ????during interrupt" -> > ? dmaengine: imx-sdma: remove usless lock -> > ? dmaengine: imx-sdma: remove the maximum limation for bd numbers -> > ? dmaengine: imx-sdma: add sdma_transfer_init to decrease code +> > during interrupt" +> > dmaengine: imx-sdma: remove usless lock +> > dmaengine: imx-sdma: remove the maximum limation for bd numbers +> > dmaengine: imx-sdma: add sdma_transfer_init to decrease code > > overlap > > -> > ?drivers/dma/Kconfig????|???1 + -> > ?drivers/dma/imx-sdma.c | 392 ++++++++++++++++++++++++++++--------- +> > drivers/dma/Kconfig | 1 + +> > drivers/dma/imx-sdma.c | 392 ++++++++++++++++++++++++++++--------- > > ------------ -> > ?2 files changed, 227 insertions(+), 166 deletions(-) +> > 2 files changed, 227 insertions(+), 166 deletions(-) > > -> > --? +> > -- > > 2.7.4 > > > > Robin Gong (5): -> > ? dmaengine: imx-sdma: add virt-dma support -> > ? Revert "dmaengine: imx-sdma: fix pagefault when channel is +> > dmaengine: imx-sdma: add virt-dma support +> > Revert "dmaengine: imx-sdma: fix pagefault when channel is > > disabled -> > ????during interrupt" -> > ? dmaengine: imx-sdma: remove usless lock -> > ? dmaengine: imx-sdma: remove the maximum limation for bd numbers -> > ? dmaengine: imx-sdma: add sdma_transfer_init to decrease code +> > during interrupt" +> > dmaengine: imx-sdma: remove usless lock +> > dmaengine: imx-sdma: remove the maximum limation for bd numbers +> > dmaengine: imx-sdma: add sdma_transfer_init to decrease code > > overlap > > > > Sascha Hauer (1): -> > ? dmaengine: imx-sdma: factor out a struct sdma_desc from struct -> > ????sdma_channel +> > dmaengine: imx-sdma: factor out a struct sdma_desc from struct +> > sdma_channel > > -> > ?drivers/dma/Kconfig????|???1 + -> > ?drivers/dma/imx-sdma.c | 391 ++++++++++++++++++++++++++++--------- +> > drivers/dma/Kconfig | 1 + +> > drivers/dma/imx-sdma.c | 391 ++++++++++++++++++++++++++++--------- > > ------------ -> > ?2 files changed, 226 insertions(+), 166 deletions(-) +> > 2 files changed, 226 insertions(+), 166 deletions(-) > > diff --git a/a/content_digest b/N1/content_digest index 759574a..3d68cf2 100644 --- a/a/content_digest +++ b/N1/content_digest @@ -1,9 +1,16 @@ "ref\01528729173-28684-1-git-send-email-yibin.gong@nxp.com\0" "ref\01528714877.2842.3.camel@pengutronix.de\0" - "From\0yibin.gong@nxp.com (Robin Gong)\0" - "Subject\0[PATCH v3 0/6] add virt-dma support for imx-sdma\0" + "From\0Robin Gong <yibin.gong@nxp.com>\0" + "Subject\0Re: [PATCH v3 0/6] add virt-dma support for imx-sdma\0" "Date\0Tue, 12 Jun 2018 08:58:49 +0000\0" - "To\0linux-arm-kernel@lists.infradead.org\0" + "To\0l.stach@pengutronix.de <l.stach@pengutronix.de>" + s.hauer@pengutronix.de <s.hauer@pengutronix.de> + vkoul@kernel.org <vkoul@kernel.org> + " dan.j.williams@intel.com <dan.j.williams@intel.com>\0" + "Cc\0dmaengine@vger.kernel.org <dmaengine@vger.kernel.org>" + linux-kernel@vger.kernel.org <linux-kernel@vger.kernel.org> + linux-arm-kernel@lists.infradead.org <linux-arm-kernel@lists.infradead.org> + " dl-linux-imx <linux-imx@nxp.com>\0" "\00:1\0" "b\0" "Hi Lucas,\n" @@ -15,88 +22,88 @@ "make another uart patch into my next version patchset.\n" "\n" "\n" - "[???46.155406] =====================================================\n" - "[???46.161503] WARNING: HARDIRQ-safe -> HARDIRQ-unsafe lock order\n" + "[\302\240\302\240\302\24046.155406] =====================================================\n" + "[\302\240\302\240\302\24046.161503] WARNING: HARDIRQ-safe -> HARDIRQ-unsafe lock order\n" "detected\n" - "[???46.168122] 4.17.0-rc6-00008-g7caafa3-dirty #48 Not tainted\n" - "[???46.173696] -----------------------------------------------------\n" - "[???46.179795] mxc_uart_stress/419 [HC0[0]:SC0[0]:HE0:SE1] is trying to\n" + "[\302\240\302\240\302\24046.168122] 4.17.0-rc6-00008-g7caafa3-dirty #48 Not tainted\n" + "[\302\240\302\240\302\24046.173696] -----------------------------------------------------\n" + "[\302\240\302\240\302\24046.179795] mxc_uart_stress/419 [HC0[0]:SC0[0]:HE0:SE1] is trying to\n" "acquire:\n" - "[???46.186934] fa7c1440 (fs_reclaim){+.+.}, at:\n" + "[\302\240\302\240\302\24046.186934] fa7c1440 (fs_reclaim){+.+.}, at:\n" "fs_reclaim_acquire.part.3+0x0/0x48\n" - "[???46.194270]\n" - "[???46.194270] and this task is already holding:\n" - "[???46.200106] 09a17fda (&port_lock_key){-.-.}, at:\n" + "[\302\240\302\240\302\24046.194270]\n" + "[\302\240\302\240\302\24046.194270] and this task is already holding:\n" + "[\302\240\302\240\302\24046.200106] 09a17fda (&port_lock_key){-.-.}, at:\n" "uart_write+0x84/0x190\n" - "[???46.206658] which would create a new lock dependency:\n" - "[???46.211710]??(&port_lock_key){-.-.} -> (fs_reclaim){+.+.}\n" - "[???46.217132]\n" - "[???46.217132] but this new dependency connects a HARDIRQ-irq-safe\n" + "[\302\240\302\240\302\24046.206658] which would create a new lock dependency:\n" + "[\302\240\302\240\302\24046.211710]\302\240\302\240(&port_lock_key){-.-.} -> (fs_reclaim){+.+.}\n" + "[\302\240\302\240\302\24046.217132]\n" + "[\302\240\302\240\302\24046.217132] but this new dependency connects a HARDIRQ-irq-safe\n" "lock:\n" - "[???46.225051]??(&port_lock_key){-.-.}\n" - "[???46.225062]\n" - "[???46.225062] ... which became HARDIRQ-irq-safe at:\n" - "[???46.234740]???lock_acquire+0x70/0x90\n" - "[???46.238326]???_raw_spin_lock_irqsave+0x40/0x54\n" - "[???46.242777]???imx_uart_console_write+0x1bc/0x1e0\n" - "[???46.247402]???console_unlock+0x320/0x5f0\n" - "[???46.251329]???vprintk_emit+0x22c/0x3fc\n" - "[???46.255082]???vprintk_default+0x28/0x30\n" - "[???46.258923]???vprintk_func+0x78/0xcc\n" - "[???46.262503]???printk+0x34/0x54\n" - "[???46.265566]???crng_fast_load+0xf8/0x138\n" - "[???46.269407]???add_interrupt_randomness+0x21c/0x24c\n" - "[???46.274204]???handle_irq_event_percpu+0x40/0x84\n" - "[???46.278739]???handle_irq_event+0x40/0x64\n" - "[???46.282667]???handle_fasteoi_irq+0xbc/0x178\n" - "[???46.286854]???generic_handle_irq+0x28/0x3c\n" - "[???46.290954]???__handle_domain_irq+0x6c/0xe8\n" - "[???46.295148]???gic_handle_irq+0x64/0xc4\n" - "[???46.298904]???__irq_svc+0x70/0x98\n" - "[???46.302225]???_raw_spin_unlock_irq+0x30/0x34\n" - "[???46.306505]???finish_task_switch+0xc0/0x27c\n" - "[???46.310693]???__schedule+0x2c0/0x79c\n" - "[???46.314272]???schedule_idle+0x40/0x84\n" - "[???46.317941]???do_idle+0x178/0x2b4\n" - "[???46.321259]???cpu_startup_entry+0x20/0x24\n" - "[???46.325278]???rest_init+0x214/0x264\n" - "[???46.328775]???start_kernel+0x39c/0x424\n" - "[???46.332527]?????(null)\n" - "[???46.334891]\n" - "[???46.334891] to a HARDIRQ-irq-unsafe lock:\n" - "[???46.340379]??(fs_reclaim){+.+.}\n" - "[???46.340391]\n" - "[???46.340391] ... which became HARDIRQ-irq-unsafe at:\n" - "[???46.349885] ...\n" - "[???46.349895]???lock_acquire+0x70/0x90\n" - "[???46.355225]???fs_reclaim_acquire.part.3+0x38/0x48\n" - "[???46.359933]???fs_reclaim_acquire+0x1c/0x20\n" - "[???46.364036]???kmem_cache_alloc+0x2c/0x174\n" - "[???46.368051]???alloc_worker.constprop.10+0x1c/0x58\n" - "[???46.372759]???init_rescuer.part.4+0x18/0xa4\n" - "[???46.376952]???workqueue_init+0xc0/0x210\n" - "[???46.380793]???kernel_init_freeable+0x58/0x1d8\n" - "[???46.385156]???kernel_init+0x10/0x11c\n" - "[???46.388736]???ret_from_fork+0x14/0x20\n" - "[???46.392399]?????(null)\n" - "[???46.394762]\n" - "[???46.394762] other info that might help us debug this:\n" - "[???46.394762]\n" - "[???46.402769]??Possible interrupt unsafe locking scenario:\n" - "[???46.402769]\n" - "[???46.409560]????????CPU0????????????????????CPU1\n" - "[???46.414092]????????----????????????????????----\n" - "[???46.418622]???lock(fs_reclaim);\n" - "[???46.421772]????????????????????????????????local_irq_disable();\n" - "[???46.427693]????????????????????????????????lock(&port_lock_key);\n" - "[???46.433707]????????????????????????????????lock(fs_reclaim);\n" - "[???46.439372]???<Interrupt>\n" - "[???46.441993]?????lock(&port_lock_key);\n" - "[???46.445661]\n" - "[???46.445661]??*** DEADLOCK ***\n" - "[???46.445661]\n" + "[\302\240\302\240\302\24046.225051]\302\240\302\240(&port_lock_key){-.-.}\n" + "[\302\240\302\240\302\24046.225062]\n" + "[\302\240\302\240\302\24046.225062] ... which became HARDIRQ-irq-safe at:\n" + "[\302\240\302\240\302\24046.234740]\302\240\302\240\302\240lock_acquire+0x70/0x90\n" + "[\302\240\302\240\302\24046.238326]\302\240\302\240\302\240_raw_spin_lock_irqsave+0x40/0x54\n" + "[\302\240\302\240\302\24046.242777]\302\240\302\240\302\240imx_uart_console_write+0x1bc/0x1e0\n" + "[\302\240\302\240\302\24046.247402]\302\240\302\240\302\240console_unlock+0x320/0x5f0\n" + "[\302\240\302\240\302\24046.251329]\302\240\302\240\302\240vprintk_emit+0x22c/0x3fc\n" + "[\302\240\302\240\302\24046.255082]\302\240\302\240\302\240vprintk_default+0x28/0x30\n" + "[\302\240\302\240\302\24046.258923]\302\240\302\240\302\240vprintk_func+0x78/0xcc\n" + "[\302\240\302\240\302\24046.262503]\302\240\302\240\302\240printk+0x34/0x54\n" + "[\302\240\302\240\302\24046.265566]\302\240\302\240\302\240crng_fast_load+0xf8/0x138\n" + "[\302\240\302\240\302\24046.269407]\302\240\302\240\302\240add_interrupt_randomness+0x21c/0x24c\n" + "[\302\240\302\240\302\24046.274204]\302\240\302\240\302\240handle_irq_event_percpu+0x40/0x84\n" + "[\302\240\302\240\302\24046.278739]\302\240\302\240\302\240handle_irq_event+0x40/0x64\n" + "[\302\240\302\240\302\24046.282667]\302\240\302\240\302\240handle_fasteoi_irq+0xbc/0x178\n" + "[\302\240\302\240\302\24046.286854]\302\240\302\240\302\240generic_handle_irq+0x28/0x3c\n" + "[\302\240\302\240\302\24046.290954]\302\240\302\240\302\240__handle_domain_irq+0x6c/0xe8\n" + "[\302\240\302\240\302\24046.295148]\302\240\302\240\302\240gic_handle_irq+0x64/0xc4\n" + "[\302\240\302\240\302\24046.298904]\302\240\302\240\302\240__irq_svc+0x70/0x98\n" + "[\302\240\302\240\302\24046.302225]\302\240\302\240\302\240_raw_spin_unlock_irq+0x30/0x34\n" + "[\302\240\302\240\302\24046.306505]\302\240\302\240\302\240finish_task_switch+0xc0/0x27c\n" + "[\302\240\302\240\302\24046.310693]\302\240\302\240\302\240__schedule+0x2c0/0x79c\n" + "[\302\240\302\240\302\24046.314272]\302\240\302\240\302\240schedule_idle+0x40/0x84\n" + "[\302\240\302\240\302\24046.317941]\302\240\302\240\302\240do_idle+0x178/0x2b4\n" + "[\302\240\302\240\302\24046.321259]\302\240\302\240\302\240cpu_startup_entry+0x20/0x24\n" + "[\302\240\302\240\302\24046.325278]\302\240\302\240\302\240rest_init+0x214/0x264\n" + "[\302\240\302\240\302\24046.328775]\302\240\302\240\302\240start_kernel+0x39c/0x424\n" + "[\302\240\302\240\302\24046.332527]\302\240\302\240\302\240\302\240\302\240(null)\n" + "[\302\240\302\240\302\24046.334891]\n" + "[\302\240\302\240\302\24046.334891] to a HARDIRQ-irq-unsafe lock:\n" + "[\302\240\302\240\302\24046.340379]\302\240\302\240(fs_reclaim){+.+.}\n" + "[\302\240\302\240\302\24046.340391]\n" + "[\302\240\302\240\302\24046.340391] ... which became HARDIRQ-irq-unsafe at:\n" + "[\302\240\302\240\302\24046.349885] ...\n" + "[\302\240\302\240\302\24046.349895]\302\240\302\240\302\240lock_acquire+0x70/0x90\n" + "[\302\240\302\240\302\24046.355225]\302\240\302\240\302\240fs_reclaim_acquire.part.3+0x38/0x48\n" + "[\302\240\302\240\302\24046.359933]\302\240\302\240\302\240fs_reclaim_acquire+0x1c/0x20\n" + "[\302\240\302\240\302\24046.364036]\302\240\302\240\302\240kmem_cache_alloc+0x2c/0x174\n" + "[\302\240\302\240\302\24046.368051]\302\240\302\240\302\240alloc_worker.constprop.10+0x1c/0x58\n" + "[\302\240\302\240\302\24046.372759]\302\240\302\240\302\240init_rescuer.part.4+0x18/0xa4\n" + "[\302\240\302\240\302\24046.376952]\302\240\302\240\302\240workqueue_init+0xc0/0x210\n" + "[\302\240\302\240\302\24046.380793]\302\240\302\240\302\240kernel_init_freeable+0x58/0x1d8\n" + "[\302\240\302\240\302\24046.385156]\302\240\302\240\302\240kernel_init+0x10/0x11c\n" + "[\302\240\302\240\302\24046.388736]\302\240\302\240\302\240ret_from_fork+0x14/0x20\n" + "[\302\240\302\240\302\24046.392399]\302\240\302\240\302\240\302\240\302\240(null)\n" + "[\302\240\302\240\302\24046.394762]\n" + "[\302\240\302\240\302\24046.394762] other info that might help us debug this:\n" + "[\302\240\302\240\302\24046.394762]\n" + "[\302\240\302\240\302\24046.402769]\302\240\302\240Possible interrupt unsafe locking scenario:\n" + "[\302\240\302\240\302\24046.402769]\n" + "[\302\240\302\240\302\24046.409560]\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240CPU0\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240CPU1\n" + "[\302\240\302\240\302\24046.414092]\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240----\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240----\n" + "[\302\240\302\240\302\24046.418622]\302\240\302\240\302\240lock(fs_reclaim);\n" + "[\302\240\302\240\302\24046.421772]\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240local_irq_disable();\n" + "[\302\240\302\240\302\24046.427693]\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240lock(&port_lock_key);\n" + "[\302\240\302\240\302\24046.433707]\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240lock(fs_reclaim);\n" + "[\302\240\302\240\302\24046.439372]\302\240\302\240\302\240<Interrupt>\n" + "[\302\240\302\240\302\24046.441993]\302\240\302\240\302\240\302\240\302\240lock(&port_lock_key);\n" + "[\302\240\302\240\302\24046.445661]\n" + "[\302\240\302\240\302\24046.445661]\302\240\302\240*** DEADLOCK ***\n" + "[\302\240\302\240\302\24046.445661]\n" "\n" - "On ?, 2018-06-11 at 13:01 +0200, Lucas Stach wrote:\n" + "On \344\270\200, 2018-06-11 at 13:01 +0200, Lucas Stach wrote:\n" "> Hi Robin,\n" "> \n" "> this series breaks serial DMA for me. I wasn't able to dig in deeper\n" @@ -110,19 +117,19 @@ "> Am Montag, den 11.06.2018, 22:59 +0800 schrieb Robin Gong:\n" "> > \n" "> > The legacy sdma driver has below limitations or drawbacks:\n" - "> > ? 1. Hardcode the max BDs number as \"PAGE_SIZE / sizeof(*)\", and\n" + "> > \302\240 1. Hardcode the max BDs number as \"PAGE_SIZE / sizeof(*)\", and\n" "> > alloc\n" - "> > ?????one page size for one channel regardless of only few BDs\n" + "> > \302\240\302\240\302\240\302\240\302\240one page size for one channel regardless of only few BDs\n" "> > needed\n" - "> > ?????most time. But in few cases, the max PAGE_SIZE maybe not\n" + "> > \302\240\302\240\302\240\302\240\302\240most time. But in few cases, the max PAGE_SIZE maybe not\n" "> > enough.\n" - "> > ? 2. One SDMA channel can't stop immediatley once channel disabled\n" + "> > \302\240 2. One SDMA channel can't stop immediatley once channel disabled\n" "> > which\n" - "> > ?????means SDMA interrupt may come in after this channel\n" + "> > \302\240\302\240\302\240\302\240\302\240means SDMA interrupt may come in after this channel\n" "> > terminated.There\n" - "> > ?????are some patches for this corner case such as commit\n" + "> > \302\240\302\240\302\240\302\240\302\240are some patches for this corner case such as commit\n" "> > \"2746e2c389f9\",\n" - "> > ?????but not cover non-cyclic.\n" + "> > \302\240\302\240\302\240\302\240\302\240but not cover non-cyclic.\n" "> > \n" "> > The common virt-dma overcomes the above limitations. It can alloc\n" "> > bd\n" @@ -138,52 +145,52 @@ "> > maintain.\n" "> > \n" "> > Change from v2:\n" - "> > ? 1. include Sascha's patch to make the main patch easier to\n" + "> > \302\240 1. include Sascha's patch to make the main patch easier to\n" "> > review.\n" - "> > ?????Thanks Sacha.\n" - "> > ? 2. remove useless 'desc'/'chan' in struct sdma_channe.\n" + "> > \302\240\302\240\302\240\302\240\302\240Thanks Sacha.\n" + "> > \302\240 2. remove useless 'desc'/'chan' in struct sdma_channe.\n" "> > \n" "> > Change from v1:\n" - "> > ? 1. split v1 patch into 5 patches.\n" - "> > ? 2. remove some unnecessary condition check.\n" - "> > ? 3. remove unnecessary 'pending' list.\n" + "> > \302\240 1. split v1 patch into 5 patches.\n" + "> > \302\240 2. remove some unnecessary condition check.\n" + "> > \302\240 3. remove unnecessary 'pending' list.\n" "> > \n" "> > Robin Gong (5):\n" - "> > ? dmaengine: imx-sdma: add virt-dma support\n" - "> > ? Revert \"dmaengine: imx-sdma: fix pagefault when channel is\n" + "> > \302\240 dmaengine: imx-sdma: add virt-dma support\n" + "> > \302\240 Revert \"dmaengine: imx-sdma: fix pagefault when channel is\n" "> > disabled\n" - "> > ????during interrupt\"\n" - "> > ? dmaengine: imx-sdma: remove usless lock\n" - "> > ? dmaengine: imx-sdma: remove the maximum limation for bd numbers\n" - "> > ? dmaengine: imx-sdma: add sdma_transfer_init to decrease code\n" + "> > \302\240\302\240\302\240\302\240during interrupt\"\n" + "> > \302\240 dmaengine: imx-sdma: remove usless lock\n" + "> > \302\240 dmaengine: imx-sdma: remove the maximum limation for bd numbers\n" + "> > \302\240 dmaengine: imx-sdma: add sdma_transfer_init to decrease code\n" "> > overlap\n" "> > \n" - "> > ?drivers/dma/Kconfig????|???1 +\n" - "> > ?drivers/dma/imx-sdma.c | 392 ++++++++++++++++++++++++++++---------\n" + "> > \302\240drivers/dma/Kconfig\302\240\302\240\302\240\302\240|\302\240\302\240\302\2401 +\n" + "> > \302\240drivers/dma/imx-sdma.c | 392 ++++++++++++++++++++++++++++---------\n" "> > ------------\n" - "> > ?2 files changed, 227 insertions(+), 166 deletions(-)\n" + "> > \302\2402 files changed, 227 insertions(+), 166 deletions(-)\n" "> > \n" - "> > --?\n" + "> > --\302\240\n" "> > 2.7.4\n" "> > \n" "> > Robin Gong (5):\n" - "> > ? dmaengine: imx-sdma: add virt-dma support\n" - "> > ? Revert \"dmaengine: imx-sdma: fix pagefault when channel is\n" + "> > \302\240 dmaengine: imx-sdma: add virt-dma support\n" + "> > \302\240 Revert \"dmaengine: imx-sdma: fix pagefault when channel is\n" "> > disabled\n" - "> > ????during interrupt\"\n" - "> > ? dmaengine: imx-sdma: remove usless lock\n" - "> > ? dmaengine: imx-sdma: remove the maximum limation for bd numbers\n" - "> > ? dmaengine: imx-sdma: add sdma_transfer_init to decrease code\n" + "> > \302\240\302\240\302\240\302\240during interrupt\"\n" + "> > \302\240 dmaengine: imx-sdma: remove usless lock\n" + "> > \302\240 dmaengine: imx-sdma: remove the maximum limation for bd numbers\n" + "> > \302\240 dmaengine: imx-sdma: add sdma_transfer_init to decrease code\n" "> > overlap\n" "> > \n" "> > Sascha Hauer (1):\n" - "> > ? dmaengine: imx-sdma: factor out a struct sdma_desc from struct\n" - "> > ????sdma_channel\n" + "> > \302\240 dmaengine: imx-sdma: factor out a struct sdma_desc from struct\n" + "> > \302\240\302\240\302\240\302\240sdma_channel\n" "> > \n" - "> > ?drivers/dma/Kconfig????|???1 +\n" - "> > ?drivers/dma/imx-sdma.c | 391 ++++++++++++++++++++++++++++---------\n" + "> > \302\240drivers/dma/Kconfig\302\240\302\240\302\240\302\240|\302\240\302\240\302\2401 +\n" + "> > \302\240drivers/dma/imx-sdma.c | 391 ++++++++++++++++++++++++++++---------\n" "> > ------------\n" - "> > ?2 files changed, 226 insertions(+), 166 deletions(-)\n" + "> > \302\2402 files changed, 226 insertions(+), 166 deletions(-)\n" > > -14633500ee293cf2de591991ff47fe9333b39ecbb9a9ea57e80b5afb7644b163 +a9a4afc09c1cc543be270ccb34d78ea8b166273067c6496f11965954bdc017eb
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.