Re: [RFC v5 0/5] virtio: support packed ring
On Fri, May 25, 2018 at 10:31:26AM +0800, Jason Wang wrote: > On 2018年05月22日 16:16, Tiwei Bie wrote: > > 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 (RFC v4): > > > > https://lkml.org/lkml/2018/5/16/501 > > > > Both of ping and netperf worked as expected w/ EVENT_IDX > > disabled. Ping worked as expected w/ EVENT_IDX enabled, > > but netperf didn't (A hack has been added in the driver > > to make netperf test pass in this case. The hack can be > > found by `grep -rw XXX` in the code). > > Looks like this is because a bug in vhost which wrongly track signalled_used > and may miss an interrupt. After fixing that, both side works like a charm. > > I'm testing vIOMMU and zerocopy, and will post a new version shortly. (Hope > it would be the last RFC version). Great to know that. Thanks a lot! :) Best regards, Tiwei Bie
Re: [RFC v5 0/5] virtio: support packed ring
On 2018年05月22日 16:16, Tiwei Bie wrote: 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 (RFC v4): https://lkml.org/lkml/2018/5/16/501 Both of ping and netperf worked as expected w/ EVENT_IDX disabled. Ping worked as expected w/ EVENT_IDX enabled, but netperf didn't (A hack has been added in the driver to make netperf test pass in this case. The hack can be found by `grep -rw XXX` in the code). Looks like this is because a bug in vhost which wrongly track signalled_used and may miss an interrupt. After fixing that, both side works like a charm. I'm testing vIOMMU and zerocopy, and will post a new version shortly. (Hope it would be the last RFC version). Thanks
[RFC v5 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 (RFC v4): https://lkml.org/lkml/2018/5/16/501 Both of ping and netperf worked as expected w/ EVENT_IDX disabled. Ping worked as expected w/ EVENT_IDX enabled, but netperf didn't (A hack has been added in the driver to make netperf test pass in this case. The hack can be found by `grep -rw XXX` in the code). TODO: - Refinements (for code and commit log); - More tests; - Bug fixes; RFC v4 -> RFC v5: - Save DMA addr, etc in desc state (Jason); - Track used wrap counter; RFC v3 -> RFC v4: - Make ID allocation support out-of-order (Jason); - Various fixes for EVENT_IDX support; RFC v2 -> RFC v3: - Split into small patches (Jason); - Add helper virtqueue_use_indirect() (Jason); - Just set id for the last descriptor of a list (Jason); - Calculate the prev in virtqueue_add_packed() (Jason); - Fix/improve desc suppression code (Jason/MST); - Refine the code layout for XXX_split/packed and wrappers (MST); - Fix the comments and API in uapi (MST); - Remove the BUG_ON() for indirect (Jason); - Some other refinements and bug fixes; RFC v1 -> RFC v2: - Add indirect descriptor support - compile test only; - Add event suppression supprt - compile test only; - Move vring_packed_init() out of uapi (Jason, MST); - Merge two loops into one in virtqueue_add_packed() (Jason); - Split vring_unmap_one() for packed ring and split ring (Jason); - Avoid using '%' operator (Jason); - Rename free_head -> next_avail_idx (Jason); - Add comments for virtio_wmb() in virtqueue_add_packed() (Jason); - Some other refinements and bug fixes; Thanks! Tiwei Bie (5): virtio: add packed ring definitions virtio_ring: support creating packed ring virtio_ring: add packed ring support virtio_ring: add event idx support in packed ring virtio_ring: enable packed ring drivers/virtio/virtio_ring.c | 1354 ++-- include/linux/virtio_ring.h|8 +- include/uapi/linux/virtio_config.h |5 +- include/uapi/linux/virtio_ring.h | 36 + 4 files changed, 1125 insertions(+), 278 deletions(-) -- 2.17.0