diff options
author | Wendy Liang <wendy.liang@xilinx.com> | 2017-04-26 11:49:24 -0700 |
---|---|---|
committer | Michal Simek <michal.simek@xilinx.com> | 2017-05-12 10:06:22 +0200 |
commit | 22d47e54b7b13d9718e4df251424b133c5f69340 (patch) | |
tree | 8bd7894db6ef6e0a78145cd15b0bfc1af6cd7184 | |
parent | cbcd842816154b66adf853e5aead68c5e23267f2 (diff) | |
download | linux-22d47e54b7b13d9718e4df251424b133c5f69340.tar.gz |
virtio: revert auto merge for 4.6 kernel change
This patch is to revert the auto merge virtio changes caused by
auto merge to upgrade to v4.6 kernel.
Signed-off-by: Wendy Liang <jliang@xilinx.com>
Signed-off-by: Michal Simek <michal.simek@xilinx.com>
-rw-r--r-- | drivers/virtio/virtio_ring.c | 14 |
1 files changed, 10 insertions, 4 deletions
diff --git a/drivers/virtio/virtio_ring.c b/drivers/virtio/virtio_ring.c index cc24b074960128..489bfc61cf3000 100644 --- a/drivers/virtio/virtio_ring.c +++ b/drivers/virtio/virtio_ring.c @@ -172,7 +172,6 @@ static inline struct device *vring_dma_dev(const struct vring_virtqueue *vq) return vq->vq.vdev->dev.parent; } -#if 0 /* Map one sg entry. */ static dma_addr_t vring_map_one_sg(const struct vring_virtqueue *vq, struct scatterlist *sg, @@ -190,7 +189,6 @@ static dma_addr_t vring_map_one_sg(const struct vring_virtqueue *vq, sg_page(sg), sg->offset, sg->length, direction); } -#endif static dma_addr_t vring_map_single(const struct vring_virtqueue *vq, void *cpu_addr, size_t size, @@ -337,8 +335,12 @@ static inline int virtqueue_add(struct virtqueue *_vq, for (n = 0; n < out_sgs; n++) { for (sg = sgs[n]; sg; sg = sg_next(sg)) { + dma_addr_t addr = vring_map_one_sg(vq, sg, DMA_TO_DEVICE); + if (vring_mapping_error(vq, addr)) + goto unmap_release; + desc[i].flags = cpu_to_virtio16(_vq->vdev, VRING_DESC_F_NEXT); - desc[i].addr = cpu_to_virtio64(_vq->vdev, sg_phys(sg)); + desc[i].addr = cpu_to_virtio64(_vq->vdev, addr); desc[i].len = cpu_to_virtio32(_vq->vdev, sg->length); prev = i; i = virtio16_to_cpu(_vq->vdev, desc[i].next); @@ -346,8 +348,12 @@ static inline int virtqueue_add(struct virtqueue *_vq, } for (; n < (out_sgs + in_sgs); n++) { for (sg = sgs[n]; sg; sg = sg_next(sg)) { + dma_addr_t addr = vring_map_one_sg(vq, sg, DMA_FROM_DEVICE); + if (vring_mapping_error(vq, addr)) + goto unmap_release; + desc[i].flags = cpu_to_virtio16(_vq->vdev, VRING_DESC_F_NEXT | VRING_DESC_F_WRITE); - desc[i].addr = cpu_to_virtio64(_vq->vdev, sg_phys(sg)); + desc[i].addr = cpu_to_virtio64(_vq->vdev, addr); desc[i].len = cpu_to_virtio32(_vq->vdev, sg->length); prev = i; i = virtio16_to_cpu(_vq->vdev, desc[i].next); |