[libvirt] [PATCH 0/6] RFC: qemu: virtio-{non-}transitional support

Daniel P. Berrangé berrange at redhat.com
Tue Jan 15 17:02:42 UTC 2019


On Tue, Jan 15, 2019 at 02:30:14PM +0100, Andrea Bolognani wrote:
> On Sun, 2019-01-13 at 18:12 -0500, Cole Robinson wrote:
> [...]
> > The main RFC bits here are:
> > 
> > * The disk approach. danpb and I briefly discussed on IRC adding
> >   new bus= values vs a new model= attribute. We decided model=
> >   is the lesser of two evils, since bus= handling in apps is
> >   tied with target= generation, so adding new virtio-X bus=
> >   values will cause more work for apps. These patches add
> >   a <disk model=X/> attribute
> 
> This sounds fairly reasonable, but I reserve the right to change my
> mind after looking at the code and thinking about it a bit more :)
> 
> > * The XML and naming. Previous discussions seemed to favor adding
> >   new model-style values rather than a 'transitional' attribute
> >   or similar. So these patches add model='virtio-transitional'
> >   and model='virtio-non-transitional'
> 
> Yeah, that's what I recall the consensus being.
> 
> > * The PCI address handling. I just mapped virtio-non-transitional
> >   to imply plain PCI addressing. I think that's all we need but
> >   I'm not positive so I'd appreciate a review of that approach.
> 
> I don't think that's right. Let me fish up a message I wrote a while
> ago summing up interactions between VirtIO devices and PCI (Express)
> slots:
> 
>   http://lists.nongnu.org/archive/html/qemu-devel/2018-11/msg03133.html
> 
> Basically VirtIO 0.9 requires IO space to be available, and 1.0 did
> away with that requirement because PCI Express, unlike conventional
> PCI, allows devices *not* to have IO space.
> 
> So transitional devices, which must work with both 0.9 and 1.0, can
> depend on IO space being available and as such will only work when
> plugged into conventional PCI slots, whereas non-transitional
> devices don't need IO space and can thus be plugged into either
> conventional PCI and PCI Express slots.
> 
> Ultimately, then, transitional (rather than non-transitional)
> devices are the ones that must be forced into conventional PCI
> slots.

Yes, the existing devices fail when placed in a PCI-X slot with certain
guest OS. The -transitional devices are functionally identical to the
existing devices. They serve as a hint to libvirt that it should never
place them in a PCI-X slot.

Non-transitional (aka 1.0) devices work correctly in either slot type

Regards,
Daniel
-- 
|: https://berrange.com      -o-    https://www.flickr.com/photos/dberrange :|
|: https://libvirt.org         -o-            https://fstop138.berrange.com :|
|: https://entangle-photo.org    -o-    https://www.instagram.com/dberrange :|




More information about the libvir-list mailing list