Messages in this thread | | | From | kys@exchange ... | Subject | [PATCH 0/4] Drivers: hv: vmbus: Make in-place consumption always possible | Date | Wed, 6 Jul 2016 17:24:17 -0700 |
| |
From: K. Y. Srinivasan <kys@microsoft.com>
Make in-place consumption of VMBus packets always possible. Currently we forbid it when a packet 'wraps around' the ring so we can't provide a single pointer to it.
The idea if this series is dead simple: let's make a single virtual mapping for two copies (actually, two sets of pages which consist the ring buffer) of the ring buffer. With such a mapping we can always provide a pointers for in-place consumption to drivers. Copy path can also benefit from such mappings as we eliminate the need for conditional checking in copy_to/ copy_from functions and use a single memcpy().
Vitaly Kuznetsov (4): Drivers: hv: cleanup vmbus_open() for wrap around mappings Drivers: hv: ring_buffer: wrap around mappings for ring buffers Drivers: hv: ring_buffer: use wrap around mappings in hv_copy{from,to}_ringbuffer() Drivers: hv: ring_buffer: count on wrap around mappings in get_next_pkt_raw()
drivers/hv/channel.c | 68 +++++++++++++++++++++++---------------------- drivers/hv/hyperv_vmbus.h | 4 +- drivers/hv/ring_buffer.c | 61 +++++++++++++++++++++++----------------- include/linux/hyperv.h | 32 +++++++-------------- 4 files changed, 83 insertions(+), 82 deletions(-)
-- 1.7.4.1
| |