qemu-e2k/hw
Jason Wang c471ad0e9b vhost_net: device IOTLB support
This patches implements Device IOTLB support for vhost kernel. This is
done through:

1) switch to use dma helpers when map/unmap vrings from vhost codes
2) introduce a set of VhostOps to:
   - setting up device IOTLB request callback
   - processing device IOTLB request
   - processing device IOTLB invalidation
2) kernel support for Device IOTLB API:

- allow vhost-net to query the IOMMU IOTLB entry through eventfd
- enable the ability for qemu to update a specified mapping of vhost
- through ioctl.
- enable the ability to invalidate a specified range of iova for the
  device IOTLB of vhost through ioctl. In x86/intel_iommu case this is
  triggered through iommu memory region notifier from device IOTLB
  invalidation descriptor processing routine.

With all the above, kernel vhost_net can co-operate with userspace
IOMMU. For vhost-user, the support could be easily done on top by
implementing the VhostOps.

Cc: Michael S. Tsirkin <mst@redhat.com>
Signed-off-by: Jason Wang <jasowang@redhat.com>
Reviewed-by: Michael S. Tsirkin <mst@redhat.com>
Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
2017-01-18 22:59:53 +02:00
..
9pfs 9pfs: fix P9_NOTAG and P9_NOFID macros 2017-01-03 17:28:44 +01:00
acpi memhp: move DIMM devices into dedicated scope with related common methods 2017-01-10 07:03:24 +02:00
adc STM32F2xx: Add the ADC device 2016-10-04 13:28:07 +01:00
alpha Move target-* CPU file into a target/ folder 2016-12-20 21:52:12 +01:00
arm hw/arm/virt-acpi-build: Don't incorrectly claim architectural timer to be edge-triggered 2017-01-09 11:40:23 +00:00
audio es1370: wire up reset via DeviceClass 2017-01-11 09:19:03 +01:00
block virtio: convert to use DMA api 2017-01-10 05:56:58 +02:00
bt char: replace avail_connections 2016-10-24 15:46:10 +02:00
char virtio: convert to use DMA api 2017-01-10 05:56:58 +02:00
core loader: fix undefined behavior in rom_order_compare() 2016-11-30 04:22:18 +02:00
cpu cpu: Abstract CPU core type 2016-06-17 16:33:48 +10:00
cris cris: Fix broken header guard in hw/cris/boot.h 2016-07-12 16:20:46 +02:00
display virtio-gpu: tag as not hotpluggable 2017-01-11 09:19:05 +01:00
dma hw/dma/pl080: Fix bad bit mask (PL080_CONF_M1 | PL080_CONF_M1) 2016-10-17 19:22:17 +01:00
gpio i2c: Allow I2C devices to NAK start events 2017-01-09 11:40:20 +00:00
i2c i2c: Allow I2C devices to NAK start events 2017-01-09 11:40:20 +00:00
i386 memhp: don't generate memory hotplug AML if it's not enabled/supported 2017-01-10 07:03:24 +02:00
ide atapi: classify read_cd as conditionally returning data 2016-11-14 11:15:54 -05:00
input gtk,vnc: misc bugfixes. 2017-01-10 14:52:34 +00:00
intc hw/intc/arm_gicv3: Don't signal Pending+Active interrupts to CPU 2016-12-27 14:59:25 +00:00
ipack ipack: Update e-mail address 2016-05-18 15:04:27 +03:00
ipmi ipmi: fix qemu crash while migrating with ipmi 2016-11-18 17:50:09 +02:00
isa char: remove init callback 2016-10-24 15:27:20 +02:00
lm32 loader: fix handling of custom address spaces when adding ROM blobs 2016-11-30 04:20:57 +02:00
m68k m68k: change default system clock for m5208evb 2016-10-08 11:25:29 +03:00
mem pc: memhp: enable nvdimm device hotplug 2016-11-01 19:21:09 +02:00
microblaze clean-up: removed duplicate #includes 2016-10-28 18:17:24 +03:00
mips clean-up: removed duplicate #includes 2016-10-28 18:17:24 +03:00
misc i2c: Allow I2C devices to NAK start events 2017-01-09 11:40:20 +00:00
moxie hw: explicitly include qemu-common.h and cpu.h 2016-03-22 22:20:17 +01:00
net vhost_net: device IOTLB support 2017-01-18 22:59:53 +02:00
nvram fw_cfg: move FW_CFG_NB_CPUS out of fw_cfg_init1() 2016-11-16 12:09:58 -02:00
openrisc hw: explicitly include qemu-common.h and cpu.h 2016-03-22 22:20:17 +01:00
pci pcie_aer: support configurable AER capa version 2017-01-10 07:02:52 +02:00
pci-bridge pcie_aer: support configurable AER capa version 2017-01-10 07:02:52 +02:00
pci-host ppc: Make uninorth interrupt swizzling identical to Grackle 2016-11-23 12:00:48 +11:00
pcmcia hw: Clean up includes 2016-01-29 15:07:25 +00:00
ppc Move target-* CPU file into a target/ folder 2016-12-20 21:52:12 +01:00
s390x virtio: avoid using guest_notifier_mask in vhost-user mode 2016-12-16 01:14:54 +02:00
scsi virtio: convert to use DMA api 2017-01-10 05:56:58 +02:00
sd vmstateify ssi-sd 2016-09-22 18:13:08 +01:00
sh4 cputlb: drop flush_global flag from tlb_flush 2017-01-13 14:24:37 +00:00
smbios smbios: fix uuid copy 2016-09-29 11:43:22 +08:00
sparc fw_cfg: move FW_CFG_NB_CPUS out of fw_cfg_init1() 2016-11-16 12:09:58 -02:00
sparc64 fw_cfg: move FW_CFG_NB_CPUS out of fw_cfg_init1() 2016-11-16 12:09:58 -02:00
ssi hw/ssi/imx_spi.c: Remove MSGDATA register support 2017-01-09 11:50:23 +00:00
timer i2c: Allow I2C devices to NAK start events 2017-01-09 11:40:20 +00:00
tpm clean-up: removed duplicate #includes 2016-10-28 18:17:24 +03:00
tricore tricore: remove useless cast 2016-09-15 15:32:22 +03:00
unicore32 clean-up: removed duplicate #includes 2016-10-28 18:17:24 +03:00
usb xen: attach pvusb usb bus to backend qdev 2016-11-22 10:29:41 -08:00
vfio vfio: Add support for mmapping sub-page MMIO BARs 2016-10-31 09:53:04 -06:00
virtio vhost_net: device IOTLB support 2017-01-18 22:59:53 +02:00
watchdog watchdog: 6300esb: add exit function 2016-12-22 16:00:23 +01:00
xen xen: create qdev for each backend device 2016-11-22 10:29:39 -08:00
xenpv xenpv: Fix qemu_uuid compiling error 2016-09-29 11:43:17 +08:00
xtensa char: remove init callback 2016-10-24 15:27:20 +02:00
Makefile.objs STM32F2xx: Add the ADC device 2016-10-04 13:28:07 +01:00