From patchwork Tue Jun 9 17:02:14 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Stefan Hajnoczi X-Patchwork-Id: 281030 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-6.5 required=3.0 tests=DKIM_INVALID,DKIM_SIGNED, HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH,MAILING_LIST_MULTI, MIME_BASE64_TEXT,SIGNED_OFF_BY,SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 28D45C433DF for ; Tue, 9 Jun 2020 17:24:47 +0000 (UTC) Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id E883820774 for ; Tue, 9 Jun 2020 17:24:46 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=fail reason="signature verification failed" (1024-bit key) header.d=redhat.com header.i=@redhat.com header.b="BlDORSuM" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org E883820774 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=redhat.com Authentication-Results: mail.kernel.org; spf=pass smtp.mailfrom=qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org Received: from localhost ([::1]:49934 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1jihzS-0002Vx-6i for qemu-devel@archiver.kernel.org; Tue, 09 Jun 2020 13:24:46 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:51776) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1jihec-0004Kc-NB for qemu-devel@nongnu.org; Tue, 09 Jun 2020 13:03:14 -0400 Received: from us-smtp-delivery-1.mimecast.com ([205.139.110.120]:30875 helo=us-smtp-1.mimecast.com) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.90_1) (envelope-from ) id 1jiheb-0007aQ-NT for qemu-devel@nongnu.org; Tue, 09 Jun 2020 13:03:14 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1591722192; 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: in-reply-to:in-reply-to:references:references; bh=TkQ44PTxX2eS9NNAe6MLYdIuw4/KeDlhn5YNPr177VY=; b=BlDORSuMGV844JKEHfmxUuxqv+iUJUJuhur3pMBtARCGlm8C+aZnQEKlVdAEg3G/d64rn3 XGvjWABKlgPcj20YvS0crSWwAzp2prQMjjhoZQ5jcdXnRXTY4WUHv2zfd9wRNfTlgn6V5G bG2kohnJd1jtS6zvs//RKp03KVN70oc= 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-294-9LnoJ3V8PnSPE46RUhlCJA-1; Tue, 09 Jun 2020 13:03:11 -0400 X-MC-Unique: 9LnoJ3V8PnSPE46RUhlCJA-1 Received: from smtp.corp.redhat.com (int-mx04.intmail.prod.int.phx2.redhat.com [10.5.11.14]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx01.redhat.com (Postfix) with ESMTPS id D433A107ACF4; Tue, 9 Jun 2020 17:03:09 +0000 (UTC) Received: from localhost (ovpn-115-52.ams2.redhat.com [10.36.115.52]) by smtp.corp.redhat.com (Postfix) with ESMTP id 83D8F5D9E4; Tue, 9 Jun 2020 17:02:58 +0000 (UTC) From: Stefan Hajnoczi To: qemu-devel@nongnu.org Subject: [PATCH v2 3/7] docs: document non-net VHOST_USER_GET_FEATURES behavior Date: Tue, 9 Jun 2020 18:02:14 +0100 Message-Id: <20200609170218.246468-4-stefanha@redhat.com> In-Reply-To: <20200609170218.246468-1-stefanha@redhat.com> References: <20200609170218.246468-1-stefanha@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.79 on 10.5.11.14 X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Received-SPF: pass client-ip=205.139.110.120; envelope-from=stefanha@redhat.com; helo=us-smtp-1.mimecast.com X-detected-operating-system: by eggs.gnu.org: First seen = 2020/06/09 02:44:16 X-ACL-Warn: Detected OS = Linux 2.2.x-3.x [generic] [fuzzy] X-Spam_score_int: -3 X-Spam_score: -0.4 X-Spam_bar: / X-Spam_report: (-0.4 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, MIME_BASE64_TEXT=1.741, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H4=0.001, RCVD_IN_MSPIKE_WL=0.001, SPF_PASS=-0.001 autolearn=_AUTOLEARN X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Kevin Wolf , Fam Zheng , Thomas Huth , Eduardo Habkost , qemu-block@nongnu.org, "Michael S. Tsirkin" , Laurent Vivier , jasowang@redhat.com, cohuck@redhat.com, Stefan Hajnoczi , "Dr. David Alan Gilbert" , Raphael Norwitz , Ben Walker , "Gonglei \(Arei\)" , Gerd Hoffmann , =?utf-8?q?Marc-Andr=C3=A9_Lureau?= , Paolo Bonzini , Max Reitz , Sebastien Boeuf Errors-To: qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org Sender: "Qemu-devel" QEMU enabled several feature bits for non-net devices without allowing the device backend to control them. This only works when the device backend implements support for those features. It won't work for new features like the packed virtqueue layout, where proper feature negotiation will be needed. Document the legacy behavior and specify that device backends must report features so that we can avoid problems in the future. Cc: Ben Walker Cc: Sebastien Boeuf Signed-off-by: Stefan Hajnoczi --- CCing SPDK and cloud-hypervisor folks in case they are affected. DPDK isn't affected since vhost-user-net performs full feature negotiation. --- docs/interop/vhost-user.rst | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/docs/interop/vhost-user.rst b/docs/interop/vhost-user.rst index 3b1b6602c7..dfadee411d 100644 --- a/docs/interop/vhost-user.rst +++ b/docs/interop/vhost-user.rst @@ -290,6 +290,27 @@ bit was dedicated for this purpose:: #define VHOST_USER_F_PROTOCOL_FEATURES 30 +Feature negotiation +------------------- +The master fetches features from the backend using the +``VHOST_USER_GET_FEATURES`` message. The feature bits correspond to those from +the virtio specification, VHOST_F_LOG_ALL (26), and +``VHOST_USER_F_PROTOCOL_FEATURES`` (30). + +Backends must report all supported feature bits. If a feature bit is set then +the master may set it in the ``VHOST_USER_SET_FEATURES`` message. If a feature +bit is cleared then the master must not set it in the +``VHOST_USER_SET_FEATURES`` message. + +For devices other than the networking device, masters may assume the following +feature bits are always set in ``VHOST_USER_GET_FEATURES`` for compatibility +with legacy backend implementations that do not report them correctly: +* ``VIRTIO_F_RING_INDIRECT_DESC`` +* ``VIRTIO_F_RING_EVENT_IDX`` +* ``VIRTIO_F_VERSION_1`` +* ``VIRTIO_F_NOTIFY_ON_EMPTY`` +* ``VIRTIO_F_ANY_LAYOUT`` + Starting and stopping rings ---------------------------