RE: dmaengine: CPU stalls while loading bluetooth module

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

 



Hello.

> we have encountered CPU stalls in mainline kernel while loading the
> bluetooth module. We have custom board based on rockchip rv1109 soc and
> there is bluetooth chipset of relatek 8821cs. CPU is stalls  while realtek
> 8821cs module.
> 
> Bug/Regression:
> In current mainline, we found CPU is stalls when we load bluetooth module.
> git bisect shows commit 22a9d9585812440211b0b34a6bc02ade62314be4
> as a bad, which produce CPU stalls.
> 
> git show 22a9d9585812440211b0b34a6bc02ade62314be4
> commit 22a9d9585812440211b0b34a6bc02ade62314be4
> Author: Bumyong Lee <bumyong.lee@xxxxxxxxxxx>
> Date:   Tue Dec 19 14:50:26 2023 +0900
> 
>      dmaengine: pl330: issue_pending waits until WFP state
> 
>      According to DMA-330 errata notice[1] 71930, DMAKILL
>      cannot clear internal signal, named pipeline_req_active.
>      it makes that pl330 would wait forever in WFP state
>      although dma already send dma request if pl330 gets
>      dma request before entering WFP state.
> 
>      The errata suggests that polling until entering WFP state
>      as workaround and then peripherals allows to issue dma request.
> 
>      [1]: https://developer.arm.com/documentation/genc008428/latest
> 
>      Signed-off-by: Bumyong Lee <bumyong.lee@xxxxxxxxxxx>
>      Link:
> https://lore.kernel.org/r/20231219055026.118695-1-bumyong.lee@xxxxxxxxxxx
>      Signed-off-by: Vinod Koul <vkoul@xxxxxxxxxx>
> 
> diff --git a/drivers/dma/pl330.c b/drivers/dma/pl330.c index
> 3cf0b38387ae..c29744bfdf2c 100644
> --- a/drivers/dma/pl330.c
> +++ b/drivers/dma/pl330.c
> @@ -1053,6 +1053,9 @@ static bool _trigger(struct pl330_thread *thrd)
> 
>          thrd->req_running = idx;
> 
> +       if (desc->rqtype == DMA_MEM_TO_DEV || desc->rqtype ==
> DMA_DEV_TO_MEM)
> +               UNTIL(thrd, PL330_STATE_WFP);
> +
>          return true;
>   }
> 
> By reverting this commit, we have success in loading of bluetooth module.
> 
> 

> Output of CPU stalls:
> # modprobe hci_uart
> [   27.024749] Bluetooth: HCI UART driver ver 2.3
> [   27.025284] Bluetooth: HCI UART protocol Three-wire (H5) registered
> # [   28.125338] dwmmc_rockchip ffc70000.mmc: Unexpected interrupt latency
> [   33.245339] dwmmc_rockchip ffc50000.mmc: Unexpected interrupt latency
> [  326.195321] rcu: INFO: rcu_sched detected stalls on CPUs/tasks:
> [  326.195880] rcu:     0-...0: (3 ticks this GP) idle=e5f4/1/0x40000000
> softirq=551/552 fqs=420
> [  326.196621] rcu:              hardirqs   softirqs   csw/system
> [  326.197115] rcu:      number:        0          0            0
> [  326.197612] rcu:     cputime:        0          0            0   ==>
> 10500(ms)
> [  326.198231] rcu:     (detected by 1, t=2105 jiffies, g=-455, q=17
> ncpus=2)
> [  326.198823] Sending NMI from CPU 1 to CPUs 0:
> 
> Expected Output:
> # modprobe hci_uart
> [   30.690321] Bluetooth: HCI UART driver ver 2.3
> [   30.690852] Bluetooth: HCI UART protocol Three-wire (H5) registered
> # [   31.453586] Bluetooth: hci0: RTL: examining hci_ver=08 hci_rev=000c
> lmp_ver=08 lmp_subver=8821
> [   31.458061] Bluetooth: hci0: RTL: rom_version status=0 version=1
> [   31.458608] Bluetooth: hci0: RTL: loading rtl_bt/rtl8821cs_fw.bin
> [   31.465029] Bluetooth: hci0: RTL: loading rtl_bt/rtl8821cs_config.bin
> [   31.483926] Bluetooth: hci0: RTL: cfg_sz 25, total sz 36953
> [   32.213105] Bluetooth: hci0: RTL: fw version 0x75b8f098
> [   32.274216] Bluetooth: MGMT ver 1.22
> [   32.285376] NET: Registered PF_ALG protocol family

I discussed this issue. Could you refer to this[1]?
I haven't received anymore reply from him after that.
If you have any more opinion, please let me know.

[1]: https://lore.kernel.org/lkml/000001da3869$ca643fa0$5f2cbee0$@samsung.com/T/

Best Regards






[Index of Archives]     [Linux Kernel]     [Linux ARM (vger)]     [Linux ARM MSM]     [Linux Omap]     [Linux Arm]     [Linux Tegra]     [Fedora ARM]     [Linux for Samsung SOC]     [eCos]     [Linux PCI]     [Linux Fastboot]     [Gcc Help]     [Git]     [DCCP]     [IETF Announce]     [Security]     [Linux MIPS]     [Yosemite Campsites]

  Powered by Linux