Commit 3c834b6f41fa21a48389b13c3bf63aa8df1d7080

Authored by Linus Torvalds

Merge tag 'virtio-next-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/rusty/linux

Pull virtio updates from Rusty Russell:
 "All trivial, thanks to the stuff which didn't quite make it time"

* tag 'virtio-next-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/rusty/linux:
  virtio_console: Initialize guest_connected=true for rproc_serial
  virtio: use module_virtio_driver.
  virtio: Add module driver macro for virtio drivers.
  virtio_console: Use virtio device index to generate port name
  virtio: make pci_device_id const
  virtio: make config_ops const
  virtio-mmio: fix wrong comment about register offset
  virtio_console: Let unconnected rproc device receive data.

Showing 10 changed files Side-by-side Diff

drivers/char/hw_random/virtio-rng.c
... ... @@ -154,18 +154,7 @@
154 154 #endif
155 155 };
156 156  
157   -static int __init init(void)
158   -{
159   - return register_virtio_driver(&virtio_rng_driver);
160   -}
161   -
162   -static void __exit fini(void)
163   -{
164   - unregister_virtio_driver(&virtio_rng_driver);
165   -}
166   -module_init(init);
167   -module_exit(fini);
168   -
  157 +module_virtio_driver(virtio_rng_driver);
169 158 MODULE_DEVICE_TABLE(virtio, id_table);
170 159 MODULE_DESCRIPTION("Virtio random number driver");
171 160 MODULE_LICENSE("GPL");
drivers/char/virtio_console.c
... ... @@ -61,9 +61,6 @@
61 61 /* List of all the devices we're handling */
62 62 struct list_head portdevs;
63 63  
64   - /* Number of devices this driver is handling */
65   - unsigned int index;
66   -
67 64 /*
68 65 * This is used to keep track of the number of hvc consoles
69 66 * spawned by this driver. This number is given as the first
... ... @@ -169,9 +166,6 @@
169 166 /* Array of per-port IO virtqueues */
170 167 struct virtqueue **in_vqs, **out_vqs;
171 168  
172   - /* Used for numbering devices for sysfs and debugfs */
173   - unsigned int drv_index;
174   -
175 169 /* Major number for this device. Ports will be created as minors. */
176 170 int chr_major;
177 171 };
... ... @@ -1415,7 +1409,7 @@
1415 1409 }
1416 1410 port->dev = device_create(pdrvdata.class, &port->portdev->vdev->dev,
1417 1411 devt, port, "vport%up%u",
1418   - port->portdev->drv_index, id);
  1412 + port->portdev->vdev->index, id);
1419 1413 if (IS_ERR(port->dev)) {
1420 1414 err = PTR_ERR(port->dev);
1421 1415 dev_err(&port->portdev->vdev->dev,
... ... @@ -1442,7 +1436,7 @@
1442 1436 * rproc_serial does not want the console port, only
1443 1437 * the generic port implementation.
1444 1438 */
1445   - port->host_connected = true;
  1439 + port->host_connected = port->guest_connected = true;
1446 1440 else if (!use_multiport(port->portdev)) {
1447 1441 /*
1448 1442 * If we're not using multiport support,
... ... @@ -1470,7 +1464,7 @@
1470 1464 * inspect a port's state at any time
1471 1465 */
1472 1466 sprintf(debugfs_name, "vport%up%u",
1473   - port->portdev->drv_index, id);
  1467 + port->portdev->vdev->index, id);
1474 1468 port->debugfs_file = debugfs_create_file(debugfs_name, 0444,
1475 1469 pdrvdata.debugfs_dir,
1476 1470 port,
1477 1471  
... ... @@ -1958,16 +1952,12 @@
1958 1952 portdev->vdev = vdev;
1959 1953 vdev->priv = portdev;
1960 1954  
1961   - spin_lock_irq(&pdrvdata_lock);
1962   - portdev->drv_index = pdrvdata.index++;
1963   - spin_unlock_irq(&pdrvdata_lock);
1964   -
1965 1955 portdev->chr_major = register_chrdev(0, "virtio-portsdev",
1966 1956 &portdev_fops);
1967 1957 if (portdev->chr_major < 0) {
1968 1958 dev_err(&vdev->dev,
1969 1959 "Error %d registering chrdev for device %u\n",
1970   - portdev->chr_major, portdev->drv_index);
  1960 + portdev->chr_major, vdev->index);
1971 1961 err = portdev->chr_major;
1972 1962 goto free;
1973 1963 }
drivers/lguest/lguest_device.c
... ... @@ -396,7 +396,7 @@
396 396 }
397 397  
398 398 /* The ops structure which hooks everything together. */
399   -static struct virtio_config_ops lguest_config_ops = {
  399 +static const struct virtio_config_ops lguest_config_ops = {
400 400 .get_features = lg_get_features,
401 401 .finalize_features = lg_finalize_features,
402 402 .get = lg_get,
drivers/net/virtio_net.c
... ... @@ -1736,17 +1736,7 @@
1736 1736 #endif
1737 1737 };
1738 1738  
1739   -static int __init init(void)
1740   -{
1741   - return register_virtio_driver(&virtio_net_driver);
1742   -}
1743   -
1744   -static void __exit fini(void)
1745   -{
1746   - unregister_virtio_driver(&virtio_net_driver);
1747   -}
1748   -module_init(init);
1749   -module_exit(fini);
  1739 +module_virtio_driver(virtio_net_driver);
1750 1740  
1751 1741 MODULE_DEVICE_TABLE(virtio, id_table);
1752 1742 MODULE_DESCRIPTION("Virtio network driver");
drivers/remoteproc/remoteproc_virtio.c
... ... @@ -222,7 +222,7 @@
222 222 rvdev->gfeatures = vdev->features[0];
223 223 }
224 224  
225   -static struct virtio_config_ops rproc_virtio_config_ops = {
  225 +static const struct virtio_config_ops rproc_virtio_config_ops = {
226 226 .get_features = rproc_virtio_get_features,
227 227 .finalize_features = rproc_virtio_finalize_features,
228 228 .find_vqs = rproc_virtio_find_vqs,
drivers/s390/kvm/kvm_virtio.c
... ... @@ -275,7 +275,7 @@
275 275 /*
276 276 * The config ops structure as defined by virtio config
277 277 */
278   -static struct virtio_config_ops kvm_vq_configspace_ops = {
  278 +static const struct virtio_config_ops kvm_vq_configspace_ops = {
279 279 .get_features = kvm_get_features,
280 280 .finalize_features = kvm_finalize_features,
281 281 .get = kvm_get,
drivers/virtio/virtio_balloon.c
... ... @@ -560,18 +560,7 @@
560 560 #endif
561 561 };
562 562  
563   -static int __init init(void)
564   -{
565   - return register_virtio_driver(&virtio_balloon_driver);
566   -}
567   -
568   -static void __exit fini(void)
569   -{
570   - unregister_virtio_driver(&virtio_balloon_driver);
571   -}
572   -module_init(init);
573   -module_exit(fini);
574   -
  563 +module_virtio_driver(virtio_balloon_driver);
575 564 MODULE_DEVICE_TABLE(virtio, id_table);
576 565 MODULE_DESCRIPTION("Virtio balloon driver");
577 566 MODULE_LICENSE("GPL");
drivers/virtio/virtio_mmio.c
... ... @@ -75,7 +75,7 @@
75 75 *
76 76 * 0x050 W QueueNotify Queue notifier
77 77 * 0x060 R InterruptStatus Interrupt status register
78   - * 0x060 W InterruptACK Interrupt acknowledge register
  78 + * 0x064 W InterruptACK Interrupt acknowledge register
79 79 * 0x070 RW Status Device status register
80 80 *
81 81 * 0x100+ RW Device-specific configuration space
... ... @@ -423,7 +423,7 @@
423 423 return vm_dev->pdev->name;
424 424 }
425 425  
426   -static struct virtio_config_ops virtio_mmio_config_ops = {
  426 +static const struct virtio_config_ops virtio_mmio_config_ops = {
427 427 .get = vm_get,
428 428 .set = vm_set,
429 429 .get_status = vm_get_status,
drivers/virtio/virtio_pci.c
... ... @@ -91,9 +91,9 @@
91 91 };
92 92  
93 93 /* Qumranet donated their vendor ID for devices 0x1000 thru 0x10FF. */
94   -static struct pci_device_id virtio_pci_id_table[] = {
95   - { 0x1af4, PCI_ANY_ID, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0 },
96   - { 0 },
  94 +static DEFINE_PCI_DEVICE_TABLE(virtio_pci_id_table) = {
  95 + { PCI_DEVICE(0x1af4, PCI_ANY_ID) },
  96 + { 0 }
97 97 };
98 98  
99 99 MODULE_DEVICE_TABLE(pci, virtio_pci_id_table);
... ... @@ -652,7 +652,7 @@
652 652 return 0;
653 653 }
654 654  
655   -static struct virtio_config_ops virtio_pci_config_ops = {
  655 +static const struct virtio_config_ops virtio_pci_config_ops = {
656 656 .get = vp_get,
657 657 .set = vp_set,
658 658 .get_status = vp_get_status,
include/linux/virtio.h
... ... @@ -78,7 +78,7 @@
78 78 int index;
79 79 struct device dev;
80 80 struct virtio_device_id id;
81   - struct virtio_config_ops *config;
  81 + const struct virtio_config_ops *config;
82 82 struct list_head vqs;
83 83 /* Note that this is a Linux set_bit-style bitmap. */
84 84 unsigned long features[1];
... ... @@ -126,5 +126,14 @@
126 126  
127 127 int register_virtio_driver(struct virtio_driver *drv);
128 128 void unregister_virtio_driver(struct virtio_driver *drv);
  129 +
  130 +/* module_virtio_driver() - Helper macro for drivers that don't do
  131 + * anything special in module init/exit. This eliminates a lot of
  132 + * boilerplate. Each module may only use this macro once, and
  133 + * calling it replaces module_init() and module_exit()
  134 + */
  135 +#define module_virtio_driver(__virtio_driver) \
  136 + module_driver(__virtio_driver, register_virtio_driver, \
  137 + unregister_virtio_driver)
129 138 #endif /* _LINUX_VIRTIO_H */