From mboxrd@z Thu Jan  1 00:00:00 1970
Return-Path: <dev-bounces@dpdk.org>
Received: from dpdk.org (dpdk.org [92.243.14.124])
	by inbox.dpdk.org (Postfix) with ESMTP id 97964A00BE;
	Thu, 11 Jun 2020 23:38:08 +0200 (CEST)
Received: from [92.243.14.124] (localhost [127.0.0.1])
	by dpdk.org (Postfix) with ESMTP id EC768E07;
	Thu, 11 Jun 2020 23:38:07 +0200 (CEST)
Received: from us-smtp-delivery-1.mimecast.com (us-smtp-2.mimecast.com
 [205.139.110.61]) by dpdk.org (Postfix) with ESMTP id B6E1ADE0
 for <dev@dpdk.org>; Thu, 11 Jun 2020 23:38:06 +0200 (CEST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com;
 s=mimecast20190719; t=1591911486;
 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=lf7x8QeGvynMysXt918QY9ooUL6XakqOvfoj8hYI1ig=;
 b=BN1H/mhVGPvbCKXSWymVJV5xyvCm5/1Fcw/Aw3S+h9jJ9i8Fl7Sup9isw8e+c/qjaGVLzr
 H1P36mQH7Gr8kh4zWqKDetHjUDRQM9/Ly4dg3IRzgDwWrbHMkAYQe5IIAp0GT6o3KapwDn
 7Eqd50ZzT0uYjRibhstY5rZvm711XWc=
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-320-I15lGv4gPH6z-VllISVvkQ-1; Thu, 11 Jun 2020 17:38:03 -0400
X-MC-Unique: I15lGv4gPH6z-VllISVvkQ-1
Received: from smtp.corp.redhat.com (int-mx07.intmail.prod.int.phx2.redhat.com
 [10.5.11.22])
 (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits))
 (No client certificate requested)
 by mimecast-mx01.redhat.com (Postfix) with ESMTPS id C48E71005512;
 Thu, 11 Jun 2020 21:38:01 +0000 (UTC)
Received: from localhost.localdomain (unknown [10.36.110.37])
 by smtp.corp.redhat.com (Postfix) with ESMTP id 07DD91001B0B;
 Thu, 11 Jun 2020 21:37:52 +0000 (UTC)
From: Maxime Coquelin <maxime.coquelin@redhat.com>
To: dev@dpdk.org, matan@mellanox.com, xiao.w.wang@intel.com,
 zhihong.wang@intel.com, xiaolong.ye@intel.com, chenbo.xia@intel.com,
 david.marchand@redhat.com, amorenoz@redhat.com, shreyansh.jain@nxp.com,
 viacheslavo@mellanox.com, hemant.agrawal@nxp.com, sachin.saxena@nxp.com
Cc: Maxime Coquelin <maxime.coquelin@redhat.com>
Date: Thu, 11 Jun 2020 23:37:34 +0200
Message-Id: <20200611213748.1967029-1-maxime.coquelin@redhat.com>
MIME-Version: 1.0
X-Scanned-By: MIMEDefang 2.84 on 10.5.11.22
X-Mimecast-Spam-Score: 0
X-Mimecast-Originator: redhat.com
Content-Type: text/plain; charset=US-ASCII
Content-Transfer-Encoding: 8bit
Subject: [dpdk-dev] [PATCH 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 <dev.dpdk.org>
List-Unsubscribe: <https://mails.dpdk.org/options/dev>,
 <mailto:dev-request@dpdk.org?subject=unsubscribe>
List-Archive: <http://mails.dpdk.org/archives/dev/>
List-Post: <mailto:dev@dpdk.org>
List-Help: <mailto:dev-request@dpdk.org?subject=help>
List-Subscribe: <https://mails.dpdk.org/listinfo/dev>,
 <mailto:dev-request@dpdk.org?subject=subscribe>
Errors-To: dev-bounces@dpdk.org
Sender: "dev" <dev-bounces@dpdk.org>

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!

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          |  84 ++++-----
 drivers/vdpa/mlx5/mlx5_vdpa.c          |  85 +++++----
 drivers/vdpa/mlx5/mlx5_vdpa.h          |   5 +-
 examples/vdpa/main.c                   | 108 +++++------
 lib/librte_vhost/Makefile              |   3 +-
 lib/librte_vhost/meson.build           |   3 +-
 lib/librte_vhost/rte_vdpa.h            | 172 ++++--------------
 lib/librte_vhost/rte_vdpa_dev.h        | 135 ++++++++++++++
 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                | 238 ++++++++++++++++---------
 lib/librte_vhost/vhost.c               |  19 +-
 lib/librte_vhost/vhost.h               |   9 +-
 lib/librte_vhost/vhost_user.c          |  28 +--
 17 files changed, 545 insertions(+), 433 deletions(-)
 create mode 100644 lib/librte_vhost/rte_vdpa_dev.h

-- 
2.26.2