aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/s390
diff options
context:
space:
mode:
authorMichael S. Tsirkin <mst@redhat.com>2014-10-13 20:10:34 -0400
committerRusty Russell <rusty@rustcorp.com.au>2014-10-14 19:54:54 -0400
commit016c98c6fe0c914d12e2e242b2bccde6d6dea54b (patch)
tree6e4fb0faa50c839cc23857954bf51f9985fb93ea /drivers/s390
parent6fbc198cf623944ab60a1db6d306a4d55cdd820d (diff)
virtio: unify config_changed handling
Replace duplicated code in all transports with a single wrapper in virtio.c. The only functional change is in virtio_mmio.c: if a buggy device sends us an interrupt before driver is set, we previously returned IRQ_NONE, now we return IRQ_HANDLED. As this must not happen in practice, this does not look like a big deal. See also commit 3fff0179e33cd7d0a688dab65700c46ad089e934 virtio-pci: do not oops on config change if driver not loaded. for the original motivation behind the driver check. Signed-off-by: Michael S. Tsirkin <mst@redhat.com> Reviewed-by: Cornelia Huck <cornelia.huck@de.ibm.com> Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
Diffstat (limited to 'drivers/s390')
-rw-r--r--drivers/s390/kvm/kvm_virtio.c9
-rw-r--r--drivers/s390/kvm/virtio_ccw.c6
2 files changed, 2 insertions, 13 deletions
diff --git a/drivers/s390/kvm/kvm_virtio.c b/drivers/s390/kvm/kvm_virtio.c
index a1349653c6d9..643129070c51 100644
--- a/drivers/s390/kvm/kvm_virtio.c
+++ b/drivers/s390/kvm/kvm_virtio.c
@@ -406,15 +406,8 @@ static void kvm_extint_handler(struct ext_code ext_code,
406 406
407 switch (param) { 407 switch (param) {
408 case VIRTIO_PARAM_CONFIG_CHANGED: 408 case VIRTIO_PARAM_CONFIG_CHANGED:
409 { 409 virtio_config_changed(vq->vdev);
410 struct virtio_driver *drv;
411 drv = container_of(vq->vdev->dev.driver,
412 struct virtio_driver, driver);
413 if (drv->config_changed)
414 drv->config_changed(vq->vdev);
415
416 break; 410 break;
417 }
418 case VIRTIO_PARAM_DEV_ADD: 411 case VIRTIO_PARAM_DEV_ADD:
419 schedule_work(&hotplug_work); 412 schedule_work(&hotplug_work);
420 break; 413 break;
diff --git a/drivers/s390/kvm/virtio_ccw.c b/drivers/s390/kvm/virtio_ccw.c
index d2c0b442bce5..6cbe6ef3c889 100644
--- a/drivers/s390/kvm/virtio_ccw.c
+++ b/drivers/s390/kvm/virtio_ccw.c
@@ -940,11 +940,7 @@ static void virtio_ccw_int_handler(struct ccw_device *cdev,
940 vring_interrupt(0, vq); 940 vring_interrupt(0, vq);
941 } 941 }
942 if (test_bit(0, &vcdev->indicators2)) { 942 if (test_bit(0, &vcdev->indicators2)) {
943 drv = container_of(vcdev->vdev.dev.driver, 943 virtio_config_changed(&vcdev->vdev);
944 struct virtio_driver, driver);
945
946 if (drv && drv->config_changed)
947 drv->config_changed(&vcdev->vdev);
948 clear_bit(0, &vcdev->indicators2); 944 clear_bit(0, &vcdev->indicators2);
949 } 945 }
950} 946}