Anthony Liguori wrote:> Hi Rusty,
>
> I've written a PCI virtio transport and noticed something strange.
> All current in-tree virtio devices register ID tables that match a
> specific device ID, but any vendor ID.
>
> This is incompatible with using PCI vendor/device IDs for virtio
> vendor/device IDs since vendors control what device IDs mean. A
> simple solution would be to assign a fixed vendor ID to all current
> virtio devices. This doesn't solve the problem completely though
> since you would create a conflict between the PCI vendor ID space and
> the virtio vendor ID space.
>
> The only solutions seem to be virtualizing the virtio vendor/device
> IDs (which is what I'm currently doing) or to mandate that the virtio
> vendor ID be within the PCI vendor ID space. It's probably not
> necessary to make the same requirement for device IDs though.
There's another ugly bit in the current implementation.
Right now, we would have to have every PCI vendor/device ID pair in the
virtio PCI driver ID table for every virtio device.
This means every time a virtio device is added to Linux, the virtio PCI
driver has to be modified (assuming that each virtio device uses a
unique PCI vendor/device ID) :-/
Regards,
Anthony Liguori
> What are your thoughts?
>
> Regards,
>
> Anthony Liguori
>