From patchwork Thu Jul 2 08:32:29 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Adrian Moreno X-Patchwork-Id: 72798 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 A536AA0524; Thu, 2 Jul 2020 10:33:11 +0200 (CEST) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id E2C351D65A; Thu, 2 Jul 2020 10:33:04 +0200 (CEST) Received: from us-smtp-delivery-1.mimecast.com (us-smtp-1.mimecast.com [207.211.31.81]) by dpdk.org (Postfix) with ESMTP id 198DA1D626 for ; Thu, 2 Jul 2020 10:33:03 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1593678783; 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=/dueM3O+wy0rrSsV0pcB/hHWFO8JbuFMAi/S09ae3bQ=; b=itcJcSZsdiTjzQ/cc4CdoB3Uzdb+C6pxjNHA4kkpKOy7Hj1dh9RRLLik3ngbmCsQ1BgZaC 7dadg9a78Gz39BF80HeG9yH4Wy5UZl8r2HqLlkeSlzSCDw0UaEdEBUH3JgoQCMeDFw2Xxq 0cci2mIta8LHCMD2IWI2E3LDWCDeHSg= 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-141-B5NRSoLIP-e6-tP50V5qQg-1; Thu, 02 Jul 2020 04:32:55 -0400 X-MC-Unique: B5NRSoLIP-e6-tP50V5qQg-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 AE310BFC1; Thu, 2 Jul 2020 08:32:53 +0000 (UTC) Received: from amorenoz.users.ipa.redhat.com (ovpn-112-91.ams2.redhat.com [10.36.112.91]) by smtp.corp.redhat.com (Postfix) with ESMTP id 374B11002397; Thu, 2 Jul 2020 08:32:48 +0000 (UTC) From: Adrian Moreno To: dev@dpdk.org, xiaolong.ye@intel.com, shahafs@mellanox.com, matan@mellanox.com, maxime.coquelin@redhat.com, xiao.w.wang@intel.com, viacheslavo@mellanox.com Cc: jasowang@redhat.com, lulu@redhat.com, Adrian Moreno Date: Thu, 2 Jul 2020 10:32:29 +0200 Message-Id: <20200702083237.1215652-1-amorenoz@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.84 on 10.5.11.22 Authentication-Results: relay.mimecast.com; auth=pass smtp.auth=CUSA124A263 smtp.mailfrom=amorenoz@redhat.com X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Subject: [dpdk-dev] [PATCH (v20.08) v2 0/8] vhost: improve Vhost/vDPA device init 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" The goal of this series is to make the Vhost/vDPA device init more robust by adding support to a new protocol feature and two new messages. VHOST_USER_SET_STATUS is received by the backend when the driver updates the virtio device status register. For now this series only deals with the DRIVER_OK bit, which indicates that the driver is done with the device initialization. So, if the feature is negotiated, make it a requirement to consider the device ready. For example, such information helps the Vhost backend to know when it can call the dev_conf vDPA callback. VIRTIO_USER_GET_STATUS is received by the backend to report the status of the virtio device as per the virtio specification. One use of this message is for the frontend to read the status after the feature negotiation. If the device has cleared the FEATURE_OK bit, the driver should interpret that the device has rejected the features and should fail accordingly. Before adding support for these new requests, some clean-ups and refactoring are done as preliminary steps to make the code more easily readable. Some vDPA APIs are also made mandatory. Note that the VHOST_USER_PROTOCOL_F_STATUS protocol feature requires frontend support. For Qemu it has been posted [1] , reviewed and acked. However, it's still waiting for the nex merge windows, so this series should not be merged until the former is. Posting it earler so it can be reviewed, specially after the recent series developed by Matan which also affects the vhost ready status. [1] https://patchwork.ozlabs.org/project/qemu-devel/patch/20200514073332.1434576-1-maxime.coquelin@redhat.com/ --- Changes from v1: - Rebased on top of virtio-next: - Dropped [PATCH 9/9] vhost: only use vDPA config workaround if needed since the latest changes have made the workaround uncessary. - Dropped [PATCH 3/9] vdpa/ifc: add support to vDPA queue enable Callbacks are now expected to reconfigure the file descriptors. - Updated the message ids as per latest version of qemu spec: - Added VHOST_USER_GET_STATUS support - [Chenbo Xia] Add validate_msg_fds to set_staus message handler Adrian Moreno (1): vhost: add support for virtio get status message Maxime Coquelin (7): vhost: fix virtio ready flag check vhost: refactor Virtio ready check vhost: make some vDPA callbacks mandatory vhost: check vDPA configuration succeed vhost: add support for virtio status vdpa/ifc: enable status protocol feature vdpa/mlx5: enable status protocol feature drivers/vdpa/ifc/ifcvf_vdpa.c | 3 +- drivers/vdpa/mlx5/mlx5_vdpa.c | 3 +- lib/librte_vhost/rte_vdpa_dev.h | 14 ++-- lib/librte_vhost/rte_vhost.h | 4 ++ lib/librte_vhost/socket.c | 6 +- lib/librte_vhost/vdpa.c | 10 +++ lib/librte_vhost/vhost.c | 3 +- lib/librte_vhost/vhost.h | 11 +++ lib/librte_vhost/vhost_user.c | 117 +++++++++++++++++++++++++++----- lib/librte_vhost/vhost_user.h | 7 +- 10 files changed, 148 insertions(+), 30 deletions(-)