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

Arnd Bergmann
2007-11-08T17:48:30Z

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.