Displaying 17 results from an estimated 17 matches for "vring_sg_address".
2023 Mar 21
1
[PATCH vhost v3 01/11] virtio_ring: split: separate dma codes
...ers/virtio/virtio_ring.c b/drivers/virtio/virtio_ring.c
index 41144b5246a8..fe704ca6c813 100644
--- a/drivers/virtio/virtio_ring.c
+++ b/drivers/virtio/virtio_ring.c
@@ -379,6 +379,14 @@ static dma_addr_t vring_map_one_sg(const struct vring_virtqueue *vq,
direction);
}
+static dma_addr_t vring_sg_address(struct scatterlist *sg)
+{
+ if (sg->dma_address)
+ return sg->dma_address;
+
+ return (dma_addr_t)sg_phys(sg);
+}
+
static dma_addr_t vring_map_single(const struct vring_virtqueue *vq,
void *cpu_addr, size_t size,
enum dma_data_direction direction)
@@ -520,6 +528,80 @@ stat...
2023 Apr 25
1
[PATCH vhost v7 01/11] virtio_ring: split: separate dma codes
...ers/virtio/virtio_ring.c b/drivers/virtio/virtio_ring.c
index c5310eaf8b46..b073a70c1291 100644
--- a/drivers/virtio/virtio_ring.c
+++ b/drivers/virtio/virtio_ring.c
@@ -379,6 +379,14 @@ static dma_addr_t vring_map_one_sg(const struct vring_virtqueue *vq,
direction);
}
+static dma_addr_t vring_sg_address(struct scatterlist *sg)
+{
+ if (sg->dma_address)
+ return sg->dma_address;
+
+ return (dma_addr_t)sg_phys(sg);
+}
+
static dma_addr_t vring_map_single(const struct vring_virtqueue *vq,
void *cpu_addr, size_t size,
enum dma_data_direction direction)
@@ -520,6 +528,80 @@ stat...
2023 Mar 22
1
[PATCH vhost v4 02/11] virtio_ring: packed: separate dma codes
...(++c == total_sg ? 0 : VRING_DESC_F_NEXT) |
(n < out_sgs ? 0 : VRING_DESC_F_WRITE));
@@ -1496,12 +1493,12 @@ static inline int virtqueue_add_packed(struct virtqueue *_vq,
else
desc[i].flags = flags;
- desc[i].addr = cpu_to_le64(addr);
+ desc[i].addr = cpu_to_le64(vring_sg_address(sg));
desc[i].len = cpu_to_le32(sg->length);
desc[i].id = cpu_to_le16(id);
if (unlikely(vq->use_dma_api)) {
- vq->packed.desc_extra[curr].addr = addr;
+ vq->packed.desc_extra[curr].addr = vring_sg_address(sg);
vq->packed.desc_extra[curr].len = sg->length;...
2023 Mar 22
1
[PATCH vhost v4 01/11] virtio_ring: split: separate dma codes
...ers/virtio/virtio_ring.c b/drivers/virtio/virtio_ring.c
index 41144b5246a8..fe704ca6c813 100644
--- a/drivers/virtio/virtio_ring.c
+++ b/drivers/virtio/virtio_ring.c
@@ -379,6 +379,14 @@ static dma_addr_t vring_map_one_sg(const struct vring_virtqueue *vq,
direction);
}
+static dma_addr_t vring_sg_address(struct scatterlist *sg)
+{
+ if (sg->dma_address)
+ return sg->dma_address;
+
+ return (dma_addr_t)sg_phys(sg);
+}
+
static dma_addr_t vring_map_single(const struct vring_virtqueue *vq,
void *cpu_addr, size_t size,
enum dma_data_direction direction)
@@ -520,6 +528,80 @@ stat...
2023 May 01
1
[PATCH vhost v7 01/11] virtio_ring: split: separate dma codes
> +static dma_addr_t vring_sg_address(struct scatterlist *sg)
> +{
> + if (sg->dma_address)
> + return sg->dma_address;
0 is a perfectly valid DMA address. So I have no idea how this is
even supposed to work.
2023 May 09
12
[PATCH vhost v8 00/12] virtio core prepares for AF_XDP
...100% | 33% | 43% | 771670
Before achieving the function of Virtio-Net, we also have to let virtio core
support these features:
1. virtio core support premapped
2. virtio core support reset per-queue
3. introduce DMA APIs to virtio core
Please review.
Thanks.
v8:
1. vring_sg_address: check by sg_page(sg) not dma_address. Because 0 is a valid dma address
2. remove unused code from vring_map_one_sg()
v7:
1. virtqueue_dma_dev() return NULL when virtio is without DMA API.
v6:
1. change the size of the flags to u32.
v5:
1. fix for error handler
2. add flags to record intern...
2023 Mar 21
11
[PATCH vhost v3 00/11] virtio core prepares for AF_XDP
XDP socket(AF_XDP) is an excellent bypass kernel network framework. The zero
copy feature of xsk (XDP socket) needs to be supported by the driver. The
performance of zero copy is very good.
ENV: Qemu with vhost.
vhost cpu | Guest APP CPU |Guest Softirq CPU | PPS
-----------------------------|---------------|------------------|------------
xmit by sockperf: 90% | 100%
2023 Mar 22
11
[PATCH vhost v4 00/11] virtio core prepares for AF_XDP
XDP socket(AF_XDP) is an excellent bypass kernel network framework. The zero
copy feature of xsk (XDP socket) needs to be supported by the driver. The
performance of zero copy is very good.
ENV: Qemu with vhost.
vhost cpu | Guest APP CPU |Guest Softirq CPU | PPS
-----------------------------|---------------|------------------|------------
xmit by sockperf: 90% | 100%
2023 Mar 24
11
[PATCH vhost v5 00/11] virtio core prepares for AF_XDP
XDP socket(AF_XDP) is an excellent bypass kernel network framework. The zero
copy feature of xsk (XDP socket) needs to be supported by the driver. The
performance of zero copy is very good.
ENV: Qemu with vhost.
vhost cpu | Guest APP CPU |Guest Softirq CPU | PPS
-----------------------------|---------------|------------------|------------
xmit by sockperf: 90% | 100%
2023 Mar 27
11
[PATCH vhost v6 00/11] virtio core prepares for AF_XDP
XDP socket(AF_XDP) is an excellent bypass kernel network framework. The zero
copy feature of xsk (XDP socket) needs to be supported by the driver. The
performance of zero copy is very good.
ENV: Qemu with vhost.
vhost cpu | Guest APP CPU |Guest Softirq CPU | PPS
-----------------------------|---------------|------------------|------------
xmit by sockperf: 90% | 100%
2023 Apr 25
12
[PATCH vhost v7 00/11] virtio core prepares for AF_XDP
## About DMA APIs
Now, virtio may can not work with DMA APIs when virtio features do not have
VIRTIO_F_ACCESS_PLATFORM.
1. I tried to let DMA APIs return phy address by virtio-device. But DMA APIs just
work with the "real" devices.
2. I tried to let xsk support callballs to get phy address from virtio-net
driver as the dma address. But the maintainers of xsk may want to use
2023 Jun 02
12
[PATCH vhost v10 00/10] virtio core prepares for AF_XDP
...3. introduce DMA APIs to virtio core
Please review.
Thanks.
v10:
1. support to set vq to premapped mode, then the vq just handles the premapped request.
2. virtio-net support to do dma mapping in advance
v9:
1. use flag to distinguish the premapped operations. no do judgment by sg.
v8:
1. vring_sg_address: check by sg_page(sg) not dma_address. Because 0 is a valid dma address
2. remove unused code from vring_map_one_sg()
v7:
1. virtqueue_dma_dev() return NULL when virtio is without DMA API.
v6:
1. change the size of the flags to u32.
v5:
1. fix for error handler
2. add flags to record intern...
2023 Jun 02
12
[PATCH vhost v10 00/10] virtio core prepares for AF_XDP
...3. introduce DMA APIs to virtio core
Please review.
Thanks.
v10:
1. support to set vq to premapped mode, then the vq just handles the premapped request.
2. virtio-net support to do dma mapping in advance
v9:
1. use flag to distinguish the premapped operations. no do judgment by sg.
v8:
1. vring_sg_address: check by sg_page(sg) not dma_address. Because 0 is a valid dma address
2. remove unused code from vring_map_one_sg()
v7:
1. virtqueue_dma_dev() return NULL when virtio is without DMA API.
v6:
1. change the size of the flags to u32.
v5:
1. fix for error handler
2. add flags to record intern...
2023 May 17
12
[PATCH vhost v9 00/12] virtio core prepares for AF_XDP
...ion of Virtio-Net, we also have to let virtio core
support these features:
1. virtio core support premapped
2. virtio core support reset per-queue
3. introduce DMA APIs to virtio core
Please review.
Thanks.
v9:
1. use flag to distinguish the premapped operations. no do judgment by sg.
v8:
1. vring_sg_address: check by sg_page(sg) not dma_address. Because 0 is a valid dma address
2. remove unused code from vring_map_one_sg()
v7:
1. virtqueue_dma_dev() return NULL when virtio is without DMA API.
v6:
1. change the size of the flags to u32.
v5:
1. fix for error handler
2. add flags to record intern...
2023 Jul 10
10
[PATCH vhost v11 00/10] virtio core prepares for AF_XDP
...ed
2. A better way to handle the map error with the premapped
v10:
1. support to set vq to premapped mode, then the vq just handles the premapped request.
2. virtio-net support to do dma mapping in advance
v9:
1. use flag to distinguish the premapped operations. no do judgment by sg.
v8:
1. vring_sg_address: check by sg_page(sg) not dma_address. Because 0 is a valid dma address
2. remove unused code from vring_map_one_sg()
v7:
1. virtqueue_dma_dev() return NULL when virtio is without DMA API.
v6:
1. change the size of the flags to u32.
v5:
1. fix for error handler
2. add flags to record intern...
2023 Aug 10
12
[PATCH vhost v13 00/12] virtio core prepares for AF_XDP
...ed
2. A better way to handle the map error with the premapped
v10:
1. support to set vq to premapped mode, then the vq just handles the premapped request.
2. virtio-net support to do dma mapping in advance
v9:
1. use flag to distinguish the premapped operations. no do judgment by sg.
v8:
1. vring_sg_address: check by sg_page(sg) not dma_address. Because 0 is a valid dma address
2. remove unused code from vring_map_one_sg()
v7:
1. virtqueue_dma_dev() return NULL when virtio is without DMA API.
v6:
1. change the size of the flags to u32.
v5:
1. fix for error handler
2. add flags to record intern...
2023 Aug 10
12
[PATCH vhost v13 00/12] virtio core prepares for AF_XDP
...ed
2. A better way to handle the map error with the premapped
v10:
1. support to set vq to premapped mode, then the vq just handles the premapped request.
2. virtio-net support to do dma mapping in advance
v9:
1. use flag to distinguish the premapped operations. no do judgment by sg.
v8:
1. vring_sg_address: check by sg_page(sg) not dma_address. Because 0 is a valid dma address
2. remove unused code from vring_map_one_sg()
v7:
1. virtqueue_dma_dev() return NULL when virtio is without DMA API.
v6:
1. change the size of the flags to u32.
v5:
1. fix for error handler
2. add flags to record intern...