From patchwork Fri Jun 26 14:04:27 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Maxime Coquelin X-Patchwork-Id: 72247 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 46DCEA051C; Fri, 26 Jun 2020 16:05:08 +0200 (CEST) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id 2BD411BFFE; Fri, 26 Jun 2020 16:05:08 +0200 (CEST) Received: from us-smtp-1.mimecast.com (us-smtp-delivery-1.mimecast.com [205.139.110.120]) by dpdk.org (Postfix) with ESMTP id 4AE241BFFE for ; Fri, 26 Jun 2020 16:05:07 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1593180306; 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=EmQGyXSYCwU6RwOTB6yYXZuB6uL74UtbqbljgoNdR7Q=; b=KYccJ1GRvDcoV1l/UJRJSv2BmAeb5wb30ufpYt6Cc1dbRt5YUckq0+d+P4+XY7jg+0Bix0 pJMJctryMZEnsKPWbSPcGokkG7/Ef7PsbzsbXBscSoGRvCXLDcnSf55XH/k3s/yO24h5s7 ees7KXUY6i5i+ahKGqk+4pKKa/ArTUY= 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-108-mb5c-GBcOUqMyuwzyco46g-1; Fri, 26 Jun 2020 10:04:53 -0400 X-MC-Unique: mb5c-GBcOUqMyuwzyco46g-1 Received: from smtp.corp.redhat.com (int-mx05.intmail.prod.int.phx2.redhat.com [10.5.11.15]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx01.redhat.com (Postfix) with ESMTPS id 31CD68015FE; Fri, 26 Jun 2020 14:04:52 +0000 (UTC) Received: from localhost.localdomain (unknown [10.36.110.7]) by smtp.corp.redhat.com (Postfix) with ESMTP id AB3825BAE1; Fri, 26 Jun 2020 14:04:43 +0000 (UTC) From: Maxime Coquelin To: matan@mellanox.com, xiao.w.wang@intel.com, zhihong.wang@intel.com, chenbo.xia@intel.com, david.marchand@redhat.com, amorenoz@redhat.com, viacheslavo@mellanox.com, hemant.agrawal@nxp.com, sachin.saxena@nxp.com, grive@u256.net, dev@dpdk.org Cc: Maxime Coquelin Date: Fri, 26 Jun 2020 16:04:27 +0200 Message-Id: <20200626140441.1441763-1-maxime.coquelin@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.79 on 10.5.11.15 Authentication-Results: relay.mimecast.com; auth=pass smtp.auth=CUSA124A263 smtp.mailfrom=maxime.coquelin@redhat.com X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Subject: [dpdk-dev] [PATCH v3 00/14] vDPA API and framework rework 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" This series aims to rework the vDPA framework and its API to better fit into the DPDK device model and also be more easily consumable by applications. Main changes are creating a device class for vDPA, which enables applications to iterate vDPA devices in a generic way: RTE_DEV_FOREACH(dev, "class=vdpa", it) {...} Also the notion of vDPA device ID is replaced with both application & drivers using the rte_vdpa_device as reference. Doing that also made possible to store devices references into a linked list instead of a static array. Last patch makes the rte_vdpa_device structure content opaque to the applications, creating a clear barrier between application visible API and drivers visble ones. The first two patches fixes issues in some busses iterators, causing segmentation faults when iterating only on a device class. While reviewing, if you notice further possible improvements, please let me know. Target is to remove the experimental tag from vDPA APIs in next LTS release. Thanks to David for giving me some ideas of improvements! Changes since v3: ----------------- - Fix double lock in unregister API (Adrian) - Apply Acked-by's Changes since v2: ----------------- - Remove useless new line in error messages (Adrian) - Use strncmp fo dev name comparisons (Adrian) - Apply Adrian Acked-by's Changes since v1: ----------------- - Rebase on top of net-next - Use rte_pci_addr_cmp() instead of comparing pci dev pointers (Gaëtan) - Use proper types for calculating device ID (Gaëtan) Maxime Coquelin (14): bus/dpaa: fix null pointer dereference bus/fslmc: fix null pointer dereference vhost: introduce vDPA devices class vhost: make vDPA framework bus agnostic vhost: replace device ID in vDPA ops vhost: replace vDPA device ID in Vhost vhost: replace device ID in applications vhost: remove useless vDPA API vhost: use linked-list for vDPA devices vhost: introduce wrappers for some vDPA ops examples/vdpa: use new wrappers instead of ops examples/vdpa: remove useless device count vhost: remove vDPA device count API vhost: split vDPA header file drivers/bus/dpaa/dpaa_bus.c | 5 + drivers/bus/fslmc/fslmc_bus.c | 5 + drivers/vdpa/ifc/ifcvf_vdpa.c | 87 ++++---- drivers/vdpa/mlx5/mlx5_vdpa.c | 134 ++++++------ drivers/vdpa/mlx5/mlx5_vdpa.h | 5 +- examples/vdpa/main.c | 149 +++++++------- lib/librte_vhost/Makefile | 3 +- lib/librte_vhost/meson.build | 3 +- lib/librte_vhost/rte_vdpa.h | 188 +++++------------ lib/librte_vhost/rte_vdpa_dev.h | 147 +++++++++++++ lib/librte_vhost/rte_vhost.h | 20 +- lib/librte_vhost/rte_vhost_version.map | 11 +- lib/librte_vhost/socket.c | 48 ++--- lib/librte_vhost/vdpa.c | 275 +++++++++++++++---------- lib/librte_vhost/vhost.c | 19 +- lib/librte_vhost/vhost.h | 9 +- lib/librte_vhost/vhost_user.c | 28 +-- 17 files changed, 634 insertions(+), 502 deletions(-) create mode 100644 lib/librte_vhost/rte_vdpa_dev.h Acked-by: Adrián Moreno