summaryrefslogtreecommitdiffstats
path: root/hw/vhost.c
Commit message (Collapse)AuthorAgeFilesLines
* vhost-net: cleanup host notifiers at last stepMichael S. Tsirkin2011-08-261-19/+55
| | | | | | | | | | | | | | | | When the vhost notifier is disabled, the userspace handler runs immediately: virtio_pci_set_host_notifier_internal might call virtio_queue_notify_vq. Since the VQ state and the tap backend state aren't recovered yet, this causes "Guest moved used index from XXX to YYY" assertions. The solution is to split out host notifier handling from vhost VQ setup and disable notifiers as our last step when we stop vhost-net. For symmetry enable them first thing on start. Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
* Use glib memory allocation and free functionsAnthony Liguori2011-08-201-8/+8
| | | | | | qemu_malloc/qemu_free no longer exist after this commit. Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
* vhost: remove an incorrect assertMichael S. Tsirkin2011-08-031-1/+0
| | | | | | | | | | The 'to' can go negative when the first region gets removed (it gets incremented by to 0 immediately afterward), which makes the assertion fail. Nothing breaks if to < 0 here so just remove the assert. Tested-by: David Ahern <daahern@cisco.com> Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
* vhost: fix double free on device stopMichael S. Tsirkin2011-07-171-0/+1
| | | | | | | | | vhost dev stop failed to clear the log field. Typically not an issue as dev start overwrites this field, but if logging gets disabled before the following start, it doesn't so this causes a double free. Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
* vhost: optimize out no-change assignmentMichael S. Tsirkin2011-04-071-0/+54
| | | | | | | | | Cirrus VGA (at least) calls register memory region with the same values again and again. The registration in vhost-net slows this a lot, optimize by checking that the same data is already registered. Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
* vhost: skip memory which needs dirty loggingMichael S. Tsirkin2011-04-061-0/+4
| | | | | | | vhost doesn't support write logging (except for migration), anyway. Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
* cpu: add set_memory flag to request dirty loggingMichael S. Tsirkin2011-04-061-1/+2
| | | | | | | | Pass the flag to all cpu notifiers, doing nothing at this point. Will be used by follow-up patches. Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
* vhost: fix dirty page handlingMichael S. Tsirkin2011-03-281-1/+3
| | | | | | | | | | vhost was passing a physical address to cpu_physical_memory_set_dirty, which is wrong: we need to translate to ram address first. Signed-off-by: Michael S. Tsirkin <mst@redhat.com> Note: this lead to crashes during migration, so the patch is needed on the stable branch too.
* Introduce log_start/log_stop in CPUPhysMemoryClientAnthony PERARD2011-02-141-0/+2
| | | | | | | | | | | | | | | In order to use log_start/log_stop with Xen as well in the vga code, this two operations have been put in CPUPhysMemoryClient. The two new functions cpu_physical_log_start,cpu_physical_log_stop are used in hw/vga.c and replace the kvm_log_start/stop. With this, vga does no longer depends on kvm header. [ Jan: rebasing and style fixlets ] Signed-off-by: Anthony PERARD <anthony.perard@citrix.com> Signed-off-by: Jan Kiszka <jan.kiszka@siemens.com> Signed-off-by: Marcelo Tosatti <mtosatti@redhat.com>
* vhost: force vhost off for non-MSI guestsmst@redhat.com2011-02-011-1/+9
| | | | | | | | | | | | | | | When MSI is off, each interrupt needs to be bounced through the io thread when it's set/cleared, so vhost-net causes more context switches and higher CPU utilization than userspace virtio which handles networking in the same thread. We'll need to fix this by adding level irq support in kvm irqfd, for now disable vhost-net in these configurations. Added a vhostforce flag to force vhost-net back on. Signed-off-by: Michael S. Tsirkin <mst@redhat.com> Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
* vhost: Fix address calculation in vhost_dev_sync_region()Jason Wang2010-12-021-0/+1
| | | | | | | | We still need advance address even we find there's no dirty pages in current chunk. Signed-off-by: Jason Wang <jasowang@redhat.com> Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
* vhost: error codeMichael S. Tsirkin2010-10-071-0/+2
| | | | | | fix up errors returned to include errno, not just -1 Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
* virtio: change set guest notifier to per-deviceMichael S. Tsirkin2010-10-071-24/+28
| | | | | | | | | When using irqfd with vhost-net to inject interrupts, a single evenfd might inject multiple interrupts. Implementing this is much easier with a single per-device callback to set guest notifiers. Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
* Introduce range.hBlue Swirl2010-09-181-2/+1
| | | | | | | Extract range functions from pci.h. These will be used by later patches by non-PCI devices. Adjust current users. Signed-off-by: Blue Swirl <blauwirbel@gmail.com>
* Remove unused eventfd.hMike McCormack2010-07-301-1/+0
| | | | | | | | This header is not present on my system and causes a build failure, but is also not used in these files, so remove it. Signed-off-by: Mike McCormack <mikem@ring3k.org> Signed-off-by: Aurelien Jarno <aurelien@aurel32.net>
* vhost: fix miration during device startMichael S. Tsirkin2010-07-191-10/+11
| | | | | | | | | | | | We need to know ring layout to allocate log buffer. So init rings first. Also fixes a theoretical memory-leak-on-error. https://bugzilla.redhat.com/show_bug.cgi?id=615228 Signed-off-by: Michael S. Tsirkin <mst@redhat.com> Tested-by: Gerd Hoffmann <kraxel@redhat.com>
* vhost.c: include <linux/vhost.h> lastMarcelo Tosatti2010-04-141-1/+1
| | | | | | | | | So the userspace headers define KERNEL_STRICT_NAMES and there's no conflict on type definition for older kernels. Signed-off-by: Marcelo Tosatti <mtosatti@redhat.com> Acked-by: Michael S. Tsirkin <mst@redhat.com> Signed-off-by: Aurelien Jarno <aurelien@aurel32.net>
* win32: Fix compiler errors from u_int64_tStefan Weil2010-04-011-3/+3
| | | | | | | | | | | | | | | | | u_int64_t raises compiler error messages: CC libhw32/virtio.o /qemu/ar7/hw/virtio.c: In function ‘virtio_queue_get_avail_size’: /qemu/ar7/hw/virtio.c:776: error: ‘u_int64_t’ undeclared (first use in this function) /qemu/ar7/hw/virtio.c:776: error: (Each undeclared identifier is reported only once /qemu/ar7/hw/virtio.c:776: error: for each function it appears in.) Replacing u_int64_t by uint64_t helps. Cc: Michael S. Tsirkin <mst@redhat.com> Cc: Anthony Liguori <aliguori@us.ibm.com> Signed-off-by: Stefan Weil <weil@mail.berlios.de> Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
* vhost: vhost net supportMichael S. Tsirkin2010-04-011-0/+711
This adds vhost net device support in qemu. Will be tied to tap device and virtio by following patches. Raw backend is currently missing, will be worked on/submitted separately. Signed-off-by: Michael S. Tsirkin <mst@redhat.com> Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
OpenPOWER on IntegriCloud