Cpu stall issue may happen if device is configured with multi queues
and large queue depth, so fix it.
Signed-off-by: Xianting Tian <xianting.tian@linux.alibaba.com>
---
drivers/char/virtio_console.c | 1 +
1 file changed, 1 insertion(+)
diff --git a/drivers/char/virtio_console.c b/drivers/char/virtio_console.c
index b65c809a4e97..5ec4cf4ea919 100644
--- a/drivers/char/virtio_console.c
+++ b/drivers/char/virtio_console.c
@@ -1935,6 +1935,7 @@ static void remove_vqs(struct ports_device *portdev)
flush_bufs(vq, true);
while ((buf = virtqueue_detach_unused_buf(vq)))
free_buf(buf, true);
+ cond_resched();
}
portdev->vdev->config->del_vqs(portdev->vdev);
kfree(portdev->in_vqs);
--
2.17.1
On Fri, Jun 09, 2023 at 09:18:16PM +0800, Xianting Tian wrote: > Cpu stall issue may happen if device is configured with multi queues > and large queue depth, so fix it. "may happen" is ambigous. So is this: "for virtio-net we were getting stall on CPU was observed message, this driver is similar so theoretically the same logic applies" or is this "the following error occured: ..... " ? > Signed-off-by: Xianting Tian <xianting.tian@linux.alibaba.com> > --- > drivers/char/virtio_console.c | 1 + > 1 file changed, 1 insertion(+) > > diff --git a/drivers/char/virtio_console.c b/drivers/char/virtio_console.c > index b65c809a4e97..5ec4cf4ea919 100644 > --- a/drivers/char/virtio_console.c > +++ b/drivers/char/virtio_console.c > @@ -1935,6 +1935,7 @@ static void remove_vqs(struct ports_device *portdev) > flush_bufs(vq, true); > while ((buf = virtqueue_detach_unused_buf(vq))) > free_buf(buf, true); > + cond_resched(); > } > portdev->vdev->config->del_vqs(portdev->vdev); > kfree(portdev->in_vqs); > -- > 2.17.1
在 2023/6/10 上午12:05, Michael S. Tsirkin 写道: > On Fri, Jun 09, 2023 at 09:18:16PM +0800, Xianting Tian wrote: >> Cpu stall issue may happen if device is configured with multi queues >> and large queue depth, so fix it. > "may happen" is ambigous. > > So is this: "for virtio-net we were getting > stall on CPU was observed message, this driver is similar > so theoretically the same logic applies" It is this one “this driver is similar so theoretically the same logic applies” > > or is this > > "the following error occured: ....." > > ? > > >> Signed-off-by: Xianting Tian <xianting.tian@linux.alibaba.com> >> --- >> drivers/char/virtio_console.c | 1 + >> 1 file changed, 1 insertion(+) >> >> diff --git a/drivers/char/virtio_console.c b/drivers/char/virtio_console.c >> index b65c809a4e97..5ec4cf4ea919 100644 >> --- a/drivers/char/virtio_console.c >> +++ b/drivers/char/virtio_console.c >> @@ -1935,6 +1935,7 @@ static void remove_vqs(struct ports_device *portdev) >> flush_bufs(vq, true); >> while ((buf = virtqueue_detach_unused_buf(vq))) >> free_buf(buf, true); >> + cond_resched(); >> } >> portdev->vdev->config->del_vqs(portdev->vdev); >> kfree(portdev->in_vqs); >> -- >> 2.17.1
© 2016 - 2026 Red Hat, Inc.