On Wed, Oct 17, 2018 at 12:38:29PM -0400, Michael S. Tsirkin wrote: > On Wed, Oct 17, 2018 at 12:56:37PM -0300, Eduardo Habkost wrote: > > (CCing Marcel, in case he has extra details on the complex > > Conventional/Express bus/device plugging rules) > > > > On Wed, Oct 17, 2018 at 07:57:39AM +0200, Markus Armbruster wrote: > > > Laine Stump <la...@redhat.com> writes: > > > > > > [...] > > > > In the end, having a device that changed PCI ID depending on what kind > > > > of slot it was plugged into was an idea "too clever for its own good", > > > > should be avoided when new devices are added in the future, and we > > > > should at least provide an alternative that doesn't do that for existing > > > > devices. > > > > > > That means for each chameleon PCI/PCIe device: > > > > > > * create a pair of devices that can only go into one kind of slot > > > > > > * deprecate the chameleon > > > > > > Yes, please! Volunteers? > > > > > > Do we have similar chameleons outside PCI? > > > > I'm worried that we could be trying to address multiple issues at > > the same time, and I'm not sure yet if we should address all of > > them in one take. > > > > Right now we need to differentiate non-transitional and > > transitional virtio devices, for a few reasons: > > * They have different PCI IDs; > > * Legacy drivers don't work with non-transitional devices; > > * Transitional virtio devices can be plugged to Conventional PCI > > buses; non-transitional ones can't. > > No that last point isn't true at all.
Sorry, I got it reversed: * Non-transitional virtio devices can be plugged to PCI Express buses; transitional ones can't[1]. [1] Well, theoretically, under a few circumstances they could. We could extend the QMP interfaces in the future to cover that use case, but I don't think it's worth the effort. > > > This patch addresses that problem. > > > > You seem to be talking about a different issue: > > * Some devices (including transitional virtio) can be plugged on > > both Conventional PCI and PCI Express buses (I will call those > > devices "hybrid PCI devices"). > > > > The former is a practical problem: management software needs to > > be able to ask for a transitional virtio device, depending o the > > guest OS being run. > > > > Addressing the latter seems more complex (it would affect other > > devices, not just virtio), and I don't see which practical > > problems it would solve. > > > > I see some problems it wouldn't solve, though: the system > > wouldn't be able to represent the fact that transitional virtio > > devices can still work on PCI Express buses, as long as they > > support PIO bars; or that Conventional PCI devices can be plugged > > to PCI Express root buses. > > > > I don't see problems caused by hybrid conventional/express PCI > > devices. The original problem with virtio devices was just not > > being hybrid, it was lying about being hybrid: non-transitional > > virtio devices are hybrid, but transitional virtio devices > > aren't. > > > > I wouldn't be against abolishing hybrid PCI devices completely if > > somebody volunteers to do the work. I just don't see which > > problems this would solve. > > > > -- > > Eduardo -- Eduardo