From: "Michael S. Tsirkin" <mst@redhat.com>
To: Yongji Xie <elohimes@gmail.com>
Cc: stefanha@redhat.com, changpeng.liu@intel.com,
qemu-devel@nongnu.org, chaiwen@baidu.com, nixun@baidu.com
Subject: Re: [Qemu-devel] [PATCH] vhost-user-blk: start vhost when guest kicks
Date: Tue, 5 Jun 2018 17:23:15 +0300 [thread overview]
Message-ID: <20180605172222-mutt-send-email-mst@kernel.org> (raw)
In-Reply-To: <1528206970-4815-1-git-send-email-xieyongji@baidu.com>
On Tue, Jun 05, 2018 at 09:56:10PM +0800, Yongji Xie wrote:
> Some old guests (before commit 7a11370e5: "virtio_blk: enable VQs early")
> kick virtqueue before setting VIRTIO_CONFIG_S_DRIVER_OK. This would cause
> that those old guests fail to boot with vhost-user-blk device.
>
> To fix it, start vhost when guest kicks instead of waiting for .set_status().
>
> Signed-off-by: Yongji Xie <xieyongji@baidu.com>
> Signed-off-by: Chai Wen <chaiwen@baidu.com>
> Signed-off-by: Ni Xun <nixun@baidu.com>
Can we at least limit this to when virtio 1.0 has not
been negotiated?
> ---
> hw/block/vhost-user-blk.c | 20 ++++++++++++++++++++
> 1 file changed, 20 insertions(+)
>
> diff --git a/hw/block/vhost-user-blk.c b/hw/block/vhost-user-blk.c
> index d755223..8fd0e6f 100644
> --- a/hw/block/vhost-user-blk.c
> +++ b/hw/block/vhost-user-blk.c
> @@ -217,7 +217,27 @@ static uint64_t vhost_user_blk_get_features(VirtIODevice *vdev,
>
> static void vhost_user_blk_handle_output(VirtIODevice *vdev, VirtQueue *vq)
> {
> + VHostUserBlk *s = VHOST_USER_BLK(vdev);
> + int i;
>
> + if (s->dev.started) {
> + return;
> + }
> +
> + /* Some guests kick before setting VIRTIO_CONFIG_S_DRIVER_OK so start
> + * vhost here instead of waiting for .set_status().
> + */
> + vhost_user_blk_start(vdev);
> +
> + /* Kick right away to begin processing requests already in vring */
> + for (i = 0; i < s->dev.nvqs; i++) {
> + VirtQueue *kick_vq = virtio_get_queue(vdev, i);
> +
> + if (!virtio_queue_get_desc_addr(vdev, i)) {
> + continue;
> + }
> + event_notifier_set(virtio_queue_get_host_notifier(kick_vq));
> + }
> }
>
> static void vhost_user_blk_device_realize(DeviceState *dev, Error **errp)
> --
> 1.7.9.5
next prev parent reply other threads:[~2018-06-05 14:23 UTC|newest]
Thread overview: 3+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-06-05 13:56 [Qemu-devel] [PATCH] vhost-user-blk: start vhost when guest kicks Yongji Xie
2018-06-05 14:23 ` Michael S. Tsirkin [this message]
2018-06-06 3:43 ` Yongji Xie
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=20180605172222-mutt-send-email-mst@kernel.org \
--to=mst@redhat.com \
--cc=chaiwen@baidu.com \
--cc=changpeng.liu@intel.com \
--cc=elohimes@gmail.com \
--cc=nixun@baidu.com \
--cc=qemu-devel@nongnu.org \
--cc=stefanha@redhat.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 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.