dmaengine.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* Query on dmaengine: add support to dynamic register/unregister of channels patch
@ 2021-01-18  7:54 Radhey Shyam Pandey
  2021-01-18 17:01 ` Dave Jiang
  0 siblings, 1 reply; 2+ messages in thread
From: Radhey Shyam Pandey @ 2021-01-18  7:54 UTC (permalink / raw)
  To: dave.jiang, Vinod Koul, Paul Thomas; +Cc: dmaengine

Hi Dave,

I have a query on below patch (commit-e81274cd6b52). It causes regression
in xilinx_dma driver and there is a reported kernel crash on rmmod.

commit e81274cd6b5264809384066e09a5253708822522
Author: Dave Jiang <dave.jiang@intel.com>
Date:   Tue Jan 21 16:43:53 2020 -0700

dmaengine: add support to dynamic register/unregister of channels
    
With the channel registration routines broken out, now add support code to
allow independent registering and unregistering of channels in a hotplug 
fashion.

Crash on the unloading xilinx_dma module is reproducible after e81274cd6b526
mainline commit is added in the 5.6 kernel.

[   42.142705] Internal error: Oops: 96000044 [#1] SMP
[   42.147566] Modules linked in: xilinx_dma(-) clk_xlnx_clock_wizard
uio_pdrv_genirq
[   42.155139] CPU: 1 PID: 2075 Comm: rmmod Not tainted
5.10.1-00026-g3a2e6dd7a05-dirty #192
[   42.163302] Hardware name: Enclustra XU5 SOM (DT)
[   42.167992] pstate: 40000005 (nZcv daif -PAN -UAO -TCO BTYPE=--)
[   42.173996] pc : xilinx_dma_chan_remove+0x74/0xa0 [xilinx_dma]
[   42.179815] lr : xilinx_dma_chan_remove+0x70/0xa0 [xilinx_dma]
[   42.185636] sp : ffffffc01112bca0
[   42.188935] x29: ffffffc01112bca0 x28: ffffff80402ea640


xilinx_dma_chan_remove+0x74/0xa0:
__list_del at ./include/linux/list.h:112 (inlined by)
 __list_del_entry at./include/linux/list.h:135 (inlined by)
list_del at ./include/linux/list.h:146 (inlined by)
xilinx_dma_chan_remove at drivers/dma/xilinx/xilinx_dma.c:2546

Looking into e81274cd6b526 commit - It deletes channel device_node entry.
Same channel device_node entry is also deleted in 
xilinx_dma_chan_remove as a result we see this crash.

@@ -993,12 +1007,22 @@ static
void __dma_async_device_channel_unregister(struct dma_device *device,
                  "%s called while %d clients hold a reference\n",
                  __func__, chan->client_count);
        mutex_lock(&dma_list_mutex);
+       list_del(&chan->device_node);
+       device->chancnt--;

I want to know some background for this change.  In dmaengine driver -
we are adding channel device node entry so deleting it in the exit 
the path should be done in dmaengine driver and not in _channel_unregister?

NOTE:  This issue is reported in https://www.spinics.net/lists/dmaengine/msg24923.html

Thanks,
Radhey

^ permalink raw reply	[flat|nested] 2+ messages in thread

* Re: Query on dmaengine: add support to dynamic register/unregister of channels patch
  2021-01-18  7:54 Query on dmaengine: add support to dynamic register/unregister of channels patch Radhey Shyam Pandey
@ 2021-01-18 17:01 ` Dave Jiang
  0 siblings, 0 replies; 2+ messages in thread
From: Dave Jiang @ 2021-01-18 17:01 UTC (permalink / raw)
  To: Radhey Shyam Pandey, Vinod Koul, Paul Thomas; +Cc: dmaengine


On 1/18/2021 12:54 AM, Radhey Shyam Pandey wrote:
> Hi Dave,
>
> I have a query on below patch (commit-e81274cd6b52). It causes regression
> in xilinx_dma driver and there is a reported kernel crash on rmmod.
>
> commit e81274cd6b5264809384066e09a5253708822522
> Author: Dave Jiang <dave.jiang@intel.com>
> Date:   Tue Jan 21 16:43:53 2020 -0700
>
> dmaengine: add support to dynamic register/unregister of channels
>      
> With the channel registration routines broken out, now add support code to
> allow independent registering and unregistering of channels in a hotplug
> fashion.
>
> Crash on the unloading xilinx_dma module is reproducible after e81274cd6b526
> mainline commit is added in the 5.6 kernel.
>
> [   42.142705] Internal error: Oops: 96000044 [#1] SMP
> [   42.147566] Modules linked in: xilinx_dma(-) clk_xlnx_clock_wizard
> uio_pdrv_genirq
> [   42.155139] CPU: 1 PID: 2075 Comm: rmmod Not tainted
> 5.10.1-00026-g3a2e6dd7a05-dirty #192
> [   42.163302] Hardware name: Enclustra XU5 SOM (DT)
> [   42.167992] pstate: 40000005 (nZcv daif -PAN -UAO -TCO BTYPE=--)
> [   42.173996] pc : xilinx_dma_chan_remove+0x74/0xa0 [xilinx_dma]
> [   42.179815] lr : xilinx_dma_chan_remove+0x70/0xa0 [xilinx_dma]
> [   42.185636] sp : ffffffc01112bca0
> [   42.188935] x29: ffffffc01112bca0 x28: ffffff80402ea640
>
>
> xilinx_dma_chan_remove+0x74/0xa0:
> __list_del at ./include/linux/list.h:112 (inlined by)
>   __list_del_entry at./include/linux/list.h:135 (inlined by)
> list_del at ./include/linux/list.h:146 (inlined by)
> xilinx_dma_chan_remove at drivers/dma/xilinx/xilinx_dma.c:2546
>
> Looking into e81274cd6b526 commit - It deletes channel device_node entry.
> Same channel device_node entry is also deleted in
> xilinx_dma_chan_remove as a result we see this crash.
>
> @@ -993,12 +1007,22 @@ static
> void __dma_async_device_channel_unregister(struct dma_device *device,
>                    "%s called while %d clients hold a reference\n",
>                    __func__, chan->client_count);
>          mutex_lock(&dma_list_mutex);
> +       list_del(&chan->device_node);
> +       device->chancnt--;
>
> I want to know some background for this change.  In dmaengine driver -
> we are adding channel device node entry so deleting it in the exit
> the path should be done in dmaengine driver and not in _channel_unregister?

Yes you are correct. It seems we need to remove that and push the 
management to the driver as that seems to be the way. The chancnt will 
continue to be managed by dmaengine. I'll create a fix.


>
> NOTE:  This issue is reported in https://www.spinics.net/lists/dmaengine/msg24923.html
>
> Thanks,
> Radhey

^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2021-01-18 17:02 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-01-18  7:54 Query on dmaengine: add support to dynamic register/unregister of channels patch Radhey Shyam Pandey
2021-01-18 17:01 ` Dave Jiang

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).