Messages in this thread Patch in this message | | | Date | Thu, 4 Dec 2014 20:44:48 +0200 | From | "Michael S. Tsirkin" <> | Subject | [PATCH RFC v2 4/4] 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> --- drivers/s390/kvm/virtio_ccw.c | 7 +++++++ 1 file changed, 7 insertions(+)
diff --git a/drivers/s390/kvm/virtio_ccw.c b/drivers/s390/kvm/virtio_ccw.c index 789275f..f9f87ba 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) struct virtio_feature_desc *features; struct ccw1 *ccw; + if (vcdev->revision == 1 && + !__virtio_test_bit(vdev, VIRTIO_F_VERSION_1)) { + dev_err(&vdev->dev, "virtio: device uses revision 1 " + "but does not have VIRTIO_F_VERSION_1\n"); + return -EINVAL; + } + ccw = kzalloc(sizeof(*ccw), GFP_DMA | GFP_KERNEL); if (!ccw) return 0; -- MST
| |