RE: [Xen-devel] [PATCH RFC 1/3] virtio infrastructure
From: Santos, Jose Renato G <hidden>
Date: 2007-06-04 21:14:01
-----Original Message----- From: Rusty Russell [mailto:rusty@rustcorp.com.au] Sent: Saturday, June 02, 2007 3:13 AM To: Santos, Jose Renato G Cc: kvm-devel; Xen Mailing List; virtualization; Jimi Xenidis; Stephen Rothwell; jmk@plan9.bell-labs.com; Herbert Xu; Christian Borntraeger; Suzanne McIntosh; Anthony Liguori; Martin Schwidefsky Subject: RE: [Xen-devel] [PATCH RFC 1/3] virtio infrastructure Hi Renato! This is a very good question. For currently-existing and working devices it just seems like another layer of indirection, and not much code saving. There are several reasons for having a common layer. The obvious is to reduce the amount of code, but that's the least important. Slightly more important is that noone wants to maintain and tune 5 different virtual net drivers, 5 different virtual block drivers, etc. In fact, the kernel community will start to rebel at some point, especially if they want different optimization hooks deeper into the kernel.
Rusty, Thanks for clarifying your thinking. This helped me understand your goals better. I agree it would be nice to reduce the number of drivers as it improves mantainability. However I am not convinced that adding an IO virtualization layer will remove the need for having different drivers for different virtualization technologies. It seems that we will still need specific devices drivers for each different virtualization flavor. For example, we will still need to have a specific Xen netfront device that talks to a backend device in dom0, using page grants, and other Xen specific mechanisms. It looks like will still need to maintain all the virtual device drivers and in addition we will now have to maintain another virtualization layer. I confess I don't know well any of the other virtualization technologies besides Xen. Maybe for some of them there is enough similarities that you could benefit from a common virtualization layer, but I just can't see it yet. Regards Renato
We expect to see new device types (entropy device, anyone?), and so the 5 different drivers becomes the 5 x N different drivers. Eventually we may come up with common bus and probing which everyone loves, but until then we can at least make it simple for each virtualization technology to implement the new XYZZY device. Finally, virtual I/O techniques are *moving*. KVM doesn't really have one, XenSource are discussing more changes to theirs (at least for networking) and lguest is still looking for an efficient one. No doubt the others would love to use clean and optimal Linux drivers, too (UML, S/390, Power, VMWare?). When Linux doesn't provide a model of what it expects from virtual devices, one end of the design process is untethered: we've already seen some fairly random and gratuitously different results. If we can provide a simple interface which we like it encourages new implementations to produce Linux-friendly interfaces. Of course, the new interface must not suck. I hope that clarifies my thinking? Rusty.