aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/s390/kvm
diff options
context:
space:
mode:
authorMichael S. Tsirkin <mst@redhat.com>2014-12-04 12:16:43 -0500
committerMichael S. Tsirkin <mst@redhat.com>2014-12-09 14:41:58 -0500
commit4d23676fb645f683b61943de9901d58c1e728a25 (patch)
treec616b24dba9ede573ede98f4ba627cadac3adb31 /drivers/s390/kvm
parent5c609a5ef05d98e26778824ba84581fe5e400db6 (diff)
virtio_ccw: rev 1 devices set VIRTIO_F_VERSION_1
What does it mean if rev 1 device does not set VIRTIO_F_VERSION_1? E.g. is it native endian? Let's not even try to drive such devices: fail attempts to finalize features. virtio core will detect this and bail out. Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
Diffstat (limited to 'drivers/s390/kvm')
-rw-r--r--drivers/s390/kvm/virtio_ccw.c7
1 files changed, 7 insertions, 0 deletions
diff --git a/drivers/s390/kvm/virtio_ccw.c b/drivers/s390/kvm/virtio_ccw.c
index 789275fb577f..f9f87ba013c9 100644
--- a/drivers/s390/kvm/virtio_ccw.c
+++ b/drivers/s390/kvm/virtio_ccw.c
@@ -758,6 +758,13 @@ static int virtio_ccw_finalize_features(struct virtio_device *vdev)
758 struct virtio_feature_desc *features; 758 struct virtio_feature_desc *features;
759 struct ccw1 *ccw; 759 struct ccw1 *ccw;
760 760
761 if (vcdev->revision == 1 &&
762 !__virtio_test_bit(vdev, VIRTIO_F_VERSION_1)) {
763 dev_err(&vdev->dev, "virtio: device uses revision 1 "
764 "but does not have VIRTIO_F_VERSION_1\n");
765 return -EINVAL;
766 }
767
761 ccw = kzalloc(sizeof(*ccw), GFP_DMA | GFP_KERNEL); 768 ccw = kzalloc(sizeof(*ccw), GFP_DMA | GFP_KERNEL);
762 if (!ccw) 769 if (!ccw)
763 return 0; 770 return 0;