diff options
Diffstat (limited to 'drivers/virtio/virtio_ring.c')
| -rw-r--r-- | drivers/virtio/virtio_ring.c | 13 | 
1 files changed, 8 insertions, 5 deletions
diff --git a/drivers/virtio/virtio_ring.c b/drivers/virtio/virtio_ring.c index 58b96baa8d48..becc77697960 100644 --- a/drivers/virtio/virtio_ring.c +++ b/drivers/virtio/virtio_ring.c @@ -240,7 +240,7 @@ static inline bool virtqueue_use_indirect(struct virtqueue *_vq,  static bool vring_use_dma_api(struct virtio_device *vdev)  { -	if (!virtio_has_iommu_quirk(vdev)) +	if (!virtio_has_dma_quirk(vdev))  		return true;  	/* Otherwise, we are left to guess. */ @@ -424,7 +424,7 @@ static inline int virtqueue_add_split(struct virtqueue *_vq,  	struct vring_virtqueue *vq = to_vvq(_vq);  	struct scatterlist *sg;  	struct vring_desc *desc; -	unsigned int i, n, avail, descs_used, uninitialized_var(prev), err_idx; +	unsigned int i, n, avail, descs_used, prev, err_idx;  	int head;  	bool indirect; @@ -1101,8 +1101,8 @@ static inline int virtqueue_add_packed(struct virtqueue *_vq,  	struct vring_packed_desc *desc;  	struct scatterlist *sg;  	unsigned int i, n, c, descs_used, err_idx; -	__le16 uninitialized_var(head_flags), flags; -	u16 head, id, uninitialized_var(prev), curr, avail_used_flags; +	__le16 head_flags, flags; +	u16 head, id, prev, curr, avail_used_flags;  	START_USE(vq); @@ -1960,6 +1960,9 @@ bool virtqueue_poll(struct virtqueue *_vq, unsigned last_used_idx)  {  	struct vring_virtqueue *vq = to_vvq(_vq); +	if (unlikely(vq->broken)) +		return false; +  	virtio_mb(vq->weak_barriers);  	return vq->packed_ring ? virtqueue_poll_packed(_vq, last_used_idx) :  				 virtqueue_poll_split(_vq, last_used_idx); @@ -2225,7 +2228,7 @@ void vring_transport_features(struct virtio_device *vdev)  			break;  		case VIRTIO_F_VERSION_1:  			break; -		case VIRTIO_F_IOMMU_PLATFORM: +		case VIRTIO_F_ACCESS_PLATFORM:  			break;  		case VIRTIO_F_RING_PACKED:  			break;  |