Commit 8b3bb3ec authored by Milton Miller's avatar Milton Miller Committed by Rusty Russell

virtio: remove virtio-pci root device

We sometimes need to map between the virtio device and
the given pci device. One such use is OS installer that
gets the boot pci device from BIOS and needs to
find the relevant block device. Since it can't,
installation fails.

Instead of creating a top-level devices/virtio-pci
directory, create each device under the corresponding
pci device node.  Symlinks to all virtio-pci
devices can be found under the pci driver link in
bus/pci/drivers/virtio-pci/devices, and all virtio
devices under drivers/bus/virtio/devices.
Signed-off-by: default avatarMilton Miller <miltonm@bga.com>
Signed-off-by: default avatarRusty Russell <rusty@rustcorp.com.au>
Acked-by: default avatarMichael S. Tsirkin <mst@redhat.com>
Tested-by: default avatarMichael S. Tsirkin <mst@redhat.com>
Acked-by: default avatarGleb Natapov <gleb@redhat.com>
Tested-by: default avatar"Daniel P. Berrange" <berrange@redhat.com>
Cc: stable@kernel.org
parent 2b8216e6
...@@ -96,11 +96,6 @@ static struct pci_device_id virtio_pci_id_table[] = { ...@@ -96,11 +96,6 @@ static struct pci_device_id virtio_pci_id_table[] = {
MODULE_DEVICE_TABLE(pci, virtio_pci_id_table); MODULE_DEVICE_TABLE(pci, virtio_pci_id_table);
/* 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;
/* Convert a generic virtio device to our structure */ /* Convert a generic virtio device to our structure */
static struct virtio_pci_device *to_vp_device(struct virtio_device *vdev) static struct virtio_pci_device *to_vp_device(struct virtio_device *vdev)
{ {
...@@ -629,7 +624,7 @@ static int __devinit virtio_pci_probe(struct pci_dev *pci_dev, ...@@ -629,7 +624,7 @@ static int __devinit virtio_pci_probe(struct pci_dev *pci_dev,
if (vp_dev == NULL) if (vp_dev == NULL)
return -ENOMEM; return -ENOMEM;
vp_dev->vdev.dev.parent = virtio_pci_root; vp_dev->vdev.dev.parent = &pci_dev->dev;
vp_dev->vdev.dev.release = virtio_pci_release_dev; vp_dev->vdev.dev.release = virtio_pci_release_dev;
vp_dev->vdev.config = &virtio_pci_config_ops; vp_dev->vdev.config = &virtio_pci_config_ops;
vp_dev->pci_dev = pci_dev; vp_dev->pci_dev = pci_dev;
...@@ -717,17 +712,7 @@ static struct pci_driver virtio_pci_driver = { ...@@ -717,17 +712,7 @@ static struct pci_driver virtio_pci_driver = {
static int __init virtio_pci_init(void) static int __init virtio_pci_init(void)
{ {
int err; return pci_register_driver(&virtio_pci_driver);
virtio_pci_root = root_device_register("virtio-pci");
if (IS_ERR(virtio_pci_root))
return PTR_ERR(virtio_pci_root);
err = pci_register_driver(&virtio_pci_driver);
if (err)
root_device_unregister(virtio_pci_root);
return err;
} }
module_init(virtio_pci_init); module_init(virtio_pci_init);
...@@ -735,7 +720,6 @@ module_init(virtio_pci_init); ...@@ -735,7 +720,6 @@ module_init(virtio_pci_init);
static void __exit virtio_pci_exit(void) static void __exit virtio_pci_exit(void)
{ {
pci_unregister_driver(&virtio_pci_driver); pci_unregister_driver(&virtio_pci_driver);
root_device_unregister(virtio_pci_root);
} }
module_exit(virtio_pci_exit); module_exit(virtio_pci_exit);
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment