Revision 73d604a4bc5641d38680dbac3e90e368db9549a3 authored by Kevin Wolf on 15 March 2024, 15:59:49 UTC, committed by Michael Tokarev on 27 March 2024, 06:39:28 UTC
VDUSE requires that virtqueues are first enabled before the DRIVER_OK status flag is set; with the current API of the kernel module, it is impossible to enable the opposite order in our block export code because userspace is not notified when a virtqueue is enabled. This requirement also mathces the normal initialisation order as done by the generic vhost code in QEMU. However, commit 6c482547 accidentally changed the order for vdpa-dev and broke access to VDUSE devices with this. This changes vdpa-dev to use the normal order again and use the standard vhost callback .vhost_set_vring_enable for this. VDUSE devices can be used with vdpa-dev again after this fix. vhost_net intentionally avoided enabling the vrings for vdpa and does this manually later while it does enable them for other vhost backends. Reflect this in the vhost_net code and return early for vdpa, so that the behaviour doesn't change for this device. Cc: qemu-stable@nongnu.org Fixes: 6c4825476a43 ('vdpa: move vhost_vdpa_set_vring_ready to the caller') Signed-off-by: Kevin Wolf <kwolf@redhat.com> Message-ID: <20240315155949.86066-1-kwolf@redhat.com> Reviewed-by: Eugenio Pérez <eperezma@redhat.com> Reviewed-by: Stefano Garzarella <sgarzare@redhat.com> Signed-off-by: Kevin Wolf <kwolf@redhat.com> (cherry picked from commit 2c66de61f88dc9620a32239f7dd61524a57f66b0) Signed-off-by: Michael Tokarev <mjt@tls.msk.ru>
1 parent 784ebe5
File | Mode | Size |
---|---|---|
bdrv-next-monitor-owned.c | -rw-r--r-- | 135 bytes |
blk-commit-all.c | -rw-r--r-- | 102 bytes |
blk-exp-close-all.c | -rw-r--r-- | 156 bytes |
blockdev-close-all-bdrv-states.c | -rw-r--r-- | 100 bytes |
change-state-handler.c | -rw-r--r-- | 312 bytes |
cmos.c | -rw-r--r-- | 117 bytes |
colo-compare.c | -rw-r--r-- | 116 bytes |
colo.c | -rw-r--r-- | 654 bytes |
cpu-get-clock.c | -rw-r--r-- | 149 bytes |
cpu-synchronize-state.c | -rw-r--r-- | 150 bytes |
cpus-get-virtual-clock.c | -rw-r--r-- | 153 bytes |
dump.c | -rw-r--r-- | 530 bytes |
error-printf.c | -rw-r--r-- | 539 bytes |
fdset.c | -rw-r--r-- | 266 bytes |
fw_cfg.c | -rw-r--r-- | 428 bytes |
gdbstub.c | -rw-r--r-- | 140 bytes |
get-vm-name.c | -rw-r--r-- | 109 bytes |
graph-lock.c | -rw-r--r-- | 150 bytes |
icount.c | -rw-r--r-- | 735 bytes |
io_uring.c | -rw-r--r-- | 603 bytes |
iothread-lock-block.c | -rw-r--r-- | 158 bytes |
iothread-lock.c | -rw-r--r-- | 224 bytes |
is-daemonized.c | -rw-r--r-- | 130 bytes |
isa-bus.c | -rw-r--r-- | 141 bytes |
linux-aio.c | -rw-r--r-- | 605 bytes |
memory_device.c | -rw-r--r-- | 352 bytes |
meson.build | -rw-r--r-- | 2.2 KB |
migr-blocker.c | -rw-r--r-- | 356 bytes |
module-opts.c | -rw-r--r-- | 54 bytes |
monitor-core.c | -rw-r--r-- | 421 bytes |
monitor.c | -rw-r--r-- | 384 bytes |
pci-bus.c | -rw-r--r-- | 152 bytes |
physmem.c | -rw-r--r-- | 249 bytes |
qdev.c | -rw-r--r-- | 664 bytes |
qemu-timer-notify-cb.c | -rw-r--r-- | 173 bytes |
qmp-command-available.c | -rw-r--r-- | 141 bytes |
qmp-quit.c | -rw-r--r-- | 156 bytes |
qtest.c | -rw-r--r-- | 431 bytes |
ram-block.c | -rw-r--r-- | 554 bytes |
ramfb.c | -rw-r--r-- | 301 bytes |
replay-tools.c | -rw-r--r-- | 1.3 KB |
replay.c | -rw-r--r-- | 347 bytes |
runstate-check.c | -rw-r--r-- | 135 bytes |
semihost-all.c | -rw-r--r-- | 339 bytes |
semihost.c | -rw-r--r-- | 1.2 KB |
sysbus.c | -rw-r--r-- | 107 bytes |
target-get-monitor-def.c | -rw-r--r-- | 984 bytes |
target-monitor-defs.c | -rw-r--r-- | 136 bytes |
trace-control.c | -rw-r--r-- | 976 bytes |
usb-dev-stub.c | -rw-r--r-- | 739 bytes |
uuid.c | -rw-r--r-- | 235 bytes |
virtio-md-pci.c | -rw-r--r-- | 719 bytes |
vm-stop.c | -rw-r--r-- | 183 bytes |
vmstate.c | -rw-r--r-- | 648 bytes |
win32-kbd-hook.c | -rw-r--r-- | 340 bytes |
xen-hw-stub.c | -rw-r--r-- | 843 bytes |
Computing file changes ...