aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorWendy Liang <wendy.liang@xilinx.com>2017-04-26 11:49:24 -0700
committerMichal Simek <michal.simek@xilinx.com>2017-05-12 10:06:22 +0200
commit22d47e54b7b13d9718e4df251424b133c5f69340 (patch)
tree8bd7894db6ef6e0a78145cd15b0bfc1af6cd7184
parentcbcd842816154b66adf853e5aead68c5e23267f2 (diff)
downloadlinux-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.c14
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);