[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [RFC 0/2] virtio-vhost-user: add virtio-vhost-user devi
From: |
Stefan Hajnoczi |
Subject: |
Re: [Qemu-devel] [RFC 0/2] virtio-vhost-user: add virtio-vhost-user device |
Date: |
Tue, 23 Jan 2018 11:12:38 +0000 |
User-agent: |
Mutt/1.9.1 (2017-09-22) |
On Mon, Jan 22, 2018 at 07:09:06PM +0800, Wei Wang wrote:
> On 01/19/2018 09:06 PM, Stefan Hajnoczi wrote:
> Thanks for the quick implementation. Not sure if the following issues could
> be solved with this approach:
> - After we boot the slave VM, if we don't run the virtio-vhost-user driver
> (i.e. testpmd), then the master VM couldn't boot, because the booting of the
> virtio-net device relies on a negotiation with the virtio-vhost-user driver.
This is a limitation of QEMU's vhost-user master implementation which
also affects AF_UNIX. It cannot be solved by this patch series since
this is the slave side.
Here is what I suggest. Introduce a new VIRTIO feature bit:
#define VIRTIO_F_DEVICE_READY 34
When the device supports this bit we extend the device initialization
procedure. If the device is not yet ready, the FEATURES_OK status bit
is not accepted by the device. Device initialization fails temporarily
but the device may raise the configuration change interrupt to indicate
that device initialization should be retried.
Using a feature bit guarantees that existing device and driver behavior
remains unchanged.
On the QEMU side the changes are:
1. Virtio hardware registers and configuration space are available even
when vhost-user is disconnected. This shouldn't be difficult to
implement because QEMU always has a virtio device model for each
vhost-user device. We just need to put dummy values in the
registers/configuration space until vhost-user has connected.
2. When vhost-user connects, raise the configuration change interrupt
and allow vhost-user to process.
On the guest side the changes are:
1. virtio_pci.ko must set VIRTIO_F_DEVICE_READY and handle !FEATURES_OK
by waiting for the configuration change interrupt and retrying.
This doesn't fully solve the problem because it assumes that a connected
slave always responds to VIRTIO hardware register accesses (e.g. get/set
features). If the slave crashes but leaves the virtio-vhost-user PCI
adapter connected then vhost-user requests from the master go
unanswered and cause hangs...
> - Suppose in the future there is also a kernel virtio-vhost-user driver as
> other PCI devices, can we unbind the kernel driver first, and then bind the
> device to the dpdk driver? A normal PCI device should be able to smoothly
> switch between the kernel driver and dpdk driver.
It depends what you mean by "smoothly switch".
If you mean whether it's possible to go from a kernel driver to
vfio-pci, then the answer is yes.
But if the kernel driver has an established vhost-user connection then
it will be closed. This is the same as reconnecting with AF_UNIX
vhost-user.
Stefan
signature.asc
Description: PGP signature
- Re: [Qemu-devel] [RFC 0/2] virtio-vhost-user: add virtio-vhost-user device, (continued)
- Re: [Qemu-devel] [RFC 0/2] virtio-vhost-user: add virtio-vhost-user device, Stefan Hajnoczi, 2018/01/22
- Re: [Qemu-devel] [RFC 0/2] virtio-vhost-user: add virtio-vhost-user device, Michael S. Tsirkin, 2018/01/22
- Re: [Qemu-devel] [RFC 0/2] virtio-vhost-user: add virtio-vhost-user device, Jason Wang, 2018/01/23
- Re: [Qemu-devel] [RFC 0/2] virtio-vhost-user: add virtio-vhost-user device, Michael S. Tsirkin, 2018/01/23
- Re: [Qemu-devel] [RFC 0/2] virtio-vhost-user: add virtio-vhost-user device, Paolo Bonzini, 2018/01/25
- Re: [Qemu-devel] [RFC 0/2] virtio-vhost-user: add virtio-vhost-user device, Michael S. Tsirkin, 2018/01/25
- Re: [Qemu-devel] [RFC 0/2] virtio-vhost-user: add virtio-vhost-user device, Jason Wang, 2018/01/26
- Re: [Qemu-devel] [RFC 0/2] virtio-vhost-user: add virtio-vhost-user device, Stefan Hajnoczi, 2018/01/23
- Re: [Qemu-devel] [RFC 0/2] virtio-vhost-user: add virtio-vhost-user device, Wei Wang, 2018/01/23
Re: [Qemu-devel] [RFC 0/2] virtio-vhost-user: add virtio-vhost-user device, Wei Wang, 2018/01/22
- Re: [Qemu-devel] [RFC 0/2] virtio-vhost-user: add virtio-vhost-user device,
Stefan Hajnoczi <=
- Re: [Qemu-devel] [RFC 0/2] virtio-vhost-user: add virtio-vhost-user device, Wei Wang, 2018/01/23
- Re: [Qemu-devel] [RFC 0/2] virtio-vhost-user: add virtio-vhost-user device, Stefan Hajnoczi, 2018/01/24
- Re: [Qemu-devel] [RFC 0/2] virtio-vhost-user: add virtio-vhost-user device, Wei Wang, 2018/01/25
- Re: [Qemu-devel] [RFC 0/2] virtio-vhost-user: add virtio-vhost-user device, Stefan Hajnoczi, 2018/01/26
- Re: [Qemu-devel] [RFC 0/2] virtio-vhost-user: add virtio-vhost-user device, Wei Wang, 2018/01/30