From: "Jason-JH Lin (林睿祥)" <Jason-JH.Lin@mediatek.com>
To: "jassisinghbrar@gmail.com" <jassisinghbrar@gmail.com>
Cc: "linux-mediatek@lists.infradead.org"
<linux-mediatek@lists.infradead.org>,
"Singo Chang (張興國)" <Singo.Chang@mediatek.com>,
"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
"chunkuang.hu@kernel.org" <chunkuang.hu@kernel.org>,
"Nancy Lin (林欣螢)" <Nancy.Lin@mediatek.com>,
Project_Global_Chrome_Upstream_Group
<Project_Global_Chrome_Upstream_Group@mediatek.com>,
"linux-arm-kernel@lists.infradead.org"
<linux-arm-kernel@lists.infradead.org>,
"matthias.bgg@gmail.com" <matthias.bgg@gmail.com>,
"angelogioacchino.delregno@collabora.com"
<angelogioacchino.delregno@collabora.com>
Subject: Re: [PATCH 2/2] mailbox: mtk-cmdq: Move pm_runimte_get and put to mbox_chan_ops API
Date: Tue, 18 Jun 2024 08:42:31 +0000 [thread overview]
Message-ID: <fc92d51cc6e55301c081ea2d589e1ba6cdd295ee.camel@mediatek.com> (raw)
In-Reply-To: <CABb+yY2bwj2BcdJLGe1ZYwCrnXL3LtcePMb=wQPaBKorBSs2yA@mail.gmail.com>
Hi Jassi,
On Mon, 2024-06-17 at 13:18 -0500, Jassi Brar wrote:
>
> External email : Please do not click links or open attachments until
> you have verified the sender or the content.
> On Thu, Jun 13, 2024 at 11:01 PM Jason-JH.Lin <
> jason-jh.lin@mediatek.com> wrote:
> >
> > When we run kernel with lockdebug option, we will get the BUG
> below:
> > BUG: sleeping function called from invalid context at
> drivers/base/power/runtime.c:1164
> > in_atomic(): 1, irqs_disabled(): 128, non_block: 0, pid: 3616,
> name: kworker/u17:3
> > preempt_count: 1, expected: 0
> > RCU nest depth: 0, expected: 0
> > INFO: lockdep is turned off.
> > irq event stamp: 0
> > CPU: 1 PID: 3616 Comm: kworker/u17:3 Not tainted 6.1.87-
> lockdep-14133-g26e933aca785 #1
> > Hardware name: Google Ciri sku0/unprovisioned board (DT)
> > Workqueue: imgsys_runner imgsys_runner_func
> > Call trace:
> > dump_backtrace+0x100/0x120
> > show_stack+0x20/0x2c
> > dump_stack_lvl+0x84/0xb4
> > dump_stack+0x18/0x48
> > __might_resched+0x354/0x4c0
> > __might_sleep+0x98/0xe4
> > __pm_runtime_resume+0x70/0x124
> > cmdq_mbox_send_data+0xe4/0xb1c
> > msg_submit+0x194/0x2dc
> > mbox_send_message+0x190/0x330
> > imgsys_cmdq_sendtask+0x1618/0x2224
> > imgsys_runner_func+0xac/0x11c
> > process_one_work+0x638/0xf84
> > worker_thread+0x808/0xcd0
> > kthread+0x24c/0x324
> > ret_from_fork+0x10/0x20
> >
> > We found that there is a spin_lock_irqsave protection in
> msg_submit()
> > of mailbox.c and it is in the atomic context.
> > So when cmdq driver calls pm_runtime_get_sync() in
> cmdq_mbox_send_data(),
> > it will get this BUG report.
> >
> > To avoid using sleep in atomic context, move pm_runtime_get_sync to
> > mbox_chan_ops->power_get and also move pm_runtime_put_autosuspend
> to
> > mbox_chan_ops->power_put.
> >
> > Fixes: 8afe816b0c99 ("mailbox: mtk-cmdq-mailbox: Implement Runtime
> PM with autosuspend")
>
> Can you please share the pattern of mailbox transfers on your
> platform?
I'm not familiar with imgsys driver, so I provide the mbox transfer
pattern of DRM driver in this scenario:
1. mbox_request_channel() in mtk_crtc.c: mtk_crtc_create()
mtk_crtc->cmdq_client.client.dev = mtk_crtc->mmsys_dev;
mtk_crtc->cmdq_client.client.tx_block = false;
mtk_crtc->cmdq_client.client.knows_txdone = true;
mtk_crtc->cmdq_client.client.rx_callback = ddp_cmdq_cb;
mtk_crtc->cmdq_client.chan = mbox_request_channel(&client, i);
2. mbox_send_message() in mtk_crtc.c: mtk_crtc_update_config()
mbox_flush(cmdq_client.chan, 2000);
// prepare cmd to a buffer in cmdq_handle structure
mbox_send_message(cmdq_client.chan, cmdq_handle);
mbox_client_txdone(cmdq_client.chan, 0);
3. mbox_chan_received_data() in mtk-cmdq-mailbox.c: cmdq_task_done()
// When CMDQ driver get an GCE IRQ from hardware means all cmd in
cmd buffer are executed
> As in, how often and long are the "channel idle" periods? And when
> active, how many transfers/sec ?
Is there any debug logs in mailbox can measure this?
This mailbox channel is use to configure display hardware in every
VSYNC, so the channel idle periods may be less than 16.66ms.
It should call rx_callback() before VACTIVE, but sometimes it will be
dropped by mbox_flush() if the new message is coming.
> I see every TX is acked by one RX packet. How long is the typical gap
> between a TX and its ack?
Typical gap between a TX and its ack is less than 16.66ms.
I'll address to imgsys part after confirming with imgsys owner.
Regards,
Jason-JH Lin
>
> Thanks
next prev parent reply other threads:[~2024-06-18 8:43 UTC|newest]
Thread overview: 31+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-06-14 4:01 [PATCH 0/2] Fix sleeping function called from invalid context Jason-JH.Lin
2024-06-14 4:01 ` [PATCH 1/2] mailbox: Add power_get/power_put API to mbox_chan_ops Jason-JH.Lin
2024-06-14 11:35 ` Markus Elfring
2024-06-18 6:26 ` Jason-JH Lin (林睿祥)
2024-06-14 16:23 ` kernel test robot
2024-06-14 16:55 ` kernel test robot
2024-06-14 18:51 ` kernel test robot
2024-06-17 12:39 ` Dan Carpenter
2024-06-14 4:01 ` [PATCH 2/2] mailbox: mtk-cmdq: Move pm_runimte_get and put to mbox_chan_ops API Jason-JH.Lin
2024-06-17 18:18 ` Jassi Brar
2024-06-18 8:42 ` Jason-JH Lin (林睿祥) [this message]
2024-06-18 15:59 ` Jassi Brar
2024-06-19 8:18 ` AngeloGioacchino Del Regno
2024-06-19 15:38 ` Jassi Brar
2024-06-20 6:32 ` Jason-JH Lin (林睿祥)
2024-06-20 14:39 ` Jassi Brar
2024-06-24 11:29 ` AngeloGioacchino Del Regno
2024-06-24 17:45 ` Jassi Brar
2024-06-25 3:40 ` Jason-JH Lin (林睿祥)
2024-06-25 4:21 ` Jassi Brar
2024-06-26 9:32 ` Jason-JH Lin (林睿祥)
2024-06-28 3:40 ` Jassi Brar
2024-07-03 16:41 ` Jason-JH Lin (林睿祥)
2024-07-03 19:06 ` Jassi Brar
2024-07-05 6:11 ` Jason-JH Lin (林睿祥)
2024-07-05 16:43 ` Jassi Brar
2024-07-11 2:00 ` Jason-JH Lin (林睿祥)
2024-07-11 3:47 ` Jassi Brar
2024-07-12 7:23 ` Jason-JH Lin (林睿祥)
2024-07-15 9:45 ` Jason-JH Lin (林睿祥)
2024-07-17 16:17 ` Jassi Brar
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=fc92d51cc6e55301c081ea2d589e1ba6cdd295ee.camel@mediatek.com \
--to=jason-jh.lin@mediatek.com \
--cc=Nancy.Lin@mediatek.com \
--cc=Project_Global_Chrome_Upstream_Group@mediatek.com \
--cc=Singo.Chang@mediatek.com \
--cc=angelogioacchino.delregno@collabora.com \
--cc=chunkuang.hu@kernel.org \
--cc=jassisinghbrar@gmail.com \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mediatek@lists.infradead.org \
--cc=matthias.bgg@gmail.com \
/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 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).