Message ID | 20221202132231.1048669-1-alex.bennee@linaro.org |
---|---|
State | New |
Headers | show |
Series | [RFC,for,8.0] backends/vhost-user: relax the ioeventfd check | expand |
Alex Bennée <alex.bennee@linaro.org> writes: > While you certainly need ioeventfds to work for KVM guests it > shouldn't be limited to that. We can run vhost-user backends for TCG > guests and either use ioeventfds or in band signalling. > > Maybe we should apply the same fix as b0aa77d36d (vhost-user: fix > ioeventfd_enabled)? > > With this change I can run: > > $QEMU $OPTS \ > -display gtk,gl=on \ > -device vhost-user-gpu-pci,chardev=vhgpu \ > -chardev socket,id=vhgpu,path=vhgpu.sock > > with: > > ./contrib/vhost-user-gpu/vhost-user-gpu \ > -s vhgpu.sock \ > -v > > and at least see things start-up (although the display gets rotated by > 180 degrees). > > Signed-off-by: Alex Bennée <alex.bennee@linaro.org> > --- > backends/vhost-user.c | 10 ++-------- > 1 file changed, 2 insertions(+), 8 deletions(-) > > diff --git a/backends/vhost-user.c b/backends/vhost-user.c > index 5dedb2d987..87d43fb03a 100644 > --- a/backends/vhost-user.c > +++ b/backends/vhost-user.c > @@ -21,12 +21,6 @@ > #include "io/channel-command.h" > #include "hw/virtio/virtio-bus.h" > > -static bool > -ioeventfd_enabled(void) > -{ > - return kvm_enabled() && kvm_eventfds_enabled(); > -} > - > int > vhost_user_backend_dev_init(VhostUserBackend *b, VirtIODevice *vdev, > unsigned nvqs, Error **errp) > @@ -35,8 +29,8 @@ vhost_user_backend_dev_init(VhostUserBackend *b, VirtIODevice *vdev, > > assert(!b->vdev && vdev); > > - if (!ioeventfd_enabled()) { > - error_setg(errp, "vhost initialization failed: requires kvm"); > + if (kvm_enabled() && !kvm_eventfds_enabled()) { > + error_setg(errp, "vhost initialization failed: kvm required ioeventfds"); > return -1; > } Gentle ping?
On Mon, Dec 19, 2022 at 05:48:50PM +0000, Alex Bennée wrote: > > Alex Bennée <alex.bennee@linaro.org> writes: > > > While you certainly need ioeventfds to work for KVM guests it > > shouldn't be limited to that. We can run vhost-user backends for TCG > > guests and either use ioeventfds or in band signalling. > > > > Maybe we should apply the same fix as b0aa77d36d (vhost-user: fix > > ioeventfd_enabled)? > > > > With this change I can run: > > > > $QEMU $OPTS \ > > -display gtk,gl=on \ > > -device vhost-user-gpu-pci,chardev=vhgpu \ > > -chardev socket,id=vhgpu,path=vhgpu.sock > > > > with: > > > > ./contrib/vhost-user-gpu/vhost-user-gpu \ > > -s vhgpu.sock \ > > -v > > > > and at least see things start-up (although the display gets rotated by > > 180 degrees). > > > > Signed-off-by: Alex Bennée <alex.bennee@linaro.org> > > --- > > backends/vhost-user.c | 10 ++-------- > > 1 file changed, 2 insertions(+), 8 deletions(-) > > > > diff --git a/backends/vhost-user.c b/backends/vhost-user.c > > index 5dedb2d987..87d43fb03a 100644 > > --- a/backends/vhost-user.c > > +++ b/backends/vhost-user.c > > @@ -21,12 +21,6 @@ > > #include "io/channel-command.h" > > #include "hw/virtio/virtio-bus.h" > > > > -static bool > > -ioeventfd_enabled(void) > > -{ > > - return kvm_enabled() && kvm_eventfds_enabled(); > > -} > > - > > int > > vhost_user_backend_dev_init(VhostUserBackend *b, VirtIODevice *vdev, > > unsigned nvqs, Error **errp) > > @@ -35,8 +29,8 @@ vhost_user_backend_dev_init(VhostUserBackend *b, VirtIODevice *vdev, > > > > assert(!b->vdev && vdev); > > > > - if (!ioeventfd_enabled()) { > > - error_setg(errp, "vhost initialization failed: requires kvm"); > > + if (kvm_enabled() && !kvm_eventfds_enabled()) { > > + error_setg(errp, "vhost initialization failed: kvm required ioeventfds"); > > return -1; > > } > > Gentle ping? > Yea why not. Pls post a non RFC patch.
On Fri, 2 Dec 2022 at 08:23, Alex Bennée <alex.bennee@linaro.org> wrote: > > While you certainly need ioeventfds to work for KVM guests it > shouldn't be limited to that. We can run vhost-user backends for TCG > guests and either use ioeventfds or in band signalling. I suggest tweaking this sentence so it's clear that you mean QEMU's simulated eventfds rather than kvm.ko's real ioeventfds: s/use eventfds or in band signalling/simulate ioeventfds or use in band signalling/ > > Maybe we should apply the same fix as b0aa77d36d (vhost-user: fix > ioeventfd_enabled)? > > With this change I can run: > > $QEMU $OPTS \ > -display gtk,gl=on \ > -device vhost-user-gpu-pci,chardev=vhgpu \ > -chardev socket,id=vhgpu,path=vhgpu.sock > > with: > > ./contrib/vhost-user-gpu/vhost-user-gpu \ > -s vhgpu.sock \ > -v > > and at least see things start-up (although the display gets rotated by > 180 degrees). > > Signed-off-by: Alex Bennée <alex.bennee@linaro.org> > --- > backends/vhost-user.c | 10 ++-------- > 1 file changed, 2 insertions(+), 8 deletions(-) > > diff --git a/backends/vhost-user.c b/backends/vhost-user.c > index 5dedb2d987..87d43fb03a 100644 > --- a/backends/vhost-user.c > +++ b/backends/vhost-user.c > @@ -21,12 +21,6 @@ > #include "io/channel-command.h" > #include "hw/virtio/virtio-bus.h" > > -static bool > -ioeventfd_enabled(void) > -{ > - return kvm_enabled() && kvm_eventfds_enabled(); > -} > - > int > vhost_user_backend_dev_init(VhostUserBackend *b, VirtIODevice *vdev, > unsigned nvqs, Error **errp) > @@ -35,8 +29,8 @@ vhost_user_backend_dev_init(VhostUserBackend *b, VirtIODevice *vdev, > > assert(!b->vdev && vdev); > > - if (!ioeventfd_enabled()) { > - error_setg(errp, "vhost initialization failed: requires kvm"); > + if (kvm_enabled() && !kvm_eventfds_enabled()) { > + error_setg(errp, "vhost initialization failed: kvm required ioeventfds"); > return -1; > } The check can be dropped completely. If kvm.ko doesn't support ioeventfds QEMU can simulate them just like it does with TCG. In practice I don't think this happens with a reasonably modern kernel version. Stefan
diff --git a/backends/vhost-user.c b/backends/vhost-user.c index 5dedb2d987..87d43fb03a 100644 --- a/backends/vhost-user.c +++ b/backends/vhost-user.c @@ -21,12 +21,6 @@ #include "io/channel-command.h" #include "hw/virtio/virtio-bus.h" -static bool -ioeventfd_enabled(void) -{ - return kvm_enabled() && kvm_eventfds_enabled(); -} - int vhost_user_backend_dev_init(VhostUserBackend *b, VirtIODevice *vdev, unsigned nvqs, Error **errp) @@ -35,8 +29,8 @@ vhost_user_backend_dev_init(VhostUserBackend *b, VirtIODevice *vdev, assert(!b->vdev && vdev); - if (!ioeventfd_enabled()) { - error_setg(errp, "vhost initialization failed: requires kvm"); + if (kvm_enabled() && !kvm_eventfds_enabled()) { + error_setg(errp, "vhost initialization failed: kvm required ioeventfds"); return -1; }
While you certainly need ioeventfds to work for KVM guests it shouldn't be limited to that. We can run vhost-user backends for TCG guests and either use ioeventfds or in band signalling. Maybe we should apply the same fix as b0aa77d36d (vhost-user: fix ioeventfd_enabled)? With this change I can run: $QEMU $OPTS \ -display gtk,gl=on \ -device vhost-user-gpu-pci,chardev=vhgpu \ -chardev socket,id=vhgpu,path=vhgpu.sock with: ./contrib/vhost-user-gpu/vhost-user-gpu \ -s vhgpu.sock \ -v and at least see things start-up (although the display gets rotated by 180 degrees). Signed-off-by: Alex Bennée <alex.bennee@linaro.org> --- backends/vhost-user.c | 10 ++-------- 1 file changed, 2 insertions(+), 8 deletions(-)