From patchwork Tue Dec 5 08:34:38 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Cindy Lu X-Patchwork-Id: 173798 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:bcd1:0:b0:403:3b70:6f57 with SMTP id r17csp3287937vqy; Tue, 5 Dec 2023 00:36:04 -0800 (PST) X-Google-Smtp-Source: AGHT+IHt4xs90WCnecC4DdXBbRpmjTGSVBmMzztxUQvp4T5B4hAo00JGwEVnCijKN1CUdYe3wx3t X-Received: by 2002:a05:6808:1153:b0:3b8:b063:adfc with SMTP id u19-20020a056808115300b003b8b063adfcmr6612059oiu.89.1701765364057; Tue, 05 Dec 2023 00:36:04 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1701765364; cv=none; d=google.com; s=arc-20160816; b=p+9YgFK807S1eHBn3Az/xmdsKQ9IX7kOGdoKd6h8y330CJidh5H9L+O8kl+F7gD30m KYBxIeFsMTXQMaR/Xw/E0P4sXEVP3ZqeTh/Zsq1I99ZcHfZMFqfJUYyrnvudiqn7T7vG 9PJY/+TpZlzURRH6BPmr6A776ROzMR35iXMg4h01gv+uU6cwLv//Pj9k6iW0t/bzAwnJ 47BXlsEY3s9EdRTUZNW6ASWoFiNn3vSJvHKgDQiuK8cnbM7JU9u18jqVJv6p851p4Cx+ 7TpY8OBGtz7UvuXdP8UR0wRZHjrr3kFz/1clqaeB26eJHb7Ugg/Xk668gST0Jke2cLFL mWGA== 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:to:from :dkim-signature; bh=PvXGrTDaK1+8fbsQp8oZ7MPiXUC1xBJXWn44I4Pe5Yo=; fh=ARFoO5Pk7SniYIzyAg9Z8eUcw3AUCiaEHOgWusT66QQ=; b=PveX8BhDqtGrvW7CGA4AsuonKUs+htaVQK9P9qXnDRV/faSCYweUH1g1i+jhHow0uO 2AcLziZpvZDaBOXoYNg/cwGv5wtj2898QSxoCjlqKKJZ3C+0IYDaX2foCUpT+pDmeP6/ 25oq0X2HQ9f4IK4A6wworaEGZQ98Vm6rastTw9XpLvBmNMJxFy411iAY9+Exyv4/f4Rl noCHIt+w5TIRpHicN9lWrJQwM80qneDJUf/iMxsM7rOgL32OV8DXPCBfTBAxbR75RZbf jISCBKwWhy9LL4G/RxnNyZ1YFP4RORily3cHsl8noFus7j3+XVQb0c4lktpbqOLT52JD /A3g== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@redhat.com header.s=mimecast20190719 header.b=hgJWgnAG; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.32 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=redhat.com Received: from agentk.vger.email (agentk.vger.email. [23.128.96.32]) by mx.google.com with ESMTPS id t25-20020a056a00139900b006ce5ff97f61si2016981pfg.65.2023.12.05.00.36.03 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 05 Dec 2023 00:36:04 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.32 as permitted sender) client-ip=23.128.96.32; Authentication-Results: mx.google.com; dkim=pass header.i=@redhat.com header.s=mimecast20190719 header.b=hgJWgnAG; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.32 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=redhat.com Received: from out1.vger.email (depot.vger.email [IPv6:2620:137:e000::3:0]) by agentk.vger.email (Postfix) with ESMTP id 1300A8081F7A; Tue, 5 Dec 2023 00:35:25 -0800 (PST) X-Virus-Status: Clean X-Virus-Scanned: clamav-milter 0.103.11 at agentk.vger.email Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1344825AbjLEIez (ORCPT + 99 others); Tue, 5 Dec 2023 03:34:55 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:33088 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229980AbjLEIex (ORCPT ); Tue, 5 Dec 2023 03:34:53 -0500 Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.133.124]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 586ACFA for ; Tue, 5 Dec 2023 00:35:00 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1701765299; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=PvXGrTDaK1+8fbsQp8oZ7MPiXUC1xBJXWn44I4Pe5Yo=; b=hgJWgnAGmd8CwrnaiZfIdqpwngHHql0N0JA9LfFwNMF00wfyBxzcCm9cYoI/sy9NMR/dqk A34gq3/fIQBOmLrfmfQMWKH1Qxo8h8T9tYgS2hzfOiSyHavD7JurwTa1WIWznZtbDMehjc diNT7OtYR4VOWt2PLJjTXPWVBfR8We4= Received: from mimecast-mx02.redhat.com (mx-ext.redhat.com [66.187.233.73]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-180-nLPidf_8NBSXCDQYWq1QDQ-1; Tue, 05 Dec 2023 03:34:57 -0500 X-MC-Unique: nLPidf_8NBSXCDQYWq1QDQ-1 Received: from smtp.corp.redhat.com (int-mx06.intmail.prod.int.rdu2.redhat.com [10.11.54.6]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by mimecast-mx02.redhat.com (Postfix) with ESMTPS id A499C1C068DD; Tue, 5 Dec 2023 08:34:57 +0000 (UTC) Received: from server.redhat.com (unknown [10.72.112.70]) by smtp.corp.redhat.com (Postfix) with ESMTP id 248002166B31; Tue, 5 Dec 2023 08:34:54 +0000 (UTC) From: Cindy Lu To: lulu@redhat.com, jasowang@redhat.com, mst@redhat.com, xieyongji@bytedance.com, linux-kernel@vger.kernel.org, maxime.coquelin@redhat.com Subject: [PATCH v3 1/7] vdpa: Move struct vdpa_vq_state to uAPI Date: Tue, 5 Dec 2023 16:34:38 +0800 Message-Id: <20231205083444.3029239-2-lulu@redhat.com> In-Reply-To: <20231205083444.3029239-1-lulu@redhat.com> References: <20231205083444.3029239-1-lulu@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 3.4.1 on 10.11.54.6 X-Spam-Status: No, score=-0.9 required=5.0 tests=DKIMWL_WL_HIGH,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS, MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS,T_SCC_BODY_TEXT_LINE autolearn=unavailable autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on agentk.vger.email Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-Greylist: Sender passed SPF test, not delayed by milter-greylist-4.6.4 (agentk.vger.email [0.0.0.0]); Tue, 05 Dec 2023 00:35:25 -0800 (PST) X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1784430318241338831 X-GMAIL-MSGID: 1784430318241338831 Move struct vdpa_vq_state to uAPI for vduse reconnect. Userspace and kernel will use this structure to synchronize the vq status Signed-off-by: Cindy Lu --- include/linux/vdpa.h | 29 +---------------------------- include/uapi/linux/vdpa.h | 31 +++++++++++++++++++++++++++++++ 2 files changed, 32 insertions(+), 28 deletions(-) diff --git a/include/linux/vdpa.h b/include/linux/vdpa.h index 43f59ef10cc9..62ce97bce934 100644 --- a/include/linux/vdpa.h +++ b/include/linux/vdpa.h @@ -8,6 +8,7 @@ #include #include #include +#include /** * struct vdpa_calllback - vDPA callback definition. @@ -29,34 +30,6 @@ struct vdpa_notification_area { resource_size_t size; }; -/** - * struct vdpa_vq_state_split - vDPA split virtqueue state - * @avail_index: available index - */ -struct vdpa_vq_state_split { - u16 avail_index; -}; - -/** - * struct vdpa_vq_state_packed - vDPA packed virtqueue state - * @last_avail_counter: last driver ring wrap counter observed by device - * @last_avail_idx: device available index - * @last_used_counter: device ring wrap counter - * @last_used_idx: used index - */ -struct vdpa_vq_state_packed { - u16 last_avail_counter:1; - u16 last_avail_idx:15; - u16 last_used_counter:1; - u16 last_used_idx:15; -}; - -struct vdpa_vq_state { - union { - struct vdpa_vq_state_split split; - struct vdpa_vq_state_packed packed; - }; -}; struct vdpa_mgmt_dev; diff --git a/include/uapi/linux/vdpa.h b/include/uapi/linux/vdpa.h index 54b649ab0f22..f4bc3589685e 100644 --- a/include/uapi/linux/vdpa.h +++ b/include/uapi/linux/vdpa.h @@ -7,6 +7,8 @@ #ifndef _UAPI_LINUX_VDPA_H_ #define _UAPI_LINUX_VDPA_H_ +#include + #define VDPA_GENL_NAME "vdpa" #define VDPA_GENL_VERSION 0x1 @@ -60,4 +62,33 @@ enum vdpa_attr { VDPA_ATTR_MAX, }; +/** + * struct vdpa_vq_state_split - vDPA split virtqueue state + * @avail_index: available index + */ +struct vdpa_vq_state_split { + __u16 avail_index; +}; + +/** + * struct vdpa_vq_state_packed - vDPA packed virtqueue state + * @last_avail_counter: last driver ring wrap counter observed by device + * @last_avail_idx: device available index + * @last_used_counter: device ring wrap counter + * @last_used_idx: used index + */ +struct vdpa_vq_state_packed { + __u16 last_avail_counter : 1; + __u16 last_avail_idx : 15; + __u16 last_used_counter : 1; + __u16 last_used_idx : 15; +}; + +struct vdpa_vq_state { + union { + struct vdpa_vq_state_split split; + struct vdpa_vq_state_packed packed; + }; +}; + #endif From patchwork Tue Dec 5 08:34:39 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Cindy Lu X-Patchwork-Id: 173799 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:bcd1:0:b0:403:3b70:6f57 with SMTP id r17csp3288005vqy; Tue, 5 Dec 2023 00:36:12 -0800 (PST) X-Google-Smtp-Source: AGHT+IEMWELxjdMZGLr7mdVUvclCdbzjmavdgySDDNELUZEDbPWdo6r9eydILaUBahnG1ZG4xAyO X-Received: by 2002:a05:6358:2484:b0:16d:b577:e9f1 with SMTP id m4-20020a056358248400b0016db577e9f1mr7136003rwc.9.1701765372548; Tue, 05 Dec 2023 00:36:12 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1701765372; cv=none; d=google.com; s=arc-20160816; b=0BSM7drF17SJCcj61QbqyUMj8IO7QzzydJ2xP8vjpnZ6UghWsSJjwMhXWc2/7SLNdg cyOFeHYpsNAvzQOIE8bCs7NDIMRt3W5soIqSxvD/hXWvZJGHwJyAhHBNGwocr+crd9i2 ZRG9mEy9ceFDvofAxy1VUY1xOji0m1voelb972rHHmZZaPMhFuMsLHwSYZFR4D8A8XZk 78LgfBS6IYFuKU64Eft4x8edGH1q4ZWe1mkr7/5goMUwKO8h3MgtTuzWRmFVZXgqoBIw lSZ+Y7T156hyQ8i7FRW4AFl4MwM5Zd2Z8avuIDHK2TOm1GKUh7MVTHmG6gvdziyGPD3b 4faw== 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:to:from :dkim-signature; bh=Go5CbagaE3XYKeSXAgFuW3lKr5JwgDqKZNKpmj7+xFw=; fh=ARFoO5Pk7SniYIzyAg9Z8eUcw3AUCiaEHOgWusT66QQ=; b=H5NYiFFJzQOAQF63G9DL37RMbVyw9IOQXs+6Yq5t6C9Na5am9npBSXFLypG2s9BIn6 ldvMeN+J+flMcsUcv3aKHfD+8j8Bgd5++Gdpszm7I9sqP5bTzHiQzs0evHzzb8+izLsh wDQOZGw/MpctRbWMbpjPD++z+hXCMEMhQ0LW1XboVvSghkPeI4vyyJuvM8PUwsJp3gVK wwSdUBtoCp30DXe0LldxoKVvQoFqoUzpe4g6PcnRDUs6HgJzlHAjRVeNARWCnjfYmzDc tOSjdbohKSjGKX1Iqur1OuvhoxvaYwYG6FlxyaWodx7NcV+0LpPc0zkaKkANTh2xhjju hf8g== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@redhat.com header.s=mimecast20190719 header.b="frjKNqq/"; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:3 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=redhat.com Received: from lipwig.vger.email (lipwig.vger.email. [2620:137:e000::3:3]) by mx.google.com with ESMTPS id s1-20020a056a0008c100b006be04b8c3basi9509333pfu.178.2023.12.05.00.36.11 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 05 Dec 2023 00:36:12 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:3 as permitted sender) client-ip=2620:137:e000::3:3; Authentication-Results: mx.google.com; dkim=pass header.i=@redhat.com header.s=mimecast20190719 header.b="frjKNqq/"; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:3 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=redhat.com Received: from out1.vger.email (depot.vger.email [IPv6:2620:137:e000::3:0]) by lipwig.vger.email (Postfix) with ESMTP id 648B68077FF6; Tue, 5 Dec 2023 00:35:15 -0800 (PST) X-Virus-Status: Clean X-Virus-Scanned: clamav-milter 0.103.11 at lipwig.vger.email Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S231773AbjLEIfB (ORCPT + 99 others); Tue, 5 Dec 2023 03:35:01 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:33110 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229980AbjLEIe4 (ORCPT ); Tue, 5 Dec 2023 03:34:56 -0500 Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.133.124]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 36CB3FA for ; Tue, 5 Dec 2023 00:35:03 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1701765302; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=Go5CbagaE3XYKeSXAgFuW3lKr5JwgDqKZNKpmj7+xFw=; b=frjKNqq/4j1UeHsJBjvatzMSKl3Ef2Dd2rK2mWhccdu/iVRgEPcLFhqHVG0C1u3UQNARe0 BFQDGDAiUwe0GsTkyHj3GazIINuT72sokoiXomOqvrMbbRq1/Zl3uhEvauEsI1IPQwTAtt 92d+x+0h3qQKblxs/O599gryTK16Et8= Received: from mimecast-mx02.redhat.com (mx-ext.redhat.com [66.187.233.73]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-88-0e4_gnNANvCgaBGDcw9MEw-1; Tue, 05 Dec 2023 03:35:01 -0500 X-MC-Unique: 0e4_gnNANvCgaBGDcw9MEw-1 Received: from smtp.corp.redhat.com (int-mx06.intmail.prod.int.rdu2.redhat.com [10.11.54.6]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by mimecast-mx02.redhat.com (Postfix) with ESMTPS id C61FA3C0263D; Tue, 5 Dec 2023 08:35:00 +0000 (UTC) Received: from server.redhat.com (unknown [10.72.112.70]) by smtp.corp.redhat.com (Postfix) with ESMTP id 44A6D2166B31; Tue, 5 Dec 2023 08:34:57 +0000 (UTC) From: Cindy Lu To: lulu@redhat.com, jasowang@redhat.com, mst@redhat.com, xieyongji@bytedance.com, linux-kernel@vger.kernel.org, maxime.coquelin@redhat.com Subject: [PATCH v3 2/7] vduse: Add new uAPI for vduse reconnection Date: Tue, 5 Dec 2023 16:34:39 +0800 Message-Id: <20231205083444.3029239-3-lulu@redhat.com> In-Reply-To: <20231205083444.3029239-1-lulu@redhat.com> References: <20231205083444.3029239-1-lulu@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 3.4.1 on 10.11.54.6 X-Spam-Status: No, score=-0.9 required=5.0 tests=DKIMWL_WL_HIGH,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS, MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS,T_SCC_BODY_TEXT_LINE autolearn=unavailable autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lipwig.vger.email Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-Greylist: Sender passed SPF test, not delayed by milter-greylist-4.6.4 (lipwig.vger.email [0.0.0.0]); Tue, 05 Dec 2023 00:35:15 -0800 (PST) X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1784430327619252035 X-GMAIL-MSGID: 1784430327619252035 To synchronize the information for reconnection, add a new structure struct vduse_dev_reconnect_data to save the device-related information, Add the VDUSE_RECONNCT_MMAP_SIZE for the size of mapped memory for each vq and device status. Signed-off-by: Cindy Lu --- include/uapi/linux/vduse.h | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/include/uapi/linux/vduse.h b/include/uapi/linux/vduse.h index 11bd48c72c6c..c22838247814 100644 --- a/include/uapi/linux/vduse.h +++ b/include/uapi/linux/vduse.h @@ -350,4 +350,26 @@ struct vduse_dev_response { }; }; +/** + * struct vduse_dev_reconnect_data - saved the reconnect info for device + * @version; version for userspace APP + * @reconnected: indetify if this is reconnected.userspace APP needs set this + * to VDUSE_RECONNECT, while reconnecting.kernel will use this + * to indetify if this is reconnect + * @features; Device features negotiated in the last connect. + * @status; Device status in last reconnect + */ + +struct vduse_dev_reconnect_data { + __u32 version; +#define VDUSE_RECONNECT 1 +#define VDUSE_NOT_RECONNECT 0 + __u32 reconnected; + __u64 features; + __u8 status; +}; + +/* the reconnection mmap size for each VQ and dev status */ +#define VDUSE_RECONNCT_MMAP_SIZE PAGE_SIZE + #endif /* _UAPI_VDUSE_H_ */ From patchwork Tue Dec 5 08:34:40 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Cindy Lu X-Patchwork-Id: 173800 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:bcd1:0:b0:403:3b70:6f57 with SMTP id r17csp3288018vqy; Tue, 5 Dec 2023 00:36:13 -0800 (PST) X-Google-Smtp-Source: AGHT+IGmw1PA3px5JJoZtK/LRc0+yZFmC4Sv4qOLt6mTEtJEJlVmJHOe9cLGgFPLt88XEUirmJtM X-Received: by 2002:a17:902:778d:b0:1d0:b6d1:d442 with SMTP id o13-20020a170902778d00b001d0b6d1d442mr1055145pll.62.1701765373636; Tue, 05 Dec 2023 00:36:13 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1701765373; cv=none; d=google.com; s=arc-20160816; b=NYIXqvRhXt7f+/O3LY/fM7HUPYGLH8ujXHx57dG18SSYggGZBSJ3tMXWgGvesh+692 qEtyNQWb9V8XYqkopsYVWYACgI0yRYo19b8n3jLARb6gkaqxHZdp45lKhB0HOQ5oAO8U pnE/4JCEP0bCcWGRTy+CBzYaLaMl98WGrA4me2Wr7FxyeXDYwbiW95cUTwggEuLWyFM8 nBNt2jdPQR+efZiegv7xRc3dHdo5hIgs4XizbFr5fJ7awqFLbFH8+P2xDoNZbK6Tm6kD wulb67ZrAi3GsJiPtBrgJSDJfSYcyy5Qsz0Lh+UmCeQwB6AIC87iCCnWFonJKx+DQwgR RAmQ== 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:to:from :dkim-signature; bh=oONAYYTEgNjcC4Phz29fvyjfObj+V7u6RFkS9+bCyRY=; fh=ARFoO5Pk7SniYIzyAg9Z8eUcw3AUCiaEHOgWusT66QQ=; b=A+7SaJnxtnRd407jmzjbmZA/IuRJj9FZDncOxImDk6dzUoQVmsVcacovhIYHqAs1HH XldziGbzdCFc6uXez3AjSz8HbOJfvoo5XOM6i4o6VpNs8iRd5oLs3E4ijtKR04uRPiZ9 UrdR3JH3qAVJOaztkoDJUP3haT8chZp/gc1GR06jjltjPrhpUTbqslkKiFX3gWiJZW6J a3+aB9jOPr7g2mtXdOTr5DuqOGPW/KLdOUbf1bobE8kQlQq9R6RJupoI+kJ0mtP9srqM Rg6lKtIO2uYypROCcxII2gJDJV9jdmxiBm3AgI96ZZHm4Clqq86u6UZg5Yr3g75bC23W fb7Q== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@redhat.com header.s=mimecast20190719 header.b=euMKehM0; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:3 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=redhat.com Received: from lipwig.vger.email (lipwig.vger.email. [2620:137:e000::3:3]) by mx.google.com with ESMTPS id v186-20020a6389c3000000b005bda1051dacsi4625869pgd.471.2023.12.05.00.36.13 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 05 Dec 2023 00:36:13 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:3 as permitted sender) client-ip=2620:137:e000::3:3; Authentication-Results: mx.google.com; dkim=pass header.i=@redhat.com header.s=mimecast20190719 header.b=euMKehM0; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:3 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=redhat.com Received: from out1.vger.email (depot.vger.email [IPv6:2620:137:e000::3:0]) by lipwig.vger.email (Postfix) with ESMTP id E011F8077F8B; Tue, 5 Dec 2023 00:35:31 -0800 (PST) X-Virus-Status: Clean X-Virus-Scanned: clamav-milter 0.103.11 at lipwig.vger.email Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1344836AbjLEIfF (ORCPT + 99 others); Tue, 5 Dec 2023 03:35:05 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:33216 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1344835AbjLEIfC (ORCPT ); Tue, 5 Dec 2023 03:35:02 -0500 Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.129.124]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 4DB36138 for ; Tue, 5 Dec 2023 00:35:08 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1701765307; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=oONAYYTEgNjcC4Phz29fvyjfObj+V7u6RFkS9+bCyRY=; b=euMKehM04CKTsO86meJoF6ZcSpOiO5SlsKAUDSTv94pydl1ZNTU4+OfTb4Qb/7n/ockTRP fEACS9Ms7KJTUzoZigsSkXGQTBqAU7tS9qDl7sG3hPUr3VeJ6MKQkqPK0X2Aqdy+gl/iVi VT8YTLnzPn7wDZQpWth/Qlc4R3uonkY= Received: from mimecast-mx02.redhat.com (mimecast-mx02.redhat.com [66.187.233.88]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-119-w8Dp9Zc-MxWUoIp4NgUW3w-1; Tue, 05 Dec 2023 03:35:04 -0500 X-MC-Unique: w8Dp9Zc-MxWUoIp4NgUW3w-1 Received: from smtp.corp.redhat.com (int-mx06.intmail.prod.int.rdu2.redhat.com [10.11.54.6]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by mimecast-mx02.redhat.com (Postfix) with ESMTPS id E81AB101A52A; Tue, 5 Dec 2023 08:35:03 +0000 (UTC) Received: from server.redhat.com (unknown [10.72.112.70]) by smtp.corp.redhat.com (Postfix) with ESMTP id 669D92166B31; Tue, 5 Dec 2023 08:35:01 +0000 (UTC) From: Cindy Lu To: lulu@redhat.com, jasowang@redhat.com, mst@redhat.com, xieyongji@bytedance.com, linux-kernel@vger.kernel.org, maxime.coquelin@redhat.com Subject: [PATCH v3 3/7] vduse: Add new ioctl VDUSE_DEV_GET_CONFIG Date: Tue, 5 Dec 2023 16:34:40 +0800 Message-Id: <20231205083444.3029239-4-lulu@redhat.com> In-Reply-To: <20231205083444.3029239-1-lulu@redhat.com> References: <20231205083444.3029239-1-lulu@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 3.4.1 on 10.11.54.6 X-Spam-Status: No, score=-0.9 required=5.0 tests=DKIMWL_WL_HIGH,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS, MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS,T_SCC_BODY_TEXT_LINE autolearn=unavailable autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lipwig.vger.email Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-Greylist: Sender passed SPF test, not delayed by milter-greylist-4.6.4 (lipwig.vger.email [0.0.0.0]); Tue, 05 Dec 2023 00:35:32 -0800 (PST) X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1784430328420353484 X-GMAIL-MSGID: 1784430328420353484 The ioctl VDUSE_GET_RECONNECT_INFO is used by the Userspace App to get the device configuration space. Signed-off-by: Cindy Lu --- drivers/vdpa/vdpa_user/vduse_dev.c | 21 +++++++++++++++++++++ include/uapi/linux/vduse.h | 3 +++ 2 files changed, 24 insertions(+) diff --git a/drivers/vdpa/vdpa_user/vduse_dev.c b/drivers/vdpa/vdpa_user/vduse_dev.c index 26b7e29cb900..dd074a7b4bc7 100644 --- a/drivers/vdpa/vdpa_user/vduse_dev.c +++ b/drivers/vdpa/vdpa_user/vduse_dev.c @@ -1273,6 +1273,27 @@ static long vduse_dev_ioctl(struct file *file, unsigned int cmd, ret = 0; break; } + case VDUSE_DEV_GET_CONFIG: { + struct vduse_config_data config; + unsigned long size = offsetof(struct vduse_config_data, buffer); + + ret = -EFAULT; + if (copy_from_user(&config, argp, size)) + break; + + ret = -EINVAL; + if (config.offset > dev->config_size || config.length == 0 || + config.length > dev->config_size - config.offset) + break; + + if (copy_to_user(argp + size, dev->config + config.offset, + config.length)) { + ret = -EFAULT; + break; + } + ret = 0; + break; + } default: ret = -ENOIOCTLCMD; break; diff --git a/include/uapi/linux/vduse.h b/include/uapi/linux/vduse.h index c22838247814..5280042ced23 100644 --- a/include/uapi/linux/vduse.h +++ b/include/uapi/linux/vduse.h @@ -372,4 +372,7 @@ struct vduse_dev_reconnect_data { /* the reconnection mmap size for each VQ and dev status */ #define VDUSE_RECONNCT_MMAP_SIZE PAGE_SIZE +/* get device configuration space */ +#define VDUSE_DEV_GET_CONFIG _IOR(VDUSE_BASE, 0x1b, struct vduse_config_data) + #endif /* _UAPI_VDUSE_H_ */ From patchwork Tue Dec 5 08:34:41 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Cindy Lu X-Patchwork-Id: 173801 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:bcd1:0:b0:403:3b70:6f57 with SMTP id r17csp3288028vqy; Tue, 5 Dec 2023 00:36:15 -0800 (PST) X-Google-Smtp-Source: AGHT+IHsRWiLPseNLWe4GRAOZ73AaP0l2cZPrZoyIHqwEWigpJ+y8J/wgY/25OQkbYO6GxIL/j8u X-Received: by 2002:a05:6a21:2783:b0:18f:97c:3856 with SMTP id rn3-20020a056a21278300b0018f097c3856mr1384070pzb.48.1701765374743; Tue, 05 Dec 2023 00:36:14 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1701765374; cv=none; d=google.com; s=arc-20160816; b=eeFWmuy2EKhgXQodLQ6v4poUz5qrPeA5tEI9uyRi/+C7r6ycUA+TVykV3Gv27ri0K+ sQFu11AaEOTvIgMtPhTphRMj9uDxyic3YAZUt6BMbzOASjxC9LcuTaovwrvd3Xj4K7bT rEdyLSZ3IgzpMtrfyhq8dWN5RcKEVkTDGT6J8dxgzcJD1H4Pw4Hf9pZ66xkVEoL4mDFD /g2AT+GccvcoSHAK7fb4t/gy4bVBGOgg7/NW03pZINA9wPzGcpv10Mi8a7uli+jiVKK0 7hi1nNt3d9seRTV9sjLstassE8FZE4A3E9Jw8JK+LZUvpSkQkjCo7vgiHommPXAUgdVf M2OA== 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:to:from :dkim-signature; bh=vm1nuGxCCo/CoP2TcwoqlCKrZ6P/0ERKcylQR/oOFpM=; fh=ARFoO5Pk7SniYIzyAg9Z8eUcw3AUCiaEHOgWusT66QQ=; b=CLNCEemfzsZUKN4JvUsqESwmssrHzF4biR8NjvTDu+eNKd7Ah7RRP9WFYLzpWRIZls pWLvGMvJ23D7laPKAxeOdZByHhATAuj0DBCrpjjUZqGBuayXu4/klibnaJupWixjPuEr 9KIUhf8Ajg647Latnq/vJShT271nGiKdLPjdxJwNTmTZk5yrNew3j1Eg/JvePv8m7O/y Mx36arjsszkUlU+5Zip76vdgcC6pQBpy60WcClh5bGiPBhwLqkYga2Pnzdc9O6RAT2dK 6SXYP1XhgAiS4Yi+jXfN9vnG8wX5RkTio9ZIDRGG7V2/pgxR4eF9T+7bnNt5IelrB/Wx rYMg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@redhat.com header.s=mimecast20190719 header.b=KziZUvKa; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:3 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=redhat.com Received: from lipwig.vger.email (lipwig.vger.email. [2620:137:e000::3:3]) by mx.google.com with ESMTPS id n2-20020a056a000d4200b006ce3316c163si4944333pfv.78.2023.12.05.00.36.14 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 05 Dec 2023 00:36:14 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:3 as permitted sender) client-ip=2620:137:e000::3:3; Authentication-Results: mx.google.com; dkim=pass header.i=@redhat.com header.s=mimecast20190719 header.b=KziZUvKa; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:3 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=redhat.com Received: from out1.vger.email (depot.vger.email [IPv6:2620:137:e000::3:0]) by lipwig.vger.email (Postfix) with ESMTP id EB1078046BE9; Tue, 5 Dec 2023 00:36:05 -0800 (PST) X-Virus-Status: Clean X-Virus-Scanned: clamav-milter 0.103.11 at lipwig.vger.email Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1344791AbjLEIfj (ORCPT + 99 others); Tue, 5 Dec 2023 03:35:39 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:41338 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S234943AbjLEIfZ (ORCPT ); Tue, 5 Dec 2023 03:35:25 -0500 Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.133.124]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 23E3CD44 for ; Tue, 5 Dec 2023 00:35:31 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1701765330; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=vm1nuGxCCo/CoP2TcwoqlCKrZ6P/0ERKcylQR/oOFpM=; b=KziZUvKaWrOmDUUEL8hqW382o++zX/KjKNN6pNDNXQwFSjSRrxZEuttkjgEt1YY8jW0Ikk d7RSc4yVtpkcfFXZS0Yu4EiGOuvp50ec/cQXfKJAhEqpNnaEBu6pKT232ggcQiDLusA7np gYMj8fGHg6fi7QeQGU1Id1pvTR4Kg5g= Received: from mimecast-mx02.redhat.com (mimecast-mx02.redhat.com [66.187.233.88]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-652-vpdp_UpWMfi5ovLxqck8Uw-1; Tue, 05 Dec 2023 03:35:28 -0500 X-MC-Unique: vpdp_UpWMfi5ovLxqck8Uw-1 Received: from smtp.corp.redhat.com (int-mx01.intmail.prod.int.rdu2.redhat.com [10.11.54.1]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by mimecast-mx02.redhat.com (Postfix) with ESMTPS id 9C5D1185A780; Tue, 5 Dec 2023 08:35:28 +0000 (UTC) Received: from server.redhat.com (unknown [10.72.112.70]) by smtp.corp.redhat.com (Postfix) with ESMTP id 179543C25; Tue, 5 Dec 2023 08:35:25 +0000 (UTC) From: Cindy Lu To: lulu@redhat.com, jasowang@redhat.com, mst@redhat.com, xieyongji@bytedance.com, linux-kernel@vger.kernel.org, maxime.coquelin@redhat.com Subject: [PATCH v3 4/7] vduse: Add function to get/free the pages for reconnection Date: Tue, 5 Dec 2023 16:34:41 +0800 Message-Id: <20231205083444.3029239-5-lulu@redhat.com> In-Reply-To: <20231205083444.3029239-1-lulu@redhat.com> References: <20231205083444.3029239-1-lulu@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 3.4.1 on 10.11.54.1 X-Spam-Status: No, score=-0.9 required=5.0 tests=DKIMWL_WL_HIGH,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS, MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS,T_SCC_BODY_TEXT_LINE autolearn=unavailable autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lipwig.vger.email Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-Greylist: Sender passed SPF test, not delayed by milter-greylist-4.6.4 (lipwig.vger.email [0.0.0.0]); Tue, 05 Dec 2023 00:36:06 -0800 (PST) X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1784430329373529582 X-GMAIL-MSGID: 1784430329373529582 Add the function vduse_alloc_reconnnect_info_mem and vduse_alloc_reconnnect_info_mem These functions allow vduse to allocate and free memory for reconnection information. The amount of memory allocated is (vq_num + 1) pages. Page 0 is reserved for saving the dev reconnection information, which will be maintained by the Userspace App. Pages 1 to vq_num + 1 will be used to save the reconnection information for vqs. Signed-off-by: Cindy Lu --- drivers/vdpa/vdpa_user/vduse_dev.c | 64 ++++++++++++++++++++++++++++++ 1 file changed, 64 insertions(+) diff --git a/drivers/vdpa/vdpa_user/vduse_dev.c b/drivers/vdpa/vdpa_user/vduse_dev.c index dd074a7b4bc7..52ccde636406 100644 --- a/drivers/vdpa/vdpa_user/vduse_dev.c +++ b/drivers/vdpa/vdpa_user/vduse_dev.c @@ -41,6 +41,7 @@ #define VDUSE_IOVA_SIZE (128 * 1024 * 1024) #define VDUSE_MSG_DEFAULT_TIMEOUT 30 + struct vduse_virtqueue { u16 index; u16 num_max; @@ -57,6 +58,7 @@ struct vduse_virtqueue { struct vdpa_callback cb; struct work_struct inject; struct work_struct kick; + unsigned long vdpa_reconnect_vaddr; }; struct vduse_dev; @@ -106,6 +108,7 @@ struct vduse_dev { u32 vq_align; struct vduse_umem *umem; struct mutex mem_lock; + unsigned long vdpa_reconnect_vaddr; }; struct vduse_dev_msg { @@ -1030,6 +1033,57 @@ static int vduse_dev_reg_umem(struct vduse_dev *dev, return ret; } +static int vduse_alloc_reconnnect_info_mem(struct vduse_dev *dev) +{ + unsigned long vaddr = 0; + struct vduse_virtqueue *vq; + + for (int i = 0; i < dev->vq_num + 1; i++) { + if (i == 0) { + vaddr = __get_free_pages( + GFP_KERNEL | __GFP_ZERO, + get_order(VDUSE_RECONNCT_MMAP_SIZE)); + if (vaddr == 0) + return -ENOMEM; + dev->vdpa_reconnect_vaddr = vaddr; + } + + /*page 1~ vq_num + 1 save the reconnect info for vq*/ + vq = &dev->vqs[i]; + vaddr = __get_free_pages(GFP_KERNEL | __GFP_ZERO, + get_order(VDUSE_RECONNCT_MMAP_SIZE)); + if (vaddr == 0) + return -ENOMEM; + + vq->vdpa_reconnect_vaddr = vaddr; + } + + return 0; +} + +static int vduse_free_reconnnect_info_mem(struct vduse_dev *dev) +{ + struct vduse_virtqueue *vq; + + for (int i = 0; i < dev->vq_num + 1; i++) { + if (i == 0) { + if (dev->vdpa_reconnect_vaddr) + free_pages(dev->vdpa_reconnect_vaddr, + get_order(VDUSE_RECONNCT_MMAP_SIZE)); + dev->vdpa_reconnect_vaddr = 0; + } + + vq = &dev->vqs[i]; + + if (vq->vdpa_reconnect_vaddr) + free_pages(vq->vdpa_reconnect_vaddr, + get_order(VDUSE_RECONNCT_MMAP_SIZE)); + vq->vdpa_reconnect_vaddr = 0; + } + + return 0; +} + static long vduse_dev_ioctl(struct file *file, unsigned int cmd, unsigned long arg) { @@ -1411,6 +1465,8 @@ static int vduse_destroy_dev(char *name) mutex_unlock(&dev->lock); return -EBUSY; } + vduse_free_reconnnect_info_mem(dev); + dev->connected = true; mutex_unlock(&dev->lock); @@ -1563,9 +1619,17 @@ static int vduse_create_dev(struct vduse_dev_config *config, ret = PTR_ERR(dev->dev); goto err_dev; } + + ret = vduse_alloc_reconnnect_info_mem(dev); + if (ret < 0) + goto err_mem; + __module_get(THIS_MODULE); return 0; + +err_mem: + vduse_free_reconnnect_info_mem(dev); err_dev: idr_remove(&vduse_idr, dev->minor); err_idr: From patchwork Tue Dec 5 08:34:42 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Cindy Lu X-Patchwork-Id: 173802 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:bcd1:0:b0:403:3b70:6f57 with SMTP id r17csp3288048vqy; Tue, 5 Dec 2023 00:36:18 -0800 (PST) X-Google-Smtp-Source: AGHT+IFeg6xFSfeStg8pcZ0GydfzIQQyaD4nx1UtssL9AsjHlcFqby5MubhcW0ufdMgUj1gfe1H5 X-Received: by 2002:a05:6e02:f52:b0:35d:6c12:a6ee with SMTP id y18-20020a056e020f5200b0035d6c12a6eemr3822544ilj.2.1701765378122; Tue, 05 Dec 2023 00:36:18 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1701765378; cv=none; d=google.com; s=arc-20160816; b=Jt3ctkXImunCRoclJksyRMNBR8Ic9N76ILmgARn9kg35dg156KyM1GmzoUPQqTj19w K1FPt0d/or5CKKn8m8qC/YNZZIGSEOYdrLvIwc1CJzg8/PCN4d015yV0UoVSHFWdt8ci N1tEhW1U60BWALEk3a0HShUlje3GkDZ6OuSkfuS1ZBCQzbiQ/BT4A/CM1S1Iz3exC9w3 C3hy/ve28Z/f87AUa3w9LizQUmtJlTPAVhYsCCz8voluNIc8cJ7s23Q+hWFXEH3tubzY b6Zz+7ONw0GJ3bocjUaCE+KusJoklSOgnuK9URJyK2Ot3/Dbvb/hn07USomsKsu8Yrqp KMDg== 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:to:from :dkim-signature; bh=1EF7vfXUKmZ7w1vqKhCPA032G3uF9wOvyUGxj1cxm00=; fh=ARFoO5Pk7SniYIzyAg9Z8eUcw3AUCiaEHOgWusT66QQ=; b=S7oCN7A4A4zSs/WNzNJMF01oml5PZzumhyV6edn17TeuLdAzvmme+1MmhRsmm1He2l QzyWBIZSQm7CJ604QvSC+JHVjLzP1jImaLk+Ee3Fq+B8CFCOZYlr7CU1IauI9MQthZmA h5/6lU9JLO9VlHjJMIthfKjgdfYFw6sZ6wEmklF5nEIpvv118e4glfIdghsdBBQguLdH D3HZN6OO1atZ84hnB4kNPRlZAZHf+1rk195Yvn5zdplDYtiHLYKWAtwvzfvFzqZH3orM qep4/upTLPffinhVZFwmHhHeKqJeSZHmIRahmRkT7Fy33nby1r5sHSjysPZ3s7p85RJl X4sg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@redhat.com header.s=mimecast20190719 header.b=KVWExMcp; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.34 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=redhat.com Received: from howler.vger.email (howler.vger.email. [23.128.96.34]) by mx.google.com with ESMTPS id y16-20020a656c10000000b005c24fb6927csi9931064pgu.656.2023.12.05.00.36.17 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 05 Dec 2023 00:36:18 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.34 as permitted sender) client-ip=23.128.96.34; Authentication-Results: mx.google.com; dkim=pass header.i=@redhat.com header.s=mimecast20190719 header.b=KVWExMcp; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.34 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=redhat.com Received: from out1.vger.email (depot.vger.email [IPv6:2620:137:e000::3:0]) by howler.vger.email (Postfix) with ESMTP id B34B2801C939; Tue, 5 Dec 2023 00:36:10 -0800 (PST) X-Virus-Status: Clean X-Virus-Scanned: clamav-milter 0.103.11 at howler.vger.email Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S231751AbjLEIf7 (ORCPT + 99 others); Tue, 5 Dec 2023 03:35:59 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:41326 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S235458AbjLEIf2 (ORCPT ); Tue, 5 Dec 2023 03:35:28 -0500 Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.129.124]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 2D1E2185 for ; Tue, 5 Dec 2023 00:35:34 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1701765333; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=1EF7vfXUKmZ7w1vqKhCPA032G3uF9wOvyUGxj1cxm00=; b=KVWExMcplhPWc61Dx92bdtpNXGgOQcTWjHCMZtpOHIwJ+0JC7ffV0AlU70WT0Mf7mGgEQo 2lZD38dp6kdeDJHFNZhq9TR0ieg9bG8sbs0tdgUBGajtZLDSJPiuJMKghNoJN9yg8RD2S9 GCuJEeDK7mNlQnxxfSSBG12fmVJ3ajI= Received: from mimecast-mx02.redhat.com (mimecast-mx02.redhat.com [66.187.233.88]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-645-l76KXkNdNkaAjlgEfj5TDw-1; Tue, 05 Dec 2023 03:35:32 -0500 X-MC-Unique: l76KXkNdNkaAjlgEfj5TDw-1 Received: from smtp.corp.redhat.com (int-mx01.intmail.prod.int.rdu2.redhat.com [10.11.54.1]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by mimecast-mx02.redhat.com (Postfix) with ESMTPS id BCDB0879843; Tue, 5 Dec 2023 08:35:31 +0000 (UTC) Received: from server.redhat.com (unknown [10.72.112.70]) by smtp.corp.redhat.com (Postfix) with ESMTP id 3C87F3C25; Tue, 5 Dec 2023 08:35:28 +0000 (UTC) From: Cindy Lu To: lulu@redhat.com, jasowang@redhat.com, mst@redhat.com, xieyongji@bytedance.com, linux-kernel@vger.kernel.org, maxime.coquelin@redhat.com Subject: [PATCH v3 5/7] vduse: Add file operation for mmap Date: Tue, 5 Dec 2023 16:34:42 +0800 Message-Id: <20231205083444.3029239-6-lulu@redhat.com> In-Reply-To: <20231205083444.3029239-1-lulu@redhat.com> References: <20231205083444.3029239-1-lulu@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 3.4.1 on 10.11.54.1 X-Spam-Status: No, score=-0.9 required=5.0 tests=DKIMWL_WL_HIGH,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS, MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS,T_SCC_BODY_TEXT_LINE autolearn=unavailable autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on howler.vger.email Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-Greylist: Sender passed SPF test, not delayed by milter-greylist-4.6.4 (howler.vger.email [0.0.0.0]); Tue, 05 Dec 2023 00:36:10 -0800 (PST) X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1784430333140622638 X-GMAIL-MSGID: 1784430333140622638 Add the operation for mmap, This function will be used by the user space application to map the pages to the user space. Signed-off-by: Cindy Lu --- drivers/vdpa/vdpa_user/vduse_dev.c | 75 ++++++++++++++++++++++++++++++ 1 file changed, 75 insertions(+) diff --git a/drivers/vdpa/vdpa_user/vduse_dev.c b/drivers/vdpa/vdpa_user/vduse_dev.c index 52ccde636406..f55f415629de 100644 --- a/drivers/vdpa/vdpa_user/vduse_dev.c +++ b/drivers/vdpa/vdpa_user/vduse_dev.c @@ -1381,6 +1381,79 @@ static struct vduse_dev *vduse_dev_get_from_minor(int minor) return dev; } +static vm_fault_t vduse_vm_fault(struct vm_fault *vmf) +{ + struct vduse_dev *dev = vmf->vma->vm_file->private_data; + struct vm_area_struct *vma = vmf->vma; + u16 index = vma->vm_pgoff; + struct vduse_virtqueue *vq; + unsigned long vaddr; + + /* index 0 page reserved for vduse status*/ + if (index == 0) { + vaddr = dev->vdpa_reconnect_vaddr; + } else { + /* index 1+vq_number page reserved for vduse vqs*/ + vq = &dev->vqs[index - 1]; + vaddr = vq->vdpa_reconnect_vaddr; + } + if (remap_pfn_range(vma, vmf->address & PAGE_MASK, + PFN_DOWN(virt_to_phys((void *)vaddr)), + VDUSE_RECONNCT_MMAP_SIZE, vma->vm_page_prot)) + return VM_FAULT_SIGBUS; + return VM_FAULT_NOPAGE; +} + +static const struct vm_operations_struct vduse_vm_ops = { + .fault = vduse_vm_fault, +}; + +static int vduse_dev_mmap(struct file *file, struct vm_area_struct *vma) +{ + struct vduse_dev *dev = file->private_data; + unsigned long vaddr = 0; + unsigned long index = vma->vm_pgoff; + struct vduse_virtqueue *vq; + + if (vma->vm_end - vma->vm_start != PAGE_SIZE) + return -EINVAL; + if ((vma->vm_flags & VM_SHARED) == 0) + return -EINVAL; + + /*check if Userspace App map the page number larger than kernel allocated*/ + if (index > dev->vq_num + 1) + return -EINVAL; + + /* index 0 page reserved for vduse status*/ + if (index == 0) { + vaddr = dev->vdpa_reconnect_vaddr; + } else { + /* index 1+vq_number page reserved for vduse vqs*/ + vq = &dev->vqs[index - 1]; + vaddr = vq->vdpa_reconnect_vaddr; + } + /* Check whether the memory for the mmap was allocated by the kernel. + * If not, this device may not have been created/destroyed correctly. + */ + if (vaddr == 0) + return -EOPNOTSUPP; + + /* check if the address is page aligned, if not, + * this address maybe damaged + */ + if (virt_to_phys((void *)vaddr) & (PAGE_SIZE - 1)) + return -EINVAL; + + /* Check if the Userspace App has mapped the correct size */ + if (vma->vm_end - vma->vm_start != VDUSE_RECONNCT_MMAP_SIZE) + return -EOPNOTSUPP; + + vm_flags_set(vma, VM_DONTEXPAND); + vma->vm_ops = &vduse_vm_ops; + + return 0; +} + static int vduse_dev_open(struct inode *inode, struct file *file) { int ret; @@ -1413,6 +1486,8 @@ static const struct file_operations vduse_dev_fops = { .unlocked_ioctl = vduse_dev_ioctl, .compat_ioctl = compat_ptr_ioctl, .llseek = noop_llseek, + .mmap = vduse_dev_mmap, + }; static struct vduse_dev *vduse_dev_create(void) From patchwork Tue Dec 5 08:34:43 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Cindy Lu X-Patchwork-Id: 173804 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:bcd1:0:b0:403:3b70:6f57 with SMTP id r17csp3288123vqy; Tue, 5 Dec 2023 00:36:29 -0800 (PST) X-Google-Smtp-Source: AGHT+IH8+2hNrZBEOizRwScsFZzDlojwHtN0gtxNAW6dP11jbVZY8uIAiDIr3+XjlG5DgbI6MzcY X-Received: by 2002:a17:903:264e:b0:1d0:6ffd:e2d4 with SMTP id je14-20020a170903264e00b001d06ffde2d4mr5351070plb.110.1701765389107; Tue, 05 Dec 2023 00:36:29 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1701765389; cv=none; d=google.com; s=arc-20160816; b=n7vn/VpMOosS6Q0jb0F72tUGkOle/AbuIaoWgI7DTtdC8mfPbtWeNH4DCzPuUAwq5M W/2vQu7hx/7NZSUSZ46SRtw67nI30/iJIfb8kktfWfzIml8HHdsDJxxRzjdYV+U7b3bw rdEigAxRRa9JFuOLfb07+SxBbnS8+IDtGN0Gmi/dY5V2f/3+u3NXU+wB74atDIEh5SIk If6jH4gyNL7mVA7h9Lx/ef5ZDDg0M+H5rvCuHYK+PAdrRtNNfrEXKyKBVFtQKb1YpbpO mrlXOXlLLBW3+76riFWGNwLq+C8kznyg+AGIHNUFyFWBKyKo4Xdx1lRRIQsUAi373jmY yjeQ== 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:to:from :dkim-signature; bh=+OP1NgMKKCzWtLe7quAE0mrqWNiRYPYGvVhdKqorCyI=; fh=ARFoO5Pk7SniYIzyAg9Z8eUcw3AUCiaEHOgWusT66QQ=; b=IMw72sz4i7I+ufGhO3xlL6Jc39KwcS0u4nSuup3RNaqANKmr029tjkhDzvtPh6wq6h 0aPC8J9dJDd+4LqKaAGI9LSZRd8tP2fWgiYI7rXorzySlXKezejYtB9CB6soqMHRCxJN 2NgSfI3mtYwhmhevNNKv8+EjppFxFQ7TTyNqHOE3PhxK1jkub6vThNmXBk5SoL4Fmq75 LUVu2rRqy2kqK07vvv+WBLRa3JcThl11VfiWJNl7ZEb8Y0GR4jYBDTx840HyCeX1RTf1 zchZ0mMVDzZXt8alA7FqHxl7UQM+V6shcXxYPg5+PZRxTrqRH8r+xqkc1Mp3ko9nbuh8 A3SA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@redhat.com header.s=mimecast20190719 header.b=Ii06pIdt; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:1 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=redhat.com Received: from morse.vger.email (morse.vger.email. [2620:137:e000::3:1]) by mx.google.com with ESMTPS id l3-20020a170902f68300b001cfad02b963si526363plg.167.2023.12.05.00.36.27 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 05 Dec 2023 00:36:29 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:1 as permitted sender) client-ip=2620:137:e000::3:1; Authentication-Results: mx.google.com; dkim=pass header.i=@redhat.com header.s=mimecast20190719 header.b=Ii06pIdt; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:1 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=redhat.com Received: from out1.vger.email (depot.vger.email [IPv6:2620:137:e000::3:0]) by morse.vger.email (Postfix) with ESMTP id 471EC80D7F52; Tue, 5 Dec 2023 00:36:25 -0800 (PST) X-Virus-Status: Clean X-Virus-Scanned: clamav-milter 0.103.11 at morse.vger.email Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1346448AbjLEIgH (ORCPT + 99 others); Tue, 5 Dec 2023 03:36:07 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:41448 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S235483AbjLEIfa (ORCPT ); Tue, 5 Dec 2023 03:35:30 -0500 Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.133.124]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 702BE191 for ; Tue, 5 Dec 2023 00:35:37 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1701765336; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=+OP1NgMKKCzWtLe7quAE0mrqWNiRYPYGvVhdKqorCyI=; b=Ii06pIdtsAxZGf3JEaT1+koVOziYStQCAt8y3NeqqCevhAZjGV6cBJLbStb5lfVkO7oOoR BBJYOFhIFEqBumHTzBWWDgBdmCMU/h8QZhixUfNv8n4Ol44Cu9Uho+22dQ5BclvtwOS7X/ kGTknM6cJ0k2edJUKQzrDMUAUEJNEJs= Received: from mimecast-mx02.redhat.com (mx-ext.redhat.com [66.187.233.73]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-56-Ts2cfc3cOLGP9ypVf0uzsA-1; Tue, 05 Dec 2023 03:35:35 -0500 X-MC-Unique: Ts2cfc3cOLGP9ypVf0uzsA-1 Received: from smtp.corp.redhat.com (int-mx01.intmail.prod.int.rdu2.redhat.com [10.11.54.1]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by mimecast-mx02.redhat.com (Postfix) with ESMTPS id DDC833C0263D; Tue, 5 Dec 2023 08:35:34 +0000 (UTC) Received: from server.redhat.com (unknown [10.72.112.70]) by smtp.corp.redhat.com (Postfix) with ESMTP id 5CBBB3C27; Tue, 5 Dec 2023 08:35:32 +0000 (UTC) From: Cindy Lu To: lulu@redhat.com, jasowang@redhat.com, mst@redhat.com, xieyongji@bytedance.com, linux-kernel@vger.kernel.org, maxime.coquelin@redhat.com Subject: [PATCH v3 6/7] vduse: Update the vq_info in ioctl VDUSE_VQ_GET_INFO Date: Tue, 5 Dec 2023 16:34:43 +0800 Message-Id: <20231205083444.3029239-7-lulu@redhat.com> In-Reply-To: <20231205083444.3029239-1-lulu@redhat.com> References: <20231205083444.3029239-1-lulu@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 3.4.1 on 10.11.54.1 X-Spam-Status: No, score=-0.9 required=5.0 tests=DKIMWL_WL_HIGH,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS, MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS,T_SCC_BODY_TEXT_LINE autolearn=unavailable autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on morse.vger.email Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-Greylist: Sender passed SPF test, not delayed by milter-greylist-4.6.4 (morse.vger.email [0.0.0.0]); Tue, 05 Dec 2023 00:36:25 -0800 (PST) X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1784430344363248882 X-GMAIL-MSGID: 1784430344363248882 Once the reconnect memory pages are mapped to userspace, the userspace application will update the "reconnected" bit in the "struct vduse_dev_reconnect_data". The kernel will then check this bit. If it is not set to "VDUSE_NOT_RECONNECT", it means that the application has been reconnected, and the kernel will synchronize the vq information. Signed-off-by: Cindy Lu --- drivers/vdpa/vdpa_user/vduse_dev.c | 24 +++++++++++++++++++++++- 1 file changed, 23 insertions(+), 1 deletion(-) diff --git a/drivers/vdpa/vdpa_user/vduse_dev.c b/drivers/vdpa/vdpa_user/vduse_dev.c index f55f415629de..422f1aedebac 100644 --- a/drivers/vdpa/vdpa_user/vduse_dev.c +++ b/drivers/vdpa/vdpa_user/vduse_dev.c @@ -1193,6 +1193,9 @@ static long vduse_dev_ioctl(struct file *file, unsigned int cmd, struct vduse_vq_info vq_info; struct vduse_virtqueue *vq; u32 index; + unsigned long vaddr; + struct vduse_vq_state *vq_reconnect; + struct vduse_dev_reconnect_data *dev_reconnect; ret = -EFAULT; if (copy_from_user(&vq_info, argp, sizeof(vq_info))) @@ -1209,6 +1212,12 @@ static long vduse_dev_ioctl(struct file *file, unsigned int cmd, vq_info.device_addr = vq->device_addr; vq_info.num = vq->num; + vaddr = dev->vdpa_reconnect_vaddr; + dev_reconnect = (struct vduse_dev_reconnect_data *)vaddr; + + vaddr = vq->vdpa_reconnect_vaddr; + vq_reconnect = (struct vduse_vq_state *)vaddr; + if (dev->driver_features & BIT_ULL(VIRTIO_F_RING_PACKED)) { vq_info.packed.last_avail_counter = vq->state.packed.last_avail_counter; @@ -1218,9 +1227,22 @@ static long vduse_dev_ioctl(struct file *file, unsigned int cmd, vq->state.packed.last_used_counter; vq_info.packed.last_used_idx = vq->state.packed.last_used_idx; - } else + /*check if the vq is reconnect, if yes then update the info*/ + if (dev_reconnect->reconnected != VDUSE_NOT_RECONNECT) { + vq_info.packed.last_avail_idx = + vq_reconnect->packed.last_avail_idx; + vq_info.packed.last_avail_counter = + vq_reconnect->packed.last_avail_counter; + } + } else { vq_info.split.avail_index = vq->state.split.avail_index; + /*check if the vq is reconnect, if yes then update the info*/ + if (dev_reconnect->reconnected != VDUSE_NOT_RECONNECT) { + vq_info.split.avail_index = + vq_reconnect->split.avail_index; + } + } vq_info.ready = vq->ready; From patchwork Tue Dec 5 08:34:44 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Cindy Lu X-Patchwork-Id: 173803 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:bcd1:0:b0:403:3b70:6f57 with SMTP id r17csp3288064vqy; Tue, 5 Dec 2023 00:36:20 -0800 (PST) X-Google-Smtp-Source: AGHT+IHckaX2qX3eDBm6rereXJOdwIsXOg9yIcW5BN5uPgEWYJbsNCTO2oWob83mUAgcEGHFfSBz X-Received: by 2002:a05:6a00:6c98:b0:6ce:38d4:273e with SMTP id jc24-20020a056a006c9800b006ce38d4273emr682402pfb.58.1701765380306; Tue, 05 Dec 2023 00:36:20 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1701765380; cv=none; d=google.com; s=arc-20160816; b=N2lxA9LZDgBFEa5fDvhC62zWazWQfG8QD/Np5SvNEDFaflqf0lZrk+khLwjQ/cLWLu 8Q/dlBbAjxPUp1c6jN/B/FOZNPBXHN/GoYjNatSwf/drEIzR+g4p2yEf0lEXyUGBGm5g y4fmGUUZnWWS8s7zdFcigPv1ceEbTYdlyijh0EtuN1iT03LJFV1wvmKuX+ncvoFSmHM4 VLvy3gjjDjdOEM0lBpq5ZWUKPPDYx2yauomjHAvIH+d++pq507wZfQ+aZb3qSv8v0vNk IFPrZOIyXplroCenlzi60vG1aiB/JgY4Bp9BZRAFUpFnLDhIVBqd2HQRPlxrQQhwosLm hf0A== 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:to:from :dkim-signature; bh=d/3zDHOQJcTtZVsBfjBojXcizA44t39WpNjmMG4thIs=; fh=ARFoO5Pk7SniYIzyAg9Z8eUcw3AUCiaEHOgWusT66QQ=; b=FRRXCVKPyl1O0EKQe5SSkif5sUBfv6FR2aamBhyWWonbH/wplBq0vNw2MRfXUS+9ep rDz9K1Ff+ADipiDde48sl10j1dJ31qih2aHHyYXGscrpy/yZ15QDliW+FF9pj1lQ5imi ZYsilK8KH2qTKQSbXduaaYwFPTXTI+DbuvIZxJpgfQ2v4N/ZpcQ5ldsBHVzR+ZAd+RmP LYdryvgmDXxhAsAykpDdwtg0NsDid4Ik/XMdZR1AzjaC5+BWRgBf4CCO76xxu6sL5Lq2 8rKQul8EM8Fk4bcjFbMSYznJsWpuNj2JMGN5FSA29OKDlohv0ikc42rIICStz1KhKUVi +fxA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@redhat.com header.s=mimecast20190719 header.b=UWcePgjs; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.33 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=redhat.com Received: from lipwig.vger.email (lipwig.vger.email. [23.128.96.33]) by mx.google.com with ESMTPS id a17-20020a656411000000b005c18d508531si5444186pgv.212.2023.12.05.00.36.19 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 05 Dec 2023 00:36:20 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.33 as permitted sender) client-ip=23.128.96.33; Authentication-Results: mx.google.com; dkim=pass header.i=@redhat.com header.s=mimecast20190719 header.b=UWcePgjs; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.33 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=redhat.com Received: from out1.vger.email (depot.vger.email [IPv6:2620:137:e000::3:0]) by lipwig.vger.email (Postfix) with ESMTP id B496F8046BF7; Tue, 5 Dec 2023 00:36:14 -0800 (PST) X-Virus-Status: Clean X-Virus-Scanned: clamav-milter 0.103.11 at lipwig.vger.email Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1376471AbjLEIgB (ORCPT + 99 others); Tue, 5 Dec 2023 03:36:01 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:55044 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1344826AbjLEIfj (ORCPT ); Tue, 5 Dec 2023 03:35:39 -0500 Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.129.124]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id D55E111F for ; Tue, 5 Dec 2023 00:35:45 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1701765345; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=d/3zDHOQJcTtZVsBfjBojXcizA44t39WpNjmMG4thIs=; b=UWcePgjshK04nwsr+hJFhGVvJ+waynJ/dvlcJuFPqaGAbpb9VGaF5VuxI90RW0jRogE2M+ MTQzB3ACwkt6PyfIL9WPdjqmMFkxyVykMpczKBGlcbWy5PzHTf+RP963fa4g0iAmIqqUIq imV0/zGQ/igyPQpVnuYxtV0+gzrHolw= Received: from mimecast-mx02.redhat.com (mimecast-mx02.redhat.com [66.187.233.88]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-597-7chujVY3OOmYGcJ8vk_svw-1; Tue, 05 Dec 2023 03:35:38 -0500 X-MC-Unique: 7chujVY3OOmYGcJ8vk_svw-1 Received: from smtp.corp.redhat.com (int-mx01.intmail.prod.int.rdu2.redhat.com [10.11.54.1]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by mimecast-mx02.redhat.com (Postfix) with ESMTPS id 0AF44879843; Tue, 5 Dec 2023 08:35:38 +0000 (UTC) Received: from server.redhat.com (unknown [10.72.112.70]) by smtp.corp.redhat.com (Postfix) with ESMTP id 7DBE03C25; Tue, 5 Dec 2023 08:35:35 +0000 (UTC) From: Cindy Lu To: lulu@redhat.com, jasowang@redhat.com, mst@redhat.com, xieyongji@bytedance.com, linux-kernel@vger.kernel.org, maxime.coquelin@redhat.com Subject: [PATCH v3 7/7] Documentation: Add reconnect process for VDUSE Date: Tue, 5 Dec 2023 16:34:44 +0800 Message-Id: <20231205083444.3029239-8-lulu@redhat.com> In-Reply-To: <20231205083444.3029239-1-lulu@redhat.com> References: <20231205083444.3029239-1-lulu@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 3.4.1 on 10.11.54.1 X-Spam-Status: No, score=-0.9 required=5.0 tests=DKIMWL_WL_HIGH,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS, MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS,T_SCC_BODY_TEXT_LINE autolearn=unavailable autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lipwig.vger.email Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-Greylist: Sender passed SPF test, not delayed by milter-greylist-4.6.4 (lipwig.vger.email [0.0.0.0]); Tue, 05 Dec 2023 00:36:15 -0800 (PST) X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1784430335368046174 X-GMAIL-MSGID: 1784430335368046174 Add a document explaining the reconnect process, including what the Userspace App needs to do and how it works with the kernel. Signed-off-by: Cindy Lu --- Documentation/userspace-api/vduse.rst | 30 +++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) diff --git a/Documentation/userspace-api/vduse.rst b/Documentation/userspace-api/vduse.rst index bdb880e01132..ec66e573f6da 100644 --- a/Documentation/userspace-api/vduse.rst +++ b/Documentation/userspace-api/vduse.rst @@ -231,3 +231,33 @@ able to start the dataplane processing as follows: after the used ring is filled. For more details on the uAPI, please see include/uapi/linux/vduse.h. + +HOW VDUSE devices reconnectoin works +---------------- +0. Userspace APP checks if the device /dev/vduse/vduse_name exists. + If it does not exist, need to create the instance. + If it does exist, it means this is a reconnect and the program proceeds to step 3. + +1. Create a new VDUSE instance with ioctl(VDUSE_CREATE_DEV) on + /dev/vduse/control. + +2. When the ioctl(VDUSE_CREATE_DEV) function is called, the kernel allocates memory + to synchronize the reconnect information. + +3. Userspace App need to mmap the pages to userspace + + When connecting for the first time, the userspace app must save the reconnect + information (struct vhost_reconnect_data) in mapped pages + + If this is reconnect,If the purpose is to reconnect, the userspace application + must verify if the saved information is suitable for reconnection. Additionally, + the userspace application is required to set the "reconnected" bit in the + "struct vhost_reconnect_data" to "VDUSE_RECONNECT". The kernel will use this bit + to identify if the userspace application is reconnect. + +4. Start the userspace App. + userspace APP will call ioctl VDUSE_VQ_GET_INFO to sync the vq information. + Additionally, the APP must save the vq reconnect information (struct vdpa_vq_state) + in mapped pages while running. + +5. When the Userspace App exits, it is necessary to unmap all the reconnect pages.