All of lore.kernel.org
 help / color / mirror / Atom feed
From: Chen-Yu Tsai <wens@kernel.org>
To: Vinod Koul <vkoul@kernel.org>
Cc: p.zabel@pengutronix.de, Bumyong Lee <bumyong.lee@samsung.com>,
	dmaengine@vger.kernel.org, linux-kernel@vger.kernel.org
Subject: Re: [PATCH] dmaengine: pl330: issue_pending waits until WFP state
Date: Sun, 24 Dec 2023 23:40:11 +0800	[thread overview]
Message-ID: <ZYhQ2-OnjDgoqjvt@wens.tw> (raw)
In-Reply-To: <170317622670.683420.3881501030324253538.b4-ty@kernel.org>

Hi,

On Thu, Dec 21, 2023 at 10:00:26PM +0530, Vinod Koul wrote:
> 
> On Tue, 19 Dec 2023 14:50:26 +0900, Bumyong Lee wrote:
> > 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.
> > 
> > [...]
> 
> Applied, thanks!
> 
> [1/1] dmaengine: pl330: issue_pending waits until WFP state
>       commit: d114d3a096194fb2a9c3bedd7be6587b97610625

This seems to cause a stall on my Quartz 64 model B (RK3566) once
Bluetooth over UART is initialized, when combined with a patch of mine
that enables DMA on UARTs [1]. Reverting this patch gets everything
running again.

The following are RCU stalls detected, followed by stack traces
produced with pseudo-NMI. Without pseudo-NMIs no stack traces are
produced.

    rcu: INFO: rcu_sched detected stalls on CPUs/tasks:
    rcu:     0-...0: (0 ticks this GP) idle=80fc/1/0x4000000000000000 softirq=693/693 fqs=31498
    rcu:     3-...0: (3 ticks this GP) idle=2b44/1/0x4000000000000000 softirq=553/556 fqs=31498
    rcu:     (detected by 1, t=162830 jiffies, g=-307, q=32 ncpus=4)
    Sending NMI from CPU 1 to CPUs 0:
    NMI backtrace for cpu 0
    CPU: 0 PID: 1200 Comm: (udev-worker) Not tainted 6.7.0-rc6-next-20231222-10300-g8b07e3811bc7 #17
    Hardware name: Pine64 RK3566 Quartz64-B Board (DT)
    pstate: 00400009 (nzcv daif +PAN -UAO -TCO -DIT -SSBS BTYPE=--)
    pc : queued_spin_lock_slowpath+0x50/0x330
    lr : pl330_irq_handler+0x2f8/0x5a0
    sp : ffffffc080003ec0
    pmr_save: 00000060
    x29: ffffffc080003ec0 x28: ffffff80017c7000 x27: ffffff8001a58d80
    x26: 0000000000000060 x25: ffffff80017d0338 x24: ffffff800161ae38
    x23: ffffff8001597c00 x22: ffffffc081960000 x21: 0000000000000000
    x20: ffffff800161ac80 x19: ffffff80010c5180 x18: 0000000000000000
    x17: ffffffc06e724000 x16: ffffffc080000000 x15: 0000000000000000
    x14: 0000000000000000 x13: ffffff80042f102f x12: ffffffc083ad3cc4
    x11: 0000000000000040 x10: ffffff800022a0a8 x9 : ffffff800022a0a0
    x8 : ffffff8000400270 x7 : 0000000000000000 x6 : 0000000000000000
    x5 : ffffff8000400248 x4 : ffffffc06e724000 x3 : ffffffc080003fa0
    x2 : 0000000000000000 x1 : 0000000000000001 x0 : ffffff800161ae38
    Call trace:
     queued_spin_lock_slowpath+0x50/0x330
     __handle_irq_event_percpu+0x38/0x16c
     handle_irq_event+0x44/0xf8
     handle_fasteoi_irq+0xb0/0x28c
     generic_handle_domain_irq+0x2c/0x44
     gic_handle_irq+0x10c/0x240
     call_on_irq_stack+0x24/0x4c
     do_interrupt_handler+0x80/0x8c
     el1_interrupt+0x44/0x98
     el1h_64_irq_handler+0x18/0x24
     el1h_64_irq+0x78/0x7c
     __d_rehash+0x0/0x94
     d_add+0x40/0x80
     simple_lookup+0x4c/0x78
     path_openat+0x5ec/0xed0
     do_filp_open+0x80/0x12c
     do_sys_openat2+0xb4/0xe8
     __arm64_sys_openat+0x64/0xa4
     invoke_syscall+0x48/0x114
     el0_svc_common.constprop.0+0x40/0xe0
     do_el0_svc+0x1c/0x28
     el0_svc+0x34/0xd4
     el0t_64_sync_handler+0x100/0x12c
     el0t_64_sync+0x1a4/0x1a8
    Sending NMI from CPU 1 to CPUs 3:
    NMI backtrace for cpu 3
    CPU: 3 PID: 31 Comm: kworker/3:0 Not tainted 6.7.0-rc6-next-20231222-10300-g8b07e3811bc7 #17
    Hardware name: Pine64 RK3566 Quartz64-B Board (DT)
    Workqueue: events hci_uart_write_work [hci_uart]
    pstate: 80400009 (Nzcv daif +PAN -UAO -TCO -DIT -SSBS BTYPE=--)
    pc : _state+0x2c/0x138
    lr : pl330_start_thread.isra.0+0x2e0/0x32c
    sp : ffffffc08157bb20
    pmr_save: 00000060
    x29: ffffffc08157bb20 x28: 0000000000000000 x27: 0000000000000060
    x26: ffffffc080c4e658 x25: 0000000000000060 x24: 0000000001a20000
    x23: ffffff8001555000 x22: ffffffc081960020 x21: ffffff800161b068
    x20: 0000000000000000 x19: ffffff800161b050 x18: ffffffffffffffff
    x17: 0000000000000000 x16: 0000000000000000 x15: 0000000000000001
    x14: 0000000000000004 x13: 0000000000000009 x12: 0000000000000005
    x11: 0000000000000027 x10: 000000000000002b x9 : 0000000000000032
    x8 : ffffffc08154521d x7 : 0000000000000005 x6 : 0000000000000010
    x5 : 0000000000000001 x4 : ffffffc081960d04 x3 : ffffff800161b280
    x2 : ffffff800161b050 x1 : 0000000000204000 x0 : 0000000000000108
    Call trace:
     _state+0x2c/0x138
     pl330_tasklet+0x1f8/0x818
     pl330_issue_pending+0x150/0x178
     serial8250_tx_dma+0x150/0x21c
     serial8250_start_tx+0x9c/0x1c0
     __uart_start+0x74/0xfc
     uart_write+0xfc/0x2f0
     ttyport_write_buf+0x4c/0x90
     serdev_device_write_buf+0x24/0x38
     hci_uart_write_work+0x54/0x164 [hci_uart]
     process_one_work+0x13c/0x2bc
     worker_thread+0x2a0/0x52c
     kthread+0xe0/0xe4
     ret_from_fork+0x10/0x20

[1] https://lore.kernel.org/linux-arm-kernel/20221106161443.4104-1-wens@kernel.org/

  reply	other threads:[~2023-12-24 15:40 UTC|newest]

Thread overview: 6+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <CGME20231219055052epcas2p4bb1d8210f650ab18370711db2194e8e3@epcas2p4.samsung.com>
2023-12-19  5:50 ` [PATCH] dmaengine: pl330: issue_pending waits until WFP state Bumyong Lee
2023-12-21 16:30   ` Vinod Koul
2023-12-24 15:40     ` Chen-Yu Tsai [this message]
2023-12-27  2:09       ` bumyong.lee
2024-01-08 16:51         ` Chen-Yu Tsai
2024-01-09  1:18           ` bumyong.lee

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=ZYhQ2-OnjDgoqjvt@wens.tw \
    --to=wens@kernel.org \
    --cc=bumyong.lee@samsung.com \
    --cc=dmaengine@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=p.zabel@pengutronix.de \
    --cc=vkoul@kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
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.