| From d46fe582a3360636eb5ae0ef3eff8b9b70502507 Mon Sep 17 00:00:00 2001 |
| From: Milton Miller <miltonm@bga.com> |
| Date: Fri, 7 Jan 2011 02:55:06 -0600 |
| Subject: [PATCH] virtio: remove virtio-pci root device |
| |
| commit 8b3bb3ecf1934ac4a7005ad9017de1127e2fbd2f upstream. |
| |
| 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: Milton Miller <miltonm@bga.com> |
| Signed-off-by: Rusty Russell <rusty@rustcorp.com.au> |
| Acked-by: Michael S. Tsirkin <mst@redhat.com> |
| Tested-by: Michael S. Tsirkin <mst@redhat.com> |
| Acked-by: Gleb Natapov <gleb@redhat.com> |
| Tested-by: "Daniel P. Berrange" <berrange@redhat.com> |
| Signed-off-by: Paul Gortmaker <paul.gortmaker@windriver.com> |
| |
| diff --git a/drivers/virtio/virtio_pci.c b/drivers/virtio/virtio_pci.c |
| index 1e42da2..e7acba5 100644 |
| --- a/drivers/virtio/virtio_pci.c |
| +++ b/drivers/virtio/virtio_pci.c |
| @@ -96,11 +96,6 @@ static struct pci_device_id 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 */ |
| 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, |
| if (vp_dev == NULL) |
| 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.config = &virtio_pci_config_ops; |
| vp_dev->pci_dev = pci_dev; |
| @@ -717,17 +712,7 @@ static struct pci_driver virtio_pci_driver = { |
| |
| static int __init virtio_pci_init(void) |
| { |
| - int err; |
| - |
| - 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; |
| + return pci_register_driver(&virtio_pci_driver); |
| } |
| |
| module_init(virtio_pci_init); |
| @@ -735,7 +720,6 @@ module_init(virtio_pci_init); |
| static void __exit virtio_pci_exit(void) |
| { |
| pci_unregister_driver(&virtio_pci_driver); |
| - root_device_unregister(virtio_pci_root); |
| } |
| |
| module_exit(virtio_pci_exit); |
| -- |
| 1.7.4.4 |
| |