On Tue, Jan 08, 2013 at 10:56:54AM +0100, KONRAD Frédéric wrote: > On 07/01/2013 20:58, Michael S. Tsirkin wrote: > >On Tue, Dec 18, 2012 at 12:30:20PM +0100, KONRAD Frédéric wrote: > >>On 18/12/2012 12:01, Michael S. Tsirkin wrote: > >>>On Tue, Dec 18, 2012 at 10:33:37AM +0000, Peter Maydell wrote: > >>>>On 17 December 2012 15:45, Michael S. Tsirkin <m...@redhat.com> wrote: > >>>>>Is the point to allow virtio-mmio? Why can't virtio-mmio be just > >>>>>another bus, like a pci bus, and another binding, like the virtio-pci > >>>>>binding? > >>>>(a) the current code is really not very nice because it's not > >>>>actually a proper set of QOM/qdev devices > >>>>(b) unlike PCI, you can't create sysbus devices on the > >>>>command line, because they don't correspond to a user > >>>>pluggable bit of hardware. We don't want users to have to know > >>>>an address and IRQ number for each virtio-mmio device (especially > >>>>since these are board specific); instead the board can create > >>>>and wire up transport devices wherever is suitable, and the > >>>>user just creates the backend (which is plugged into the virtio bus). > >>>> > >>>>-- PMM > >>>This is what I am saying: create your own bus and put > >>>your devices there. Allocate resources when you init > >>>a device. > >>> > >>>Instead you seem to want to expose a virtio device as two devices to > >>>user - if true this is not reasonable. > >>> > >>The modifications will be transparent to the user, as we will keep > >>virtio-x-pci devices. > >Then what's the point of all this? > > > >-device virtio-pci,id=transport1 -device virtio-net,bus=transport1 > > > >or > > > >-device virtio-mmio,id=transport1 -device virtio-net,bus=transport1 > > > >Is simply an insane way to create a network device. > > > To recap : > > The idea is to have a virtio-bus between the transport device > (like pci, mmio,... ). > > Then we can have a platform with several virtio-mmio and then > virtio-bus slot. > > At the end user can add a virtio-device in the command line with -device > parameter without recompiling the platform. That is not possible with just > creating the virtio-x-mmio devices. The bus= option can be used to > select the bus slot, but I'm not sure it is usefull.
pci uses addr option for this, I am guessing mmio can do the same. > The series keep the virtio-x-pci devices : > eg : step 11/61 for virtio-blk > So -device virtio-blk-pci or -device virtio-blk-s390 works as before. > > Of course -device virtio-pci,id=transport1 -device > virtio-net,bus=transport1 is > possible but why using this command line when we could simply do : > -device virtio-net-pci ? > > Fred Adding multiple ways to do one thing is a bad idea. I'm fine with modeling virtio by multiple devices internally, but exposing this to user is a mistake, we might rework this even more and command line has to be supported indefinitely.