On Thu, Jul 25, 2019 at 04:26:42PM +0200, Paolo Bonzini wrote: > On 25/07/19 16:04, Peter Maydell wrote: > > On Thu, 25 Jul 2019 at 14:43, Paolo Bonzini <pbonz...@redhat.com> wrote: > >> To me *maintainability is the biggest consideration* when introducing a > >> new feature. "We can do just as well with q35" is a good reason to > >> deprecate and delete microvm, but not a good reason to reject it now as > >> long as microvm is good enough in terms of maintainability. > > > > I think maintainability matters, but also important is "are > > we going in the right direction in the first place?". > > virtio-mmio is (variously deliberately and accidentally) > > quite a long way behind virtio-pci, and certain kinds of things > > (hotplug, extensibility beyond a certain number of endpoints) > > are not going to be possible (either ever, or without a lot > > of extra design and implementation work to reimplement stuff > > we have already today with PCI). Are we sure we're not going > > to end up with a stream of "oh, now we need to implement X for > > virtio-mmio (that virtio-pci already has)", "users want Y now > > (that virtio-pci already has)", etc? > > I think this is part of maintainability in a wider sense. For every > missing feature there should be a good reason why it's not needed. And > if there is already code to do that in QEMU, then there should be an > excellent reason why it's not being used. (This was the essence of the > firmware debate). > > So for microvm you could do without hotplug because the idea is that you > just tear down the VM and restart it. Lack of MSI is actually what > worries me the most, but we could say that microvm clients generally > have little multiprocessing so it's not common to have multiple network > flows at the same time and so you don't need multiqueue.
Me too, and in fact someone just posted virtio-mmio: support multiple interrupt vectors > For microvm in particular there are two reasons why we can take some > shortcuts (but with care): > > - we won't support versioned machine types for microvm. microvm guests > die every time you upgrade QEMU, by design. So this is not another QED, > which implemented more features than qcow2 but did so at the wrong place > of the stack. In fact it's exactly the opposite (it implements less > features, so that the implementation of e.g. q35 or PCI is untouched and > does not need one-off boot time optimization hacks) > > - we know that Amazon is using something very similar to microvm in > production, with virtio-mmio, so the feature set is at least usable for > something. > > > The other thing is that once we've introduced something we're > > stuck with whatever it does, because we don't like breaking > > backwards compatibility. So I think getting the virtio-legacy > > vs virtio-1 story sorted out before we land microvm is > > important, at least to the point where we know we haven't > > backed ourselves into a corner or required a lot of extra > > effort on transitional-device support that we could have > > avoided. > > Even though we won't support versioned machine types, I think there is > agreement that virtio 0.9 is a bad idea and should be fixed. > > Paolo Right, for the simple reason that mmio does not support transitional devices, only transitional drivers. So if we commit to supporting old guests, we won't be able to back out of that. > > Which isn't to say that I'm against the microvm approach; > > just that I'd like us to consider and make a decision on > > these issues before landing it, rather than just saying > > "the patches in themselves look good, let's merge it". > > > > thanks > > -- PMM > >