On Tue, 2019-01-15 at 10:23 -0500, Cole Robinson wrote:
On 01/15/2019 08:30 AM, Andrea Bolognani wrote:
[...]
> 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.
Okay thanks for the correction, so that sounds like for NON_TRANSITIONAL
we should also be forcing pcieFlags.
Not really.
As explained above, non-transitional VirtIO devices work when
plugged into both conventional PCI and PCI Express slots, so
virtioFlags sounds more appropriate: by using pcieFlags you'd limit
non-transitional devices to q35 guests, while they can work just
fine on i440fx too.
I've made those changes and updated
the branch here:
https://github.com/crobinso/libvirt/tree/virtio
I'm only gonna cherry-pick commit 1/6 from the GitHub branch to
avoid any ambiguity when there's a divergence between what you
posted on the mailing list and what you pushed on GitHub: more
specifically, I'm gonna be reviewing the former.
--
Andrea Bolognani / Red Hat / Virtualization