Messages in this thread Patch in this message | | | From | Meng Li <> | Subject | [PATCH] driver: firmware: stratix10-svc: schedule thread out when there is no data reveived | Date | Tue, 9 Nov 2021 15:46:13 +0800 |
| |
From: Meng Li <meng.li@windriver.com>
In thread svc_normal_to_secure_thread(), function kfifo_out_spinlocked() always return, so this thread can't release cpu even if there is no data received, and cause cpu is under heave load status. System performance is poor.
This issue is introduced by commit 7ca5ce896524("firmware: add Intel Stratix10 service layer driver")
Therefore, schedule this thread out when there is no data reveived, and wake it up after sending data to it.
Fixes: 7ca5ce896524 ("firmware: add Intel Stratix10 service layer driver") Cc: stable@vger.kernel.org Signed-off-by: Meng Li <Meng.Li@windriver.com> --- drivers/firmware/stratix10-svc.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-)
diff --git a/drivers/firmware/stratix10-svc.c b/drivers/firmware/stratix10-svc.c index 2a7687911c09..ddb86d441726 100644 --- a/drivers/firmware/stratix10-svc.c +++ b/drivers/firmware/stratix10-svc.c @@ -365,8 +365,10 @@ static int svc_normal_to_secure_thread(void *data) pdata, sizeof(*pdata), &ctrl->svc_fifo_lock); - if (!ret_fifo) + if (!ret_fifo) { + schedule_timeout_interruptible(MAX_SCHEDULE_TIMEOUT); continue; + } pr_debug("get from FIFO pa=0x%016x, command=%u, size=%u\n", (unsigned int)pdata->paddr, pdata->command, @@ -861,6 +863,7 @@ int stratix10_svc_send(struct stratix10_svc_chan *chan, void *msg) ret = kfifo_in_spinlocked(&chan->ctrl->svc_fifo, p_data, sizeof(*p_data), &chan->ctrl->svc_fifo_lock); + wake_up_process(chan->ctrl->task); kfree(p_data); -- 2.17.1
| |