On 19/11/2015 13:01, Michael S. Tsirkin wrote: >> > You know... I took a look at this, and yes, i could simply hook up >> > emulation into memory region handlers. And everything that >> > expects KVM eventfd binding will magically start working, probably >> > rendering some bypass code obsolete. >> > I have only one concern against this. qemu is a large piece of software, >> > consisting of lots of components. I cannot test absolutely >> > everything in every configuration. I suggest, old code was written with >> > the assumption that if memory_region_add_eventfd() works, we >> > are really using KVM acceleration. If we break this assumption, how much >> > code will mysteriously misbehave instead of throwing > First of all, memory_region_add_eventfd simply exits on failure. > It seems unlikely you will break something which isn't already > broken. > > Further: > > $ git grep memory_region_add_eventfd > hw/misc/ivshmem.c: memory_region_add_eventfd(&s->ivshmem_mmio, > hw/misc/pci-testdev.c: memory_region_add_eventfd(test->mr, > hw/virtio/virtio-mmio.c: memory_region_add_eventfd(&proxy->iomem, > VIRTIO_MMIO_QUEUENOTIFY, 4, > hw/virtio/virtio-pci.c: memory_region_add_eventfd(modern_mr, > modern_addr, 0, > hw/virtio/virtio-pci.c: memory_region_add_eventfd(modern_mr, > modern_addr, 2, > hw/virtio/virtio-pci.c: > memory_region_add_eventfd(modern_notify_mr, 0, 2, > hw/virtio/virtio-pci.c: memory_region_add_eventfd(legacy_mr, > legacy_addr, 2, > include/exec/memory.h: * memory_region_add_eventfd: Request an eventfd to be > triggered when a word > include/exec/memory.h:void memory_region_add_eventfd(MemoryRegion *mr, > include/exec/memory.h: * memory_region_add_eventfd() call. > memory.c:void memory_region_add_eventfd(MemoryRegion *mr, > > Not such a bit deal to audit all call sites, is it? > > Cc memory API maintainer for an opinion. > > Paolo, do you see anything wrong with making > memory_region_add_eventfd work (slowly) without kvm ioeventfd support? >
Sure, it's even been on the todo list for a while. Stefan Hajnoczi had a patch, the only ugly thing was that it slowed down a little all non-ioeventfd accesses, but I guess that's okay because it's probably not measurable. http://lists.nongnu.org/archive/html/qemu-devel/2015-07/msg04710.html Paolo Paolo