El Thu, 26 Jun 2014 17:09:12 +0200
Paolo Bonzini <[email protected]> escribió:
> Il 26/06/2014 16:34, Marc Marí ha scritto:
> > +static void qvirtio_pci_foreach(uint16_t device_type,
> > +                void (*func)(QVirtioDevice *d, void *data), void
> > *data) +{
> > +    QVirtioPCIForeachData d = { .func = func,
> > +                                .device_type = device_type,
> > +                                .user_data = data };
> > +
> > +    if (!bus) {
> > +        bus = qpci_init_pc();
> 
> Why not pass this as an argument?  .bus_foreach and .device_find need 
> not be part of QVirtioBus.

If these functions are just Virtio PCI specific, it makes sense to take
them out. If they are common to other transports, in my opinion is
better to leave them there. Of course, a good solution has to be found
to just having a global bus variable.

It is also interesting to see that the current
implementation of qpci_device_foreach does only work in one bus, so
probably is not so terrible to have it as global and unique.

After reading Virtio specs about MMIO and CCW transports, I understand
that in MMIO you somehow choose an address to map the device, and in
CCW there is a device discovery mechanism, so probably in CCW is
interesting to have those functions.

Marc

Reply via email to