qemu/hw
Eugenio Pérez 100890f7ca vhost: Shadow virtqueue buffers forwarding
Initial version of shadow virtqueue that actually forward buffers. There
is no iommu support at the moment, and that will be addressed in future
patches of this series. Since all vhost-vdpa devices use forced IOMMU,
this means that SVQ is not usable at this point of the series on any
device.

For simplicity it only supports modern devices, that expects vring
in little endian, with split ring and no event idx or indirect
descriptors. Support for them will not be added in this series.

It reuses the VirtQueue code for the device part. The driver part is
based on Linux's virtio_ring driver, but with stripped functionality
and optimizations so it's easier to review.

However, forwarding buffers have some particular pieces: One of the most
unexpected ones is that a guest's buffer can expand through more than
one descriptor in SVQ. While this is handled gracefully by qemu's
emulated virtio devices, it may cause unexpected SVQ queue full. This
patch also solves it by checking for this condition at both guest's
kicks and device's calls. The code may be more elegant in the future if
SVQ code runs in its own iocontext.

Signed-off-by: Eugenio Pérez <eperezma@redhat.com>
Acked-by: Michael S. Tsirkin <mst@redhat.com>
Signed-off-by: Jason Wang <jasowang@redhat.com>
2022-03-15 13:57:44 +08:00
..
9pfs 9pfs/coth.h: drop Doxygen format on v9fs_co_run_in_worker() 2022-03-07 11:49:31 +01:00
acpi hw/acpi: add indication for i8042 in IA-PC boot flags of the FADT table 2022-03-06 16:06:16 -05:00
adc
alpha
arm I²C / SMBus / PMBus patches 2022-03-09 21:16:27 +00:00
audio hw/isa: Inline and remove one-line isa_init_irq() 2022-03-08 19:38:17 +01:00
avr
block aspeed queue: 2022-03-09 18:06:40 +00:00
char hw/isa: Inline and remove one-line isa_init_irq() 2022-03-08 19:38:17 +01:00
core clock-vmstate: Add missing END_OF_LIST 2022-03-02 18:12:40 +00:00
cpu
cris
display macfb: set initial value of mode control registers in macfb_common_realize() 2022-03-09 09:29:10 +00:00
dma Mark remaining global TypeInfo instances as const 2022-02-21 13:30:20 +00:00
gpio hw: aspeed_gpio: Cleanup stray semicolon after switch 2022-03-08 09:18:11 +01:00
hppa hppa: Add support for an emulated TOC/NMI button. 2022-02-02 18:46:42 +01:00
hyperv
i2c hw/i2c: Added linear mode translation for pmbus devices 2022-03-08 18:46:48 +01:00
i386 hw/acpi/microvm: turn on 8042 bit in FADT boot architecture flags if present 2022-03-07 17:43:14 -05:00
ide MIPS patches queue 2022-03-09 09:13:39 +00:00
input hw/isa: Inline and remove one-line isa_init_irq() 2022-03-08 19:38:17 +01:00
intc hw/intc/arm_gicv3_cpuif: Fix register names in ICV_HPPIR read trace event 2022-03-07 13:16:50 +00:00
ipack
ipmi hw/isa: Inline and remove one-line isa_init_irq() 2022-03-08 19:38:17 +01:00
isa hw/isa: Inline and remove one-line isa_init_irq() 2022-03-08 19:38:17 +01:00
m68k mos6522: implement edge-triggering for CA1/2 and CB1/2 control line IRQs 2022-03-09 09:28:28 +00:00
mem Mark remaining global TypeInfo instances as const 2022-02-21 13:30:20 +00:00
microblaze
mips hw/mips/gt64xxx_pci: Resolve gt64120_register() 2022-03-08 19:38:13 +01:00
misc macio/pmu.c: remove redundant code 2022-03-09 09:28:28 +00:00
net virtio-net: fix map leaking on error during receive 2022-03-15 13:57:44 +08:00
nios2
nubus
nvme hw/nvme: 64-bit pi support 2022-03-03 09:30:21 +01:00
nvram hw/nvram: at24 return 0xff if 1 byte address 2022-03-14 14:48:35 +01:00
openrisc hw/openrisc/openrisc_sim: Add support for initrd loading 2022-02-26 10:39:36 +09:00
pci acpi: pcihp: pcie: set power on cap on parent slot 2022-03-06 05:08:23 -05:00
pci-bridge pci: expose TYPE_XIO3130_DOWNSTREAM name 2022-03-06 05:08:23 -05:00
pci-host ppc/pnv: Add support for PHB5 "Address-based trigger" mode 2022-03-02 06:51:39 +01:00
pcmcia
ppc osdep: Move memalign-related functions to their own header 2022-03-07 13:16:49 +00:00
rdma hw/dma: Use dma_addr_t type definition when relevant 2022-01-18 12:56:29 +01:00
remote hw/remote: Add missing include 2022-02-21 10:18:06 +01:00
riscv hw: riscv: opentitan: fixup SPI addresses 2022-03-03 13:14:50 +10:00
rtc hw/isa: Inline and remove one-line isa_init_irq() 2022-03-08 19:38:17 +01:00
rx
s390x s390x/cpumodel: Bump up QEMU model to a stripped-down IBM z15 GA1 2022-02-28 11:29:15 +01:00
scsi esp: recreate ESPState current_req after migration 2022-03-09 09:29:10 +00:00
sd Mark remaining global TypeInfo instances as const 2022-02-21 13:30:20 +00:00
sensor hw/sensor: add Renesas raa228000 device 2022-03-08 18:46:48 +01:00
sh4
smbios hw/smbios: Add table 4 parameter, "processor-id" 2022-03-06 05:28:55 -05:00
sparc
sparc64
ssi aspeed/smc: Fix error log 2022-03-08 09:18:11 +01:00
timer hw/timer: fix a9gtimer vmstate 2022-02-21 13:30:21 +00:00
tpm MIPS patches queue 2022-03-09 09:13:39 +00:00
tricore
usb hw/usb/redirect.c: Stop using qemu_oom_check() 2022-03-04 11:20:16 +01:00
vfio Mark remaining global TypeInfo instances as const 2022-02-21 13:30:20 +00:00
virtio vhost: Shadow virtqueue buffers forwarding 2022-03-15 13:57:44 +08:00
watchdog
xen
xenpv
xtensa
Kconfig
meson.build