From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1755903AbcGFWko (ORCPT ); Wed, 6 Jul 2016 18:40:44 -0400 Received: from p3plsmtps2ded04.prod.phx3.secureserver.net ([208.109.80.198]:37207 "EHLO p3plsmtps2ded04.prod.phx3.secureserver.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752522AbcGFWkn (ORCPT ); Wed, 6 Jul 2016 18:40:43 -0400 x-originating-ip: 72.167.245.219 From: kys@exchange.microsoft.com To: gregkh@linuxfoundation.org, linux-kernel@vger.kernel.org, devel@linuxdriverproject.org, olaf@aepfle.de, apw@canonical.com, vkuznets@redhat.com, jasowang@redhat.com, leann.ogasawara@canonical.com Cc: "K. Y. Srinivasan" Subject: [PATCH 0/4] Drivers: hv: vmbus: Make in-place consumption always possible Date: Wed, 6 Jul 2016 17:24:17 -0700 Message-Id: <1467851057-8718-1-git-send-email-kys@exchange.microsoft.com> X-Mailer: git-send-email 1.7.4.1 Reply-To: kys@microsoft.com X-CMAE-Envelope: MS4wfGh24+MWQmxsJsb2V2iKODB2cH7TT5OnHv1chte9+CsgYrupeYgkOR0RQezCQFcG6VbTS0zyvM5fZwA0IWn5PDNS0Z22WQ4XvtAVWhkZ8TREVZF/mLAd ISzyeXd7hyKdbf7V66kJR8Kc+QG3gRq6xhaNg/N1koWjo0L2U/VC83Eome2PIs9OqWVOn8Edz9Jp1JtR00r+0D7hvAuq3JS8RclKCQGHsQ8AjcGVFqAiuVMM R86SLVSy74VushyJuAAuQafvt6W+H0YO6ynqQM5xavG0rz/EQmWYLuopgCbJHx6nWf4i8aSqSvAOjw7vFxIcZc8U9DQiYD94ZofQJ9a78cuj/0fg6T8Zlebu 1x5AeWvPxC4LAOptYWjJj3pmRswJ31lUAeAcUIt+J4DHZEFH5veur3p8yMRvxFs1u2YG+YJDd7Vm1we/bUPswo4Hrp5LVVZvhBdU9IWvsZqIr7ZABCY= Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: K. Y. Srinivasan 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