[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: Enabling hypervisor agnosticism for VirtIO backends
Hi Stefan, On Tue, Aug 17, 2021 at 11:41:01AM +0100, Stefan Hajnoczi wrote: > On Wed, Aug 04, 2021 at 12:20:01PM -0700, Stefano Stabellini wrote: > > > Could we consider the kernel internally converting IOREQ messages from > > > the Xen hypervisor to eventfd events? Would this scale with other kernel > > > hypercall interfaces? > > > > > > So any thoughts on what directions are worth experimenting with? > > > > One option we should consider is for each backend to connect to Xen via > > the IOREQ interface. We could generalize the IOREQ interface and make it > > hypervisor agnostic. The interface is really trivial and easy to add. > > The only Xen-specific part is the notification mechanism, which is an > > event channel. If we replaced the event channel with something else the > > interface would be generic. See: > > https://gitlab.com/xen-project/xen/-/blob/staging/xen/include/public/hvm/ioreq.h#L52 > > There have been experiments with something kind of similar in KVM > recently (see struct ioregionfd_cmd): > https://lore.kernel.org/kvm/dad3d025bcf15ece11d9df0ff685e8ab0a4f2edd.1613828727.git.eafanasova@xxxxxxxxx/ Do you know the current status of Elena's work? It was last February that she posted her latest patch and it has not been merged upstream yet. > > There is also another problem. IOREQ is probably not be the only > > interface needed. Have a look at > > https://marc.info/?l=xen-devel&m=162373754705233&w=2. Don't we also need > > an interface for the backend to inject interrupts into the frontend? And > > if the backend requires dynamic memory mappings of frontend pages, then > > we would also need an interface to map/unmap domU pages. > > > > These interfaces are a lot more problematic than IOREQ: IOREQ is tiny > > and self-contained. It is easy to add anywhere. A new interface to > > inject interrupts or map pages is more difficult to manage because it > > would require changes scattered across the various emulators. > > Something like ioreq is indeed necessary to implement arbitrary devices, > but if you are willing to restrict yourself to VIRTIO then other > interfaces are possible too because the VIRTIO device model is different > from the general purpose x86 PIO/MMIO that Xen's ioreq seems to support. Can you please elaborate your thoughts a bit more here? It seems to me that trapping MMIOs to configuration space and forwarding those events to BE (or device emulation) is a quite straight-forward way to emulate device MMIOs. Or do you think of something of protocols used in vhost-user? # On the contrary, virtio-ivshmem only requires a driver to explicitly # forward a "write" request of MMIO accesses to BE. But I don't think # it's your point. -Takahiro Akashi > Stefan
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |