From patchwork Fri Dec 13 14:13:18 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Maxime Coquelin X-Patchwork-Id: 63844 Return-Path: X-Original-To: patchwork@inbox.dpdk.org Delivered-To: patchwork@inbox.dpdk.org Received: from dpdk.org (dpdk.org [92.243.14.124]) by inbox.dpdk.org (Postfix) with ESMTP id 46431A04F1; Fri, 13 Dec 2019 15:13:36 +0100 (CET) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id 986331BF82; Fri, 13 Dec 2019 15:13:35 +0100 (CET) Received: from us-smtp-delivery-1.mimecast.com (us-smtp-2.mimecast.com [205.139.110.61]) by dpdk.org (Postfix) with ESMTP id 690E61BF7F for ; Fri, 13 Dec 2019 15:13:34 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1576246413; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=zZLyVPZ6xrsYbAe5yaIqZPD30A6d/fRw8Hct9eEYhiI=; b=SXxX/9kQLESuMDo8B3oPpb8jUMTSaL9trDdevtJ90+hibAes20IO7Aez2F+dO/lhl4Pp13 9O9ufGMhcBD8k1vGRLajnXBUbuRhAcB4fcIsdsJHEF01neknck+lWH5BFxYieUEae6x76t LJGI159s8r9kO5DBNNfD5/MCSJgf/bs= Received: from mimecast-mx01.redhat.com (mimecast-mx01.redhat.com [209.132.183.4]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-146-3QrCcLBAMZeg2qQr2tltMQ-1; Fri, 13 Dec 2019 09:13:30 -0500 Received: from smtp.corp.redhat.com (int-mx02.intmail.prod.int.phx2.redhat.com [10.5.11.12]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx01.redhat.com (Postfix) with ESMTPS id ECE758D9FAB; Fri, 13 Dec 2019 14:13:28 +0000 (UTC) Received: from localhost.localdomain (ovpn-112-19.ams2.redhat.com [10.36.112.19]) by smtp.corp.redhat.com (Postfix) with ESMTP id EEB1160C05; Fri, 13 Dec 2019 14:13:24 +0000 (UTC) From: Maxime Coquelin To: dev@dpdk.org, tiwei.bie@intel.com, zhihong.wang@intel.com, anatoly.burakov@intel.com Cc: Maxime Coquelin Date: Fri, 13 Dec 2019 15:13:18 +0100 Message-Id: <20191213141322.32730-1-maxime.coquelin@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.79 on 10.5.11.12 X-MC-Unique: 3QrCcLBAMZeg2qQr2tltMQ-1 X-Mimecast-Spam-Score: 0 Subject: [dpdk-dev] [PATCH 0/4] Add external contiguous memory support to Virtio-user X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Sender: "dev" Somme applications/frameworks using DPDK allocate their own memory for its buffers. This is the case of Seastar, and also VPP. It is currently not possible to use Virtio-user PMD with these applications because Virtio-user requires file descriptor for this memory to be shared with the vhost-user backend (vDPA in our case [0]). This series introduces a new API in EAL to register external memory that is contiguous in both the VA and the IOVA space. It also enables VDEVs to implement the DMA map/unmap callback, and implement it in Virtio-user PMD. Please note that extmem unit tests are missing. I'm working on it and it will be in v2. Just share this v1 for early reviews. Maxime Coquelin (4): eal: add new API to register contiguous external memory eal: allow getting memory segment FD with external memory bus/vdev: add DMA mapping supprt net/virtio: add DMA mapping callback to virtio-user drivers/bus/vdev/rte_bus_vdev.h | 24 +++++ drivers/bus/vdev/vdev.c | 50 +++++++++++ .../net/virtio/virtio_user/virtio_user_dev.c | 10 +-- .../net/virtio/virtio_user/virtio_user_dev.h | 3 + drivers/net/virtio/virtio_user_ethdev.c | 58 +++++++++++++ lib/librte_eal/common/eal_common_memory.c | 87 ++++++++++++++++--- lib/librte_eal/common/include/rte_memory.h | 46 ++++++++++ lib/librte_eal/common/malloc_heap.c | 17 +++- lib/librte_eal/common/malloc_heap.h | 2 +- lib/librte_eal/common/rte_malloc.c | 2 +- lib/librte_eal/rte_eal_version.map | 3 + 11 files changed, 278 insertions(+), 24 deletions(-)