Received: by 2002:a05:6602:18e:0:0:0:0 with SMTP id m14csp3092855ioo; Tue, 24 May 2022 12:54:07 -0700 (PDT) X-Google-Smtp-Source: ABdhPJyFw4fzBQqwktGgdT8H95iyn1HMKXHH3aaE+If9IDoYfzGz4cJC6qbvKbhbA24YnXEImrLB X-Received: by 2002:a17:903:2143:b0:162:15c2:e4c6 with SMTP id s3-20020a170903214300b0016215c2e4c6mr14091663ple.100.1653422046802; Tue, 24 May 2022 12:54:06 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1653422046; cv=none; d=google.com; s=arc-20160816; b=quEGIFzSW5YBwJRj4QNteG36RBmkIWKZLZFNRyVbo7CxH/CH2yh85X9aYeOyzxgbQf ThC9JQnenu138+Cxh9VXnkyIQbP2DEMglxUsPNKGFalkO1E7/SXhkocR8g91pmM2O55C kXTk+JJ5+Iyf8HYro4sbUyDPcIDTUky0r7xmLr6Gq247lJE2GFB2IDH8WLZ8M0D3goZC XpubbnYZMZcKtdKYhFsOGa7Ky+N/NykwetB+3evycRpwRxnT8zpDtiPKSv7PQy+ujdlC 2IfwsKOwH7qBdkBnr1UIsxXUUTgYBBQ8ByLZ0J1qkJu0eYkDo1wYXEh/UAEKsF/dFd3O ZS0g== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=iHJ6PFjviDqPYy85yFDxjKt/WK/68mxqW6ae6Xic7iM=; b=TYpXLHPMGl0q3ljK4axU9SO0FXV32GSW2rUzasnrun7u5/l/HPNOVS0SOHqn71I5hB dQS/eWRsJGWbR/cyS8LbsZlrR080hD9Eloq+v8JyvEPMtCHm8OLvCSKZ8KOl24V4xqEG KPvti0CkoU9H9C4GHnjEQpF6PFI5sFOkC9eYIUUk0XX8SBDLUrVmD29dB+Zxshr1t9aJ l1IM/r8oBxbKvYH8NeWvYbPl50R6zwLzWhz+aCHryr/V0+dtEEPs7/5w9y/PEabxZWdi 5/Oqloa3eZs1i2J0b2Ug6A8/svP8QbGADdHDyOUomO4hoadr8INa9LAIUzm2Ws9sA+/C vAcg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@redhat.com header.s=mimecast20190719 header.b=VEdcC4zN; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=redhat.com Return-Path: Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id f7-20020a656287000000b003c626baab13si7533424pgv.192.2022.05.24.12.53.55; Tue, 24 May 2022 12:54:06 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass header.i=@redhat.com header.s=mimecast20190719 header.b=VEdcC4zN; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=redhat.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S239842AbiEXRGn (ORCPT + 99 others); Tue, 24 May 2022 13:06:43 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:58040 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S237636AbiEXRGg (ORCPT ); Tue, 24 May 2022 13:06:36 -0400 Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.129.124]) by lindbergh.monkeyblade.net (Postfix) with ESMTP id CFBFE7E1FD for ; Tue, 24 May 2022 10:06:34 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1653411993; 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=iHJ6PFjviDqPYy85yFDxjKt/WK/68mxqW6ae6Xic7iM=; b=VEdcC4zNghKVe5NrRJllLsq45Pt1eOBL8uN1M7+EbK46iDQ47e6x+G+AL8QMnCRpA/MjT7 X+aC0OggGk1ThOVh/YM67hUbtqfQuGYQ3jUyOgdXlwSBUCtFZNtG5eNHF1kV1E6/MvLehX QDDeyIyngO68rDHyLaMb3Yh9sdXES0s= Received: from mimecast-mx02.redhat.com (mx3-rdu2.redhat.com [66.187.233.73]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id us-mta-595-4c-QiSYPMp6N3M1c3Boy5g-1; Tue, 24 May 2022 13:06:28 -0400 X-MC-Unique: 4c-QiSYPMp6N3M1c3Boy5g-1 Received: from smtp.corp.redhat.com (int-mx04.intmail.prod.int.rdu2.redhat.com [10.11.54.4]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx02.redhat.com (Postfix) with ESMTPS id 18366299E776; Tue, 24 May 2022 17:06:27 +0000 (UTC) Received: from eperezma.remote.csb (unknown [10.39.195.73]) by smtp.corp.redhat.com (Postfix) with ESMTP id 9204A2026D64; Tue, 24 May 2022 17:06:22 +0000 (UTC) From: =?UTF-8?q?Eugenio=20P=C3=A9rez?= To: netdev@vger.kernel.org, virtualization@lists.linux-foundation.org, Jason Wang , "Michael S. Tsirkin" , kvm@vger.kernel.org, linux-kernel@vger.kernel.org Cc: Parav Pandit , Zhang Min , hanand@xilinx.com, Zhu Lingshan , tanuj.kamde@amd.com, gautam.dawar@amd.com, Christophe JAILLET , Xie Yongji , dinang@xilinx.com, habetsm.xilinx@gmail.com, Eli Cohen , pabloc@xilinx.com, lvivier@redhat.com, Dan Carpenter , lulu@redhat.com, Wu Zongyong , eperezma@redhat.com, ecree.xilinx@gmail.com, Piotr.Uminski@intel.com, martinpo@xilinx.com, Stefano Garzarella , Si-Wei Liu , Longpeng , martinh@xilinx.com Subject: [PATCH v2 2/4] vhost-vdpa: introduce STOP backend feature bit Date: Tue, 24 May 2022 19:06:08 +0200 Message-Id: <20220524170610.2255608-3-eperezma@redhat.com> In-Reply-To: <20220524170610.2255608-1-eperezma@redhat.com> References: <20220524170610.2255608-1-eperezma@redhat.com> MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-Scanned-By: MIMEDefang 2.78 on 10.11.54.4 X-Spam-Status: No, score=-3.5 required=5.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,RCVD_IN_DNSWL_LOW, SPF_HELO_NONE,SPF_NONE,T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Userland knows if it can stop the device or not by checking this feature bit. It's only offered if the vdpa driver backend implements the stop() operation callback, and try to set it if the backend does not offer that callback is an error. Signed-off-by: Eugenio PĂ©rez --- drivers/vhost/vdpa.c | 16 +++++++++++++++- include/uapi/linux/vhost_types.h | 2 ++ 2 files changed, 17 insertions(+), 1 deletion(-) diff --git a/drivers/vhost/vdpa.c b/drivers/vhost/vdpa.c index 1f1d1c425573..32713db5831d 100644 --- a/drivers/vhost/vdpa.c +++ b/drivers/vhost/vdpa.c @@ -347,6 +347,14 @@ static long vhost_vdpa_set_config(struct vhost_vdpa *v, return 0; } +static bool vhost_vdpa_can_stop(const struct vhost_vdpa *v) +{ + struct vdpa_device *vdpa = v->vdpa; + const struct vdpa_config_ops *ops = vdpa->config; + + return ops->stop; +} + static long vhost_vdpa_get_features(struct vhost_vdpa *v, u64 __user *featurep) { struct vdpa_device *vdpa = v->vdpa; @@ -575,7 +583,11 @@ static long vhost_vdpa_unlocked_ioctl(struct file *filep, if (cmd == VHOST_SET_BACKEND_FEATURES) { if (copy_from_user(&features, featurep, sizeof(features))) return -EFAULT; - if (features & ~VHOST_VDPA_BACKEND_FEATURES) + if (features & ~(VHOST_VDPA_BACKEND_FEATURES | + BIT_ULL(VHOST_BACKEND_F_STOP))) + return -EOPNOTSUPP; + if ((features & BIT_ULL(VHOST_BACKEND_F_STOP)) && + !vhost_vdpa_can_stop(v)) return -EOPNOTSUPP; vhost_set_backend_features(&v->vdev, features); return 0; @@ -624,6 +636,8 @@ static long vhost_vdpa_unlocked_ioctl(struct file *filep, break; case VHOST_GET_BACKEND_FEATURES: features = VHOST_VDPA_BACKEND_FEATURES; + if (vhost_vdpa_can_stop(v)) + features |= BIT_ULL(VHOST_BACKEND_F_STOP); if (copy_to_user(featurep, &features, sizeof(features))) r = -EFAULT; break; diff --git a/include/uapi/linux/vhost_types.h b/include/uapi/linux/vhost_types.h index 634cee485abb..2758e665791b 100644 --- a/include/uapi/linux/vhost_types.h +++ b/include/uapi/linux/vhost_types.h @@ -161,5 +161,7 @@ struct vhost_vdpa_iova_range { * message */ #define VHOST_BACKEND_F_IOTLB_ASID 0x3 +/* Stop device from processing virtqueue buffers */ +#define VHOST_BACKEND_F_STOP 0x4 #endif -- 2.27.0