On 12 December 2012 17:53, Andreas Färber <afaer...@suse.de> wrote:
> Am 12.12.2012 15:25, schrieb Peter Maydell:
>> How will the PCI transport's PCI vendor/device/class IDs be
>> set (a) when a virtio-blk backend is created and separately
>> plugged into a virtio-pci transport (b) for the legacy
>> virtio-pci-blk? [ideally the answer to (b) should be "in the
>> same way as for (a)"]
>
> The obvious answer would be that PCI properties need to be set on the
> PCI device, not an a VirtioDevice sitting on a virtio-bus.
>
> I.e., with the proposed refactoring we'd have on the virtio-bus:
>
> - VirtioDevice
>   + VirtioBlockDevice
>   + VirtioSCSIDevice - has-a scsi-bus
>   ...
>
> In turn that means that every VirtioDevice to be exposed as PCI device
> to the guest needs it own PCIDevice exposing a private virtio-bus.
>
> - PCIDevice
>   - VirtioPCIDevice - has-a virtio-bus
>     + virtio-blk-pci - has-a VirtioBlockDevice on its virtio-bus
>     + virtio-scsi-pci - has-a VirtioSCSIDevice on its virtio-bus
>     ...

...this bit is only for legacy back-compat. It should be equally
valid to just use the PCI transport plugged into a VirtioDevice,
both of which were created by the user with -device [and for
new transports, separate transport and backend should be the
standard]. That means the virtio-bus interface needs a way for
the backend to announce to the transport what it is so that
the PCI transport can set the right PCI IDs.

-- PMM

Reply via email to