Re: [kvm-devel] [PATCH 3/3] virtio PCI device

Anthony Liguori
2007-11-08T19:05:00Z

Arnd Bergmann wrote:
> On Thursday 08 November 2007, Anthony Liguori wrote:
>
>> +/* A PCI device has it's own struct device and so does a virtio device so
>> + * we create a place for the virtio devices to show up in sysfs. I think it
>> + * would make more sense for virtio to not insist on having it's own device. */
>> +static struct device virtio_pci_root = {
>> + .parent = NULL,
>> + .bus_id = "virtio-pci",
>> +};
>> +
>> +/* Unique numbering for devices under the kvm root */
>> +static unsigned int dev_index;
>> +
>>
>
> ...
>
>
>> +/* the PCI probing function */
>> +static int __devinit virtio_pci_probe(struct pci_dev *pci_dev,
>> + const struct pci_device_id *id)
>> +{
>> + struct virtio_pci_device *vp_dev;
>> + int err;
>> +
>> + /* allocate our structure and fill it out */
>> + vp_dev = kzalloc(sizeof(struct virtio_pci_device), GFP_KERNEL);
>> + if (vp_dev == NULL)
>> + return -ENOMEM;
>> +
>> + vp_dev->pci_dev = pci_dev;
>> + vp_dev->vdev.dev.parent = &virtio_pci_root;
>>
>
> If you use
>
> vp_dev->vdev.dev.parent = &pci_dev->dev;
>
> Then there is no need for the special kvm root device, and the actual
> virtio device shows up in a more logical place, under where it is
> really (virtually) attached.
>

They already show up underneath of the PCI bus. The issue is that there
are two separate 'struct device's for each virtio device. There's the
PCI device (that's part of the pci_dev structure) and then there's the
virtio_device one. I thought that setting the dev.parent of the
virtio_device struct device would result in having two separate entries
under the PCI bus directory which would be pretty confusing :-)

Regards,

Anthony Liguori

> Arnd <><
>