search for: virtio_ring_f_indirect_desc

Displaying 20 results from an estimated 303 matches for "virtio_ring_f_indirect_desc".

2014 Mar 19
2
[PATCH] virtio-blk: make the queue depth the max supportable by the hypervisor
...wo (each I/O requires at least two VQ entries). But behold, Ted added a module parameter: Also allow the queue depth to be something which can be set at module load time or via a kernel boot-time parameter, for testing/benchmarking purposes. And I rewrote it substantially, mainly to take VIRTIO_RING_F_INDIRECT_DESC into account. As QEMU sets the vq size for PCI to 128, Venkatash's patch wouldn't have made a change. This version does (since QEMU also offers VIRTIO_RING_F_INDIRECT_DESC. Inspired-by: "Theodore Ts'o" <tytso at mit.edu> Based-on-the-true-story-of: Venkatesh Srinivas...
2014 Mar 19
2
[PATCH] virtio-blk: make the queue depth the max supportable by the hypervisor
...wo (each I/O requires at least two VQ entries). But behold, Ted added a module parameter: Also allow the queue depth to be something which can be set at module load time or via a kernel boot-time parameter, for testing/benchmarking purposes. And I rewrote it substantially, mainly to take VIRTIO_RING_F_INDIRECT_DESC into account. As QEMU sets the vq size for PCI to 128, Venkatash's patch wouldn't have made a change. This version does (since QEMU also offers VIRTIO_RING_F_INDIRECT_DESC. Inspired-by: "Theodore Ts'o" <tytso at mit.edu> Based-on-the-true-story-of: Venkatesh Srinivas...
2010 Mar 30
1
[PATCH][QEMU][VHOST]fix feature bit handling for mergeable rx buffers
...-void vhost_net_ack_features(struct vhost_net *net, unsigned features) -{ - net->dev.acked_features = net->dev.backend_features; - if (features & (1 << VIRTIO_F_NOTIFY_ON_EMPTY)) - net->dev.acked_features |= (1 << VIRTIO_F_NOTIFY_ON_EMPTY); - if (features & (1 << VIRTIO_RING_F_INDIRECT_DESC)) - net->dev.acked_features |= (1 << VIRTIO_RING_F_INDIRECT_DESC); -} - static int vhost_net_get_fd(VLANClientState *backend) { switch (backend->info->type) { @@ -58,6 +50,25 @@ static int vhost_net_get_fd(VLANClientSt } } +void vhost_net_ack_features(struct vhost_net *net,...
2010 Mar 30
1
[PATCH][QEMU][VHOST]fix feature bit handling for mergeable rx buffers
...-void vhost_net_ack_features(struct vhost_net *net, unsigned features) -{ - net->dev.acked_features = net->dev.backend_features; - if (features & (1 << VIRTIO_F_NOTIFY_ON_EMPTY)) - net->dev.acked_features |= (1 << VIRTIO_F_NOTIFY_ON_EMPTY); - if (features & (1 << VIRTIO_RING_F_INDIRECT_DESC)) - net->dev.acked_features |= (1 << VIRTIO_RING_F_INDIRECT_DESC); -} - static int vhost_net_get_fd(VLANClientState *backend) { switch (backend->info->type) { @@ -58,6 +50,25 @@ static int vhost_net_get_fd(VLANClientSt } } +void vhost_net_ack_features(struct vhost_net *net,...
2014 Nov 27
2
[PATCH v5 01/45] virtio: use u32, not bitmap for struct virtio_device's features
...tifies = 0; @@ -449,13 +449,13 @@ int main(int argc, char *argv[]) bool fast_vringh = false, parallel = false; getrange = getrange_iov; - vdev.features[0] = 0; + vdev.features = 0; while (argv[1]) { if (strcmp(argv[1], "--indirect") == 0) - vdev.features[0] |= (1 << VIRTIO_RING_F_INDIRECT_DESC); + vdev.features |= (1 << VIRTIO_RING_F_INDIRECT_DESC); else if (strcmp(argv[1], "--eventidx") == 0) - vdev.features[0] |= (1 << VIRTIO_RING_F_EVENT_IDX); + vdev.features |= (1 << VIRTIO_RING_F_EVENT_IDX); else if (strcmp(argv[1], "--slow-range") =...
2014 Nov 27
2
[PATCH v5 01/45] virtio: use u32, not bitmap for struct virtio_device's features
...tifies = 0; @@ -449,13 +449,13 @@ int main(int argc, char *argv[]) bool fast_vringh = false, parallel = false; getrange = getrange_iov; - vdev.features[0] = 0; + vdev.features = 0; while (argv[1]) { if (strcmp(argv[1], "--indirect") == 0) - vdev.features[0] |= (1 << VIRTIO_RING_F_INDIRECT_DESC); + vdev.features |= (1 << VIRTIO_RING_F_INDIRECT_DESC); else if (strcmp(argv[1], "--eventidx") == 0) - vdev.features[0] |= (1 << VIRTIO_RING_F_EVENT_IDX); + vdev.features |= (1 << VIRTIO_RING_F_EVENT_IDX); else if (strcmp(argv[1], "--slow-range") =...
2008 Dec 20
1
[PATCH 2/3] virtio: indirect ring entries (VIRTIO_RING_F_INDIRECT_DESC)
Hi Mark, On Thursday 18 December 2008, Mark McLoughlin wrote: > diff --git a/drivers/virtio/virtio_ring.c b/drivers/virtio/virtio_ring.c > index 5777196..2330c4b 100644 > --- a/drivers/virtio/virtio_ring.c > +++ b/drivers/virtio/virtio_ring.c > @@ -70,6 +73,55 @@ struct vring_virtqueue > > #define to_vvq(_vq) container_of(_vq, struct vring_virtqueue, vq) > > +/*
2008 Dec 20
1
[PATCH 2/3] virtio: indirect ring entries (VIRTIO_RING_F_INDIRECT_DESC)
Hi Mark, On Thursday 18 December 2008, Mark McLoughlin wrote: > diff --git a/drivers/virtio/virtio_ring.c b/drivers/virtio/virtio_ring.c > index 5777196..2330c4b 100644 > --- a/drivers/virtio/virtio_ring.c > +++ b/drivers/virtio/virtio_ring.c > @@ -70,6 +73,55 @@ struct vring_virtqueue > > #define to_vvq(_vq) container_of(_vq, struct vring_virtqueue, vq) > > +/*
2009 Apr 21
1
[PATCH 2/3] virtio: indirect ring entries (VIRTIO_RING_F_INDIRECT_DESC)
Hi Rusty, On Thu, 2008-12-18 at 17:10 +0000, Mark McLoughlin wrote: > Add a new feature flag for indirect ring entries. These are ring > entries which point to a table of buffer descriptors. > > The idea here is to increase the ring capacity by allowing a larger > effective ring size whereby the ring size dictates the number of > requests that may be outstanding, rather than
2009 Apr 21
1
[PATCH 2/3] virtio: indirect ring entries (VIRTIO_RING_F_INDIRECT_DESC)
Hi Rusty, On Thu, 2008-12-18 at 17:10 +0000, Mark McLoughlin wrote: > Add a new feature flag for indirect ring entries. These are ring > entries which point to a table of buffer descriptors. > > The idea here is to increase the ring capacity by allowing a larger > effective ring size whereby the ring size dictates the number of > requests that may be outstanding, rather than
2014 Nov 27
0
[PATCH v5 01/45] virtio: use u32, not bitmap for struct virtio_device's features
...eatures, RINGSIZE, true, > vrh.vring.desc, vrh.vring.avail, vrh.vring.used); > > /* No descriptor to get yet... */ > @@ -652,13 +652,13 @@ int main(int argc, char *argv[]) > } > > /* Test weird (but legal!) indirect. */ > - if (vdev.features[0] & (1 << VIRTIO_RING_F_INDIRECT_DESC)) { > + if (vdev.features & (1 << VIRTIO_RING_F_INDIRECT_DESC)) { > char *data = __user_addr_max - USER_MEM/4; > struct vring_desc *d = __user_addr_max - USER_MEM/2; > struct vring vring; > > /* Force creation of direct, which we modify. */ > - vdev.feat...
2014 Nov 27
0
[PATCH v5 01/45] virtio: use u32, not bitmap for struct virtio_device's features
...eatures, RINGSIZE, true, > vrh.vring.desc, vrh.vring.avail, vrh.vring.used); > > /* No descriptor to get yet... */ > @@ -652,13 +652,13 @@ int main(int argc, char *argv[]) > } > > /* Test weird (but legal!) indirect. */ > - if (vdev.features[0] & (1 << VIRTIO_RING_F_INDIRECT_DESC)) { > + if (vdev.features & (1 << VIRTIO_RING_F_INDIRECT_DESC)) { > char *data = __user_addr_max - USER_MEM/4; > struct vring_desc *d = __user_addr_max - USER_MEM/2; > struct vring vring; > > /* Force creation of direct, which we modify. */ > - vdev.feat...
2014 Nov 27
1
[PATCH v5 01/45] virtio: use u32, not bitmap for struct virtio_device's features
...vrh.vring.desc, vrh.vring.avail, vrh.vring.used); > > > > /* No descriptor to get yet... */ > > @@ -652,13 +652,13 @@ int main(int argc, char *argv[]) > > } > > > > /* Test weird (but legal!) indirect. */ > > - if (vdev.features[0] & (1 << VIRTIO_RING_F_INDIRECT_DESC)) { > > + if (vdev.features & (1 << VIRTIO_RING_F_INDIRECT_DESC)) { > > char *data = __user_addr_max - USER_MEM/4; > > struct vring_desc *d = __user_addr_max - USER_MEM/2; > > struct vring vring; > > > > /* Force creation of direct, which w...
2014 Nov 27
1
[PATCH v5 01/45] virtio: use u32, not bitmap for struct virtio_device's features
...vrh.vring.desc, vrh.vring.avail, vrh.vring.used); > > > > /* No descriptor to get yet... */ > > @@ -652,13 +652,13 @@ int main(int argc, char *argv[]) > > } > > > > /* Test weird (but legal!) indirect. */ > > - if (vdev.features[0] & (1 << VIRTIO_RING_F_INDIRECT_DESC)) { > > + if (vdev.features & (1 << VIRTIO_RING_F_INDIRECT_DESC)) { > > char *data = __user_addr_max - USER_MEM/4; > > struct vring_desc *d = __user_addr_max - USER_MEM/2; > > struct vring vring; > > > > /* Force creation of direct, which w...
2014 Mar 25
2
[PATCH] virtio-blk: make the queue depth the max supportable by the hypervisor
On Wed, Mar 19, 2014 at 10:48 AM, Venkatesh Srinivas <venkateshs at google.com> wrote: >> And I rewrote it substantially, mainly to take >> VIRTIO_RING_F_INDIRECT_DESC into account. >> >> As QEMU sets the vq size for PCI to 128, Venkatash's patch wouldn't >> have made a change. This version does (since QEMU also offers >> VIRTIO_RING_F_INDIRECT_DESC. > > That divide-by-2 produced the same queue depth as the prior > comput...
2014 Mar 25
2
[PATCH] virtio-blk: make the queue depth the max supportable by the hypervisor
On Wed, Mar 19, 2014 at 10:48 AM, Venkatesh Srinivas <venkateshs at google.com> wrote: >> And I rewrote it substantially, mainly to take >> VIRTIO_RING_F_INDIRECT_DESC into account. >> >> As QEMU sets the vq size for PCI to 128, Venkatash's patch wouldn't >> have made a change. This version does (since QEMU also offers >> VIRTIO_RING_F_INDIRECT_DESC. > > That divide-by-2 produced the same queue depth as the prior > comput...
2012 Aug 28
3
[PATCH v2 1/2] virtio-ring: Use threshold for switching to indirect descriptors
Currently if VIRTIO_RING_F_INDIRECT_DESC is enabled we will use indirect descriptors even if we have plenty of space in the ring. This means that we take a performance hit at all times due to the overhead of creating indirect descriptors. Instead, use it only after we're below a configurable offset. Signed-off-by: Sasha Levin <le...
2012 Aug 28
3
[PATCH v2 1/2] virtio-ring: Use threshold for switching to indirect descriptors
Currently if VIRTIO_RING_F_INDIRECT_DESC is enabled we will use indirect descriptors even if we have plenty of space in the ring. This means that we take a performance hit at all times due to the overhead of creating indirect descriptors. Instead, use it only after we're below a configurable offset. Signed-off-by: Sasha Levin <le...
2010 May 05
4
[PATCH RFC] virtio: put last seen used index into ring itself
...t;broken = false; - vq->last_used_idx = 0; + *vq->vring.last_used_idx = 0; vq->num_added = 0; list_add_tail(&vq->vq.list, &vdev->vqs); #ifdef DEBUG @@ -440,6 +440,10 @@ struct virtqueue *vring_new_virtqueue(unsigned int num, vq->indirect = virtio_has_feature(vdev, VIRTIO_RING_F_INDIRECT_DESC); + /* We publish used index whether Host offers it or not: if not, it's + * junk space anyway. But calling this acknowledges the feature. */ + virtio_has_feature(vdev, VIRTIO_RING_F_PUBLISH_USED); + /* No callback? Tell other side not to bother us. */ if (!callback) vq->vring.av...
2010 May 05
4
[PATCH RFC] virtio: put last seen used index into ring itself
...t;broken = false; - vq->last_used_idx = 0; + *vq->vring.last_used_idx = 0; vq->num_added = 0; list_add_tail(&vq->vq.list, &vdev->vqs); #ifdef DEBUG @@ -440,6 +440,10 @@ struct virtqueue *vring_new_virtqueue(unsigned int num, vq->indirect = virtio_has_feature(vdev, VIRTIO_RING_F_INDIRECT_DESC); + /* We publish used index whether Host offers it or not: if not, it's + * junk space anyway. But calling this acknowledges the feature. */ + virtio_has_feature(vdev, VIRTIO_RING_F_PUBLISH_USED); + /* No callback? Tell other side not to bother us. */ if (!callback) vq->vring.av...