search for: last_used

Displaying 20 results from an estimated 124 matches for "last_used".

2018 May 29
2
[RFC v5 3/5] virtio_ring: add packed ring support
...t; + kfree(desc); > + vq->desc_state_packed[id].indir_desc = NULL; > + } else if (ctx) { > + *ctx = vq->desc_state_packed[id].indir_desc; > + } > } > > static inline bool more_used_packed(const struct vring_virtqueue *vq) > { > - return false; > + u16 last_used, flags; > + u8 avail, used; > + > + last_used = vq->last_used_idx; > + flags = virtio16_to_cpu(vq->vq.vdev, > + vq->vring_packed.desc[last_used].flags); > + avail = !!(flags & VRING_DESC_F_AVAIL(1)); > + used = !!(flags & VRING_DESC_F_USED(1)); > + > +...
2018 May 29
2
[RFC v5 3/5] virtio_ring: add packed ring support
...t; + kfree(desc); > + vq->desc_state_packed[id].indir_desc = NULL; > + } else if (ctx) { > + *ctx = vq->desc_state_packed[id].indir_desc; > + } > } > > static inline bool more_used_packed(const struct vring_virtqueue *vq) > { > - return false; > + u16 last_used, flags; > + u8 avail, used; > + > + last_used = vq->last_used_idx; > + flags = virtio16_to_cpu(vq->vq.vdev, > + vq->vring_packed.desc[last_used].flags); > + avail = !!(flags & VRING_DESC_F_AVAIL(1)); > + used = !!(flags & VRING_DESC_F_USED(1)); > + > +...
2018 May 16
0
[RFC v4 3/5] virtio_ring: add packed ring support
...nmap_one_packed(vq, &desc[j]); + + kfree(desc); + vq->desc_state[id].indir_desc = NULL; + } else if (ctx) { + *ctx = vq->desc_state[id].indir_desc; + } + +out: + free_id_packed(vq, id); } static inline bool more_used_packed(const struct vring_virtqueue *vq) { - return false; + u16 last_used, flags; + bool avail, used; + + if (vq->vq.num_free == vq->vring_packed.num) + return false; + + last_used = vq->last_used_idx; + flags = virtio16_to_cpu(vq->vq.vdev, + vq->vring_packed.desc[last_used].flags); + avail = flags & VRING_DESC_F_AVAIL(1); + used = flags & VRIN...
2018 May 16
8
[RFC v4 0/5] virtio: support packed ring
Hello everyone, This RFC implements packed ring support in virtio driver. Some simple functional tests have been done with Jason's packed ring implementation in vhost: https://lkml.org/lkml/2018/4/23/12 Both of ping and netperf worked as expected (with EVENT_IDX disabled). TODO: - Refinements (for code and commit log); - More tests; - Bug fixes; RFC v3 -> RFC v4: - Make ID allocation
2003 Aug 09
5
app_queue, fewestcalls and leastrecent logic
First of all I would like to thank Mark for getting roundrobin to go roundrobin. Good job. Now we have some options here for leastrecent and fewestcalls strategy. It needs some work on the logic and Mark recommend that I ask the list and get some input before he makes any changes to it. fewestcalls from what I have seen would always ring the agent with the fewestcalls first then go into
2011 Nov 03
2
[PATCH 4 of 5] virtio: avoid modulus operation
...->num_added++) & (vq->vring.num-1)); vq->vring.avail->ring[avail] = head; pr_debug("Added buffer head %i to %p\n", head, vq); @@ -317,6 +317,7 @@ void *virtqueue_get_buf(struct virtqueue struct vring_virtqueue *vq = to_vvq(_vq); void *ret; unsigned int i; + u16 last_used; START_USE(vq); @@ -334,8 +335,9 @@ void *virtqueue_get_buf(struct virtqueue /* Only get used array entries after they have been exposed by host. */ virtio_rmb(); - i = vq->vring.used->ring[vq->last_used_idx%vq->vring.num].id; - *len = vq->vring.used->ring[vq->last_...
2011 Nov 03
2
[PATCH 4 of 5] virtio: avoid modulus operation
...->num_added++) & (vq->vring.num-1)); vq->vring.avail->ring[avail] = head; pr_debug("Added buffer head %i to %p\n", head, vq); @@ -317,6 +317,7 @@ void *virtqueue_get_buf(struct virtqueue struct vring_virtqueue *vq = to_vvq(_vq); void *ret; unsigned int i; + u16 last_used; START_USE(vq); @@ -334,8 +335,9 @@ void *virtqueue_get_buf(struct virtqueue /* Only get used array entries after they have been exposed by host. */ virtio_rmb(); - i = vq->vring.used->ring[vq->last_used_idx%vq->vring.num].id; - *len = vq->vring.used->ring[vq->last_...
2018 Apr 25
0
[RFC v3 3/5] virtio_ring: add packed ring support
...packed_desc); j++) + vring_unmap_one_packed(vq, &desc[j]); + + kfree(desc); + vq->desc_state[head].indir_desc = NULL; + } else if (ctx) { + *ctx = vq->desc_state[head].indir_desc; + } } static inline bool more_used_packed(const struct vring_virtqueue *vq) { - return false; + u16 last_used, flags; + bool avail, used; + + if (vq->vq.num_free == vq->vring_packed.num) + return false; + + last_used = vq->last_used_idx; + flags = virtio16_to_cpu(vq->vq.vdev, + vq->vring_packed.desc[last_used].flags); + avail = flags & VRING_DESC_F_AVAIL(1); + used = flags & VRIN...
2018 May 22
0
[RFC v5 3/5] virtio_ring: add packed ring support
...); i++) + vring_unmap_desc_packed(vq, &desc[i]); + + kfree(desc); + vq->desc_state_packed[id].indir_desc = NULL; + } else if (ctx) { + *ctx = vq->desc_state_packed[id].indir_desc; + } } static inline bool more_used_packed(const struct vring_virtqueue *vq) { - return false; + u16 last_used, flags; + u8 avail, used; + + last_used = vq->last_used_idx; + flags = virtio16_to_cpu(vq->vq.vdev, + vq->vring_packed.desc[last_used].flags); + avail = !!(flags & VRING_DESC_F_AVAIL(1)); + used = !!(flags & VRING_DESC_F_USED(1)); + + return avail == used && used == vq-&...
2008 Apr 05
11
[PATCH RFC 1/5] vringfd syscall
...lude <linux/highmem.h> +#include <linux/file.h> +#include <linux/mount.h> +#include <linux/magic.h> +#include <linux/module.h> + +static struct vfsmount *vring_mnt; +static DEFINE_MUTEX(vring_lock); + +struct vring_info +{ + struct vring ring; + u16 mask; + u16 __user *last_used; + u16 last_avail; + + const struct vring_ops *ops; + void *ops_data; + + /* Waitqueue for poll() */ + wait_queue_head_t poll_wait; + + /* The mapped used ring. */ + struct vring_used *used; + struct page *used_page; +}; + +static unsigned int vring_poll(struct file *filp, + struct poll_ta...
2008 Apr 05
11
[PATCH RFC 1/5] vringfd syscall
...lude <linux/highmem.h> +#include <linux/file.h> +#include <linux/mount.h> +#include <linux/magic.h> +#include <linux/module.h> + +static struct vfsmount *vring_mnt; +static DEFINE_MUTEX(vring_lock); + +struct vring_info +{ + struct vring ring; + u16 mask; + u16 __user *last_used; + u16 last_avail; + + const struct vring_ops *ops; + void *ops_data; + + /* Waitqueue for poll() */ + wait_queue_head_t poll_wait; + + /* The mapped used ring. */ + struct vring_used *used; + struct page *used_page; +}; + +static unsigned int vring_poll(struct file *filp, + struct poll_ta...
2018 Apr 01
8
[RFC v2] virtio: support packed ring
...ol weak_barriers; @@ -79,19 +80,45 @@ struct vring_virtqueue { /* Host publishes avail event idx */ bool event; - /* Head of free buffer list. */ - unsigned int free_head; /* Number we've added since last sync. */ unsigned int num_added; /* Last used index we've seen. */ u16 last_used_idx; - /* Last written value to avail->flags */ - u16 avail_flags_shadow; + union { + /* Available for split ring */ + struct { + /* Actual memory layout for this queue. */ + struct vring vring; - /* Last written value to avail->idx in guest byte order */ - u16 avail_idx_shadow; +...
2018 Apr 01
8
[RFC v2] virtio: support packed ring
...ol weak_barriers; @@ -79,19 +80,45 @@ struct vring_virtqueue { /* Host publishes avail event idx */ bool event; - /* Head of free buffer list. */ - unsigned int free_head; /* Number we've added since last sync. */ unsigned int num_added; /* Last used index we've seen. */ u16 last_used_idx; - /* Last written value to avail->flags */ - u16 avail_flags_shadow; + union { + /* Available for split ring */ + struct { + /* Actual memory layout for this queue. */ + struct vring vring; - /* Last written value to avail->idx in guest byte order */ - u16 avail_idx_shadow; +...
2018 Apr 23
2
[RFC v2] virtio: support packed ring
...(ctx) { > > + *ctx = vq->desc_state[head].indir_desc; > > + } > > + > > +out: > > + return vq->desc_state[head].num; > > +} > > + > > +static inline bool more_used_split(const struct vring_virtqueue *vq) > > { > > return vq->last_used_idx != virtio16_to_cpu(vq->vq.vdev, vq->vring.used->idx); > > } > > +static inline bool more_used_packed(const struct vring_virtqueue *vq) > > +{ > > + u16 last_used, flags; > > + bool avail, used; > > + > > + if (vq->vq.num_free == vq->vri...
2018 Apr 23
2
[RFC v2] virtio: support packed ring
...(ctx) { > > + *ctx = vq->desc_state[head].indir_desc; > > + } > > + > > +out: > > + return vq->desc_state[head].num; > > +} > > + > > +static inline bool more_used_split(const struct vring_virtqueue *vq) > > { > > return vq->last_used_idx != virtio16_to_cpu(vq->vq.vdev, vq->vring.used->idx); > > } > > +static inline bool more_used_packed(const struct vring_virtqueue *vq) > > +{ > > + u16 last_used, flags; > > + bool avail, used; > > + > > + if (vq->vq.num_free == vq->vri...
2018 May 16
2
[RFC v4 3/5] virtio_ring: add packed ring support
...esc_state[id].indir_desc = NULL; > + } else if (ctx) { > + *ctx = vq->desc_state[id].indir_desc; > + } > + > +out: > + free_id_packed(vq, id); > } > > static inline bool more_used_packed(const struct vring_virtqueue *vq) > { > - return false; > + u16 last_used, flags; > + bool avail, used; > + > + if (vq->vq.num_free == vq->vring_packed.num) > + return false; > + > + last_used = vq->last_used_idx; > + flags = virtio16_to_cpu(vq->vq.vdev, > + vq->vring_packed.desc[last_used].flags); > + avail = flags & VRI...
2018 May 16
2
[RFC v4 3/5] virtio_ring: add packed ring support
...esc_state[id].indir_desc = NULL; > + } else if (ctx) { > + *ctx = vq->desc_state[id].indir_desc; > + } > + > +out: > + free_id_packed(vq, id); > } > > static inline bool more_used_packed(const struct vring_virtqueue *vq) > { > - return false; > + u16 last_used, flags; > + bool avail, used; > + > + if (vq->vq.num_free == vq->vring_packed.num) > + return false; > + > + last_used = vq->last_used_idx; > + flags = virtio16_to_cpu(vq->vq.vdev, > + vq->vring_packed.desc[last_used].flags); > + avail = flags & VRI...
2014 Feb 21
1
dsync, a zero-way synchronisation tool?
...elds have_guids have_save_guids have_only_guid128 Atype key value stream deleted last_change modseq Ctype uid guid hdr_hash modseq pvt_modseq save_timestamp add_flags remove_flags final_flags keywords_reset keyword_changes Rguid uid Mguid uid pop3_uidl pop3_order received_date stream cname decision last_used . VERSION dsync 3 2 Hhostname sync_ns_prefix sync_box sync_box_guid sync_type debug sync_visible_namespaces exclude_mailboxes send_mail_requests backup_send backup_recv lock_timeout no_mail_sync no_backup_overwrite purge_remote Smailbox_guid last_uidvalidity last_common_uid last_common_modseq last_...
2018 Apr 10
0
[RFC v2] virtio: support packed ring
...ue { > /* Host publishes avail event idx */ > bool event; > > - /* Head of free buffer list. */ > - unsigned int free_head; > /* Number we've added since last sync. */ > unsigned int num_added; > > /* Last used index we've seen. */ > u16 last_used_idx; > > - /* Last written value to avail->flags */ > - u16 avail_flags_shadow; > + union { > + /* Available for split ring */ > + struct { > + /* Actual memory layout for this queue. */ > + struct vring vring; > > - /* Last written value to avail->id...
2018 Apr 13
0
[RFC v2] virtio: support packed ring
...ue { > /* Host publishes avail event idx */ > bool event; > > - /* Head of free buffer list. */ > - unsigned int free_head; > /* Number we've added since last sync. */ > unsigned int num_added; > > /* Last used index we've seen. */ > u16 last_used_idx; > > - /* Last written value to avail->flags */ > - u16 avail_flags_shadow; > + union { > + /* Available for split ring */ > + struct { > + /* Actual memory layout for this queue. */ > + struct vring vring; > > - /* Last written value to avail->id...