Re: [kvm-devel] [RFC PATCH 0/4] Inter-guest virtio I/O example with lguest

Anthony Liguori
2008-03-20T14:11:35Z

Rusty Russell wrote:
> Hi all,
>
> Just finished my prototype of inter-guest virtio, using networking as an
> example. Each guest mmaps the other's address space and uses a FIFO for
> notifications.
>
> There are two issues with this approach. The first is that neither guest
> can change its mappings. See patch 1.

Avi mentioned that with MMU notifiers, it may be possible to introduce a
new kernel mechanism whereas you could map an arbitrary region of one
process's memory into another process. This would address this problem
quite nicely.

> The second is that our feature
> configuration is "host presents, guest chooses" which breaks down when we
> don't know the capabilities of each guest. In particular, TSO capability for
> networking.
> There are three possible solutions:
> 1) Just offer the lowest common denominator to both sides (ie. no features).
> This is what I do with lguest in these patches.
> 2) Offer something and handle the case where one Guest accepts and another
> doesn't by emulating it. ie. de-TSO the packets manually.
> 3) "Hot unplug" the device from the guest which asks for the greater features,
> then re-add it offering less features. Requires hotplug in the guest OS.
>
4) Add a feature negotiation feature. The feature that gets set is the
"feature negotiate" feature. If a guest doesn't support feature
negotiation, you end up with the least-common denominator (no
features). If both guests support feature negotiation, you can then add
something new to determine the true common subset.

> I haven't tuned or even benchmarked these patches, but it pings!
>

Very nice! It's particularly cool that it was possible entirely in
userspace.

Regards,

Anthony Liguori

> Rusty.
>
> -------------------------------------------------------------------------
> This SF.net email is sponsored by: Microsoft
> Defy all challenges. Microsoft(R) Visual Studio 2008.
> http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/
> _______________________________________________
> kvm-devel mailing list
> kvm-devel-5NWGOfrQmneRv+LV9MX5uipxlwaOVQ5f@public.gmane.org
> https://lists.sourceforge.net/lists/listinfo/kvm-devel
>