From patchwork Wed Oct 11 06:42:05 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Cindy Lu X-Patchwork-Id: 151153 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a05:612c:2908:b0:403:3b70:6f57 with SMTP id ib8csp344467vqb; Tue, 10 Oct 2023 23:43:41 -0700 (PDT) X-Google-Smtp-Source: AGHT+IFG+IS8xrRd/WzaRnvCAXMb0bwwkU/nCID6hwZjo65GtmIklojzjX7hOKLhjyWTWxPXkJcU X-Received: by 2002:a92:d1d0:0:b0:351:54db:c1bc with SMTP id u16-20020a92d1d0000000b0035154dbc1bcmr19020784ilg.0.1697006621119; Tue, 10 Oct 2023 23:43:41 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1697006621; cv=none; d=google.com; s=arc-20160816; b=cbNdjGPRDM6wSNwdYMmKchgrP5hIi2D0bxM57k4hX9cDOyCtaNR8+wkEL6TDdz2/oj uvAjXdCjNYRLA9irHXr9LR8uUxjWmWHgXC/QMVncP/8Ihz1vtjiIFWYu0qsXK+nmxcJV 6cpjkbDdndBKNKJsBEzl9fB2BfVLmzDPrBVL/MWmyug2mCgsFq4voyLdz8q3z0ujyBe/ vKmTuG8Pcz6Czf6HYfnaCxqPktw2lDAEzfLzNibZBUXfZzrn+DQiITC+eZkY7avWLDQg VXKMIWXDPHeTX8U/3A8DxES69yuj6F6WnoMlJmWKhGr8Sljw4Ty8FOTM2eFRsOzq6txQ lt4g== 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=vn5HgvZLw9PSHjZMkQbhZJX5Gv2GT+cE9/aT+ZvVDqM=; fh=ARFoO5Pk7SniYIzyAg9Z8eUcw3AUCiaEHOgWusT66QQ=; b=aeftecw2hnY90HH4/65obthb15xg75ICGEqnvt2avLaG2DKxSSDzYi/Y8zpVNWU+Oc oEPchE3ZBKr2ooNhGRlIb6rELwOKNDgkmx7Mp/WNoJ+nPzG2B+T7lD+gFAef2f5/UXlr 0oSX8ngAEzFdYmkoB63nUKL6KaWm4aygU19xxFhWQNftgwQ+8IX6zTqbz5XuV7OdAsYE x9ioL0+UiBZSTJByb99AvfdQBZgRHzY+K/yKDa+fUMY2U5RwPZfz8d3GtRcey6+O0uxn QMrHnB9DWZ+WNsQITvXYOnP31qx5+iLEZic+My8e0cGjuHxoQc7fAFw95IjObbc89VHB z1FQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@redhat.com header.s=mimecast20190719 header.b=hbCFNvVj; 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 q136-20020a632a8e000000b00573f76b1f75si13406060pgq.592.2023.10.10.23.43.40 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 10 Oct 2023 23:43:41 -0700 (PDT) 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=hbCFNvVj; 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 884DA820969F; Tue, 10 Oct 2023 23:43:38 -0700 (PDT) X-Virus-Status: Clean X-Virus-Scanned: clamav-milter 0.103.10 at lipwig.vger.email Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1345539AbjJKGnR (ORCPT + 19 others); Wed, 11 Oct 2023 02:43:17 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:34154 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1345551AbjJKGnP (ORCPT ); Wed, 11 Oct 2023 02:43:15 -0400 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 B6BDF90 for ; Tue, 10 Oct 2023 23:42:26 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1697006546; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=vn5HgvZLw9PSHjZMkQbhZJX5Gv2GT+cE9/aT+ZvVDqM=; b=hbCFNvVjzuVH9Kdf0UI6wqBQM2xr3U7xY2ymBeAW+UgrmGvwefc3pfm162iHVtNGwyE/TZ FzYSVRVlxAH4YH4itKRxNZtPQEEvqyw/f3C/A9gFP5YZ6zIWpI3Q7yDylkjSlAVEgD+1YP XW1Al6BgIH7hzOHl8JuYb2Aowjc2cVM= Received: from mimecast-mx02.redhat.com (mx-ext.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-620-8nlMUVOiOHqTiyPZ8B1Ueg-1; Wed, 11 Oct 2023 02:42:24 -0400 X-MC-Unique: 8nlMUVOiOHqTiyPZ8B1Ueg-1 Received: from smtp.corp.redhat.com (int-mx05.intmail.prod.int.rdu2.redhat.com [10.11.54.5]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mimecast-mx02.redhat.com (Postfix) with ESMTPS id 8075B1C2B66B; Wed, 11 Oct 2023 06:42:24 +0000 (UTC) Received: from server.redhat.com (unknown [10.72.112.145]) by smtp.corp.redhat.com (Postfix) with ESMTP id ECE3863F55; Wed, 11 Oct 2023 06:42:21 +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 v1 1/4] vduse: Add function to get/free the pages for reconnection Date: Wed, 11 Oct 2023 14:42:05 +0800 Message-Id: <20231011064208.2143245-2-lulu@redhat.com> In-Reply-To: <20231011064208.2143245-1-lulu@redhat.com> References: <20231011064208.2143245-1-lulu@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 3.1 on 10.11.54.5 X-Spam-Status: No, score=2.7 required=5.0 tests=DKIMWL_WL_HIGH,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS, MAILING_LIST_MULTI,RCVD_IN_SBL_CSS,SPF_HELO_NONE,SPF_PASS autolearn=no 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, 10 Oct 2023 23:43:38 -0700 (PDT) X-Spam-Level: ** X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1779440414500493357 X-GMAIL-MSGID: 1779440414500493357 Add the function vduse_alloc_reconnnect_info_mem and vduse_alloc_reconnnect_info_mem In this 2 function, vduse will get/free (vq_num + 1)*page   Page 0 will be used to save the reconnection information, The Userspace App will maintain this. Page 1 ~ vq_num + 1 will save the reconnection information for vqs. Signed-off-by: Cindy Lu --- drivers/vdpa/vdpa_user/vduse_dev.c | 78 ++++++++++++++++++++++++++++++ 1 file changed, 78 insertions(+) diff --git a/drivers/vdpa/vdpa_user/vduse_dev.c b/drivers/vdpa/vdpa_user/vduse_dev.c index 26b7e29cb900..565126a9ab01 100644 --- a/drivers/vdpa/vdpa_user/vduse_dev.c +++ b/drivers/vdpa/vdpa_user/vduse_dev.c @@ -30,6 +30,10 @@ #include #include +#ifdef CONFIG_X86 +#include +#endif + #include "iova_domain.h" #define DRV_AUTHOR "Yongji Xie " @@ -41,6 +45,19 @@ #define VDUSE_IOVA_SIZE (128 * 1024 * 1024) #define VDUSE_MSG_DEFAULT_TIMEOUT 30 +/* struct vdpa_reconnect_info saved the alloc pages info + * these pages will mmaped to userspace for reconnection + */ +struct vdpa_reconnect_info { + /* Offset (within vm_file) in PAGE_SIZE + */ + u32 index; + /* virtual address for this page*/ + unsigned long vaddr; + /* allocated memory size, */ + phys_addr_t size; +}; + struct vduse_virtqueue { u16 index; u16 num_max; @@ -57,6 +74,7 @@ struct vduse_virtqueue { struct vdpa_callback cb; struct work_struct inject; struct work_struct kick; + struct vdpa_reconnect_info reconnect_info; }; struct vduse_dev; @@ -106,6 +124,7 @@ struct vduse_dev { u32 vq_align; struct vduse_umem *umem; struct mutex mem_lock; + struct vdpa_reconnect_info reconnect_status; }; struct vduse_dev_msg { @@ -1030,6 +1049,61 @@ static int vduse_dev_reg_umem(struct vduse_dev *dev, return ret; } +static int vduse_alloc_reconnnect_info_mem(struct vduse_dev *dev) +{ + struct vdpa_reconnect_info *info; + struct vduse_virtqueue *vq; + void *addr; + + /*page 0 is use to save status,dpdk will use this to save the information + *needed in reconnection,kernel don't need to maintain this + */ + info = &dev->reconnect_status; + addr = (void *)get_zeroed_page(GFP_KERNEL); + if (!addr) + return -1; + + info->vaddr = (unsigned long)(addr); + info->size = PAGE_SIZE; + /* index is vm Offset in PAGE_SIZE */ + info->index = 0; + + /*page 1~ vq_num + 1 save the reconnect info for vqs*/ + for (int i = 0; i < dev->vq_num + 1; i++) { + vq = &dev->vqs[i]; + info = &vq->reconnect_info; + addr = (void *)get_zeroed_page(GFP_KERNEL); + if (!addr) + return -1; + + info->vaddr = (unsigned long)(addr); + info->size = PAGE_SIZE; + info->index = i + 1; + } + + return 0; +} + +static int vduse_free_reconnnect_info_mem(struct vduse_dev *dev) +{ + struct vdpa_reconnect_info *info; + struct vduse_virtqueue *vq; + + info = &dev->reconnect_status; + free_page(info->vaddr); + info->size = 0; + info->vaddr = 0; + for (int i = 0; i < dev->vq_num + 1; i++) { + vq = &dev->vqs[i]; + info = &vq->reconnect_info; + free_page(info->vaddr); + info->size = 0; + info->vaddr = 0; + } + + return 0; +} + static long vduse_dev_ioctl(struct file *file, unsigned int cmd, unsigned long arg) { @@ -1390,6 +1464,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); @@ -1542,6 +1618,8 @@ static int vduse_create_dev(struct vduse_dev_config *config, ret = PTR_ERR(dev->dev); goto err_dev; } + + vduse_alloc_reconnnect_info_mem(dev); __module_get(THIS_MODULE); return 0; From patchwork Wed Oct 11 06:42:06 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Cindy Lu X-Patchwork-Id: 151152 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a05:612c:2908:b0:403:3b70:6f57 with SMTP id ib8csp344430vqb; Tue, 10 Oct 2023 23:43:35 -0700 (PDT) X-Google-Smtp-Source: AGHT+IHt34FYjxVVivAp5XxR+glvjFvT7COMVJDvnI68wY6DBqSm6A4+fp1rZHVs9649qxAC33qa X-Received: by 2002:a54:4385:0:b0:3a1:d457:83b5 with SMTP id u5-20020a544385000000b003a1d45783b5mr20336115oiv.3.1697006615426; Tue, 10 Oct 2023 23:43:35 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1697006615; cv=none; d=google.com; s=arc-20160816; b=nINra9scSULfxJK3/B29taDGsGDXBqXcl1XWyx/hi6FtLdC+Wo0cee1TJ99130dd0U 2OJpwxcGtkCUXwU+mIjVg/rGQSVUR2JX/9aWD8OpGg//vWZRzmZv/zEyWQ6T8Q3TaMay 0SjkI00/gP6WOSLjpjHfmRd3JaEnjCKx1zGGT1dDlu9DQxEaX4vydM5kiTyDWibhCl23 fzw6LYJmJ7XsXtsKBB5AuhDIHqWgw8aKsmG7hvNK/Vcdt5YOJYtkDAJSOAvlp9LBVuxC aN3VydGtqRywpOWCVMG6hUHmNwuTAwNgJC/Gq415zflSv0JYPMsMBOQxM+1f4I3LTPAf qSLg== 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=29YtgXv8n6Z+jTzRGYkc/Q2mHLXGKB5JoSFvVPqVJn0=; fh=ARFoO5Pk7SniYIzyAg9Z8eUcw3AUCiaEHOgWusT66QQ=; b=jKJvpgJiy/s279G/Flo5ngyt1xKDr1wW1+qDQmlv1Ky2Bn+xLSJNXg9G8/0yuNRLzJ y8bZqiaZQ/cnRpUl6kK3dxunMZa+c2FAYrXGEP3MTX15WU/tAIt+ZQtfDWTG9clpJVS0 QV5tufsuXSK4ehk7KbA71lhgVZa6zZ8FbB94FeYSg8Nu2SIQ6U+FfvLe1hQ/UB2ENln4 2ONn0JQ36/tmRln0lmWtULBII9GJWZRKj0US1dzxx9XP4D3hxldtsQnwrr/yyecVywSp AYw7iXW432BRzvpDXAIeBKdoEuz1Ln5Wnmb2XeMNjmeYhi2q4H59CzjUfUeXYIlNFnP9 FciQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@redhat.com header.s=mimecast20190719 header.b=U54Za9U1; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:8 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 fry.vger.email (fry.vger.email. [2620:137:e000::3:8]) by mx.google.com with ESMTPS id j191-20020a638bc8000000b0058986c3dc2fsi2157545pge.117.2023.10.10.23.43.35 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 10 Oct 2023 23:43:35 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:8 as permitted sender) client-ip=2620:137:e000::3:8; Authentication-Results: mx.google.com; dkim=pass header.i=@redhat.com header.s=mimecast20190719 header.b=U54Za9U1; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:8 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 fry.vger.email (Postfix) with ESMTP id C142583EDD89; Tue, 10 Oct 2023 23:43:31 -0700 (PDT) X-Virus-Status: Clean X-Virus-Scanned: clamav-milter 0.103.10 at fry.vger.email Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1345551AbjJKGnT (ORCPT + 19 others); Wed, 11 Oct 2023 02:43:19 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:34176 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1345610AbjJKGnP (ORCPT ); Wed, 11 Oct 2023 02:43:15 -0400 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 D82E998 for ; Tue, 10 Oct 2023 23:42:31 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1697006551; 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=29YtgXv8n6Z+jTzRGYkc/Q2mHLXGKB5JoSFvVPqVJn0=; b=U54Za9U1wzF4vjM+nEsCKN5vMuAeDYCPrFB3nQ0XetQvix9KmC9S7eZPspABzRd/ZYVBK6 rYl5W6uwm4GFBVtC4EqaEe7svz4uTQug+eJ5qAeEtOpjO0yVV8HDbJkPkick1ikLXI1/dX ODWLoS7xh+diKkU4ZgSV7lJiUhXIaZg= Received: from mimecast-mx02.redhat.com (mx-ext.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-674-gybUZXM6MsiCPClNZE-oFA-1; Wed, 11 Oct 2023 02:42:28 -0400 X-MC-Unique: gybUZXM6MsiCPClNZE-oFA-1 Received: from smtp.corp.redhat.com (int-mx05.intmail.prod.int.rdu2.redhat.com [10.11.54.5]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mimecast-mx02.redhat.com (Postfix) with ESMTPS id A9DFE382134A; Wed, 11 Oct 2023 06:42:27 +0000 (UTC) Received: from server.redhat.com (unknown [10.72.112.145]) by smtp.corp.redhat.com (Postfix) with ESMTP id 226CC51E3; Wed, 11 Oct 2023 06:42:24 +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 v1 2/4] vduse: Add file operation for mmap Date: Wed, 11 Oct 2023 14:42:06 +0800 Message-Id: <20231011064208.2143245-3-lulu@redhat.com> In-Reply-To: <20231011064208.2143245-1-lulu@redhat.com> References: <20231011064208.2143245-1-lulu@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 3.1 on 10.11.54.5 X-Spam-Status: No, score=2.7 required=5.0 tests=DKIMWL_WL_HIGH,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS, MAILING_LIST_MULTI,RCVD_IN_SBL_CSS,SPF_HELO_NONE,SPF_PASS autolearn=no autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on fry.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 (fry.vger.email [0.0.0.0]); Tue, 10 Oct 2023 23:43:31 -0700 (PDT) X-Spam-Level: ** X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1779440408619280727 X-GMAIL-MSGID: 1779440408619280727 Add the operation for mmap, The user space APP will use this function to map the pages to userspace Signed-off-by: Cindy Lu --- drivers/vdpa/vdpa_user/vduse_dev.c | 66 ++++++++++++++++++++++++++++++ 1 file changed, 66 insertions(+) diff --git a/drivers/vdpa/vdpa_user/vduse_dev.c b/drivers/vdpa/vdpa_user/vduse_dev.c index 565126a9ab01..05e72d752fb6 100644 --- a/drivers/vdpa/vdpa_user/vduse_dev.c +++ b/drivers/vdpa/vdpa_user/vduse_dev.c @@ -1380,6 +1380,70 @@ 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; + struct vdpa_reconnect_info *info; + + /* index 0 page reserved for vduse status*/ + if (index == 0) { + info = &dev->reconnect_status; + } else { + /* index 1+vq_number page reserved for vduse vqs*/ + vq = &dev->vqs[index - 1]; + info = &vq->reconnect_info; + } + if (remap_pfn_range(vma, vmf->address & PAGE_MASK, + PFN_DOWN(virt_to_phys((void *)info->vaddr)), + PAGE_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; + struct vdpa_reconnect_info *info; + 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; + + if (index > dev->vq_num + 1) + return -EINVAL; + + /* index 0 page reserved for vduse status*/ + if (index == 0) { + info = &dev->reconnect_status; + } else { + /* index 1+vq_number page reserved for vduse vqs*/ + vq = &dev->vqs[index - 1]; + info = &vq->reconnect_info; + } + if (info->vaddr == 0) + return -ENOTSUPP; + + if (virt_to_phys((void *)info->vaddr) & (PAGE_SIZE - 1)) + return -EINVAL; + if (vma->vm_end - vma->vm_start != info->size) + return -EOPNOTSUPP; + + vm_flags_set(vma, VM_IO | VM_DONTDUMP); + vma->vm_ops = &vduse_vm_ops; + + return 0; +} + static int vduse_dev_open(struct inode *inode, struct file *file) { int ret; @@ -1412,6 +1476,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 Wed Oct 11 06:42:07 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Cindy Lu X-Patchwork-Id: 151154 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a05:612c:2908:b0:403:3b70:6f57 with SMTP id ib8csp344503vqb; Tue, 10 Oct 2023 23:43:47 -0700 (PDT) X-Google-Smtp-Source: AGHT+IG6TYNzmvh2h6S+fmW0kv7+7udHtfBIE/48Vq/5gloKBbzEoeyxsdJaPYJwspEQEc/27bXP X-Received: by 2002:a05:6870:972c:b0:1b7:5e47:5b75 with SMTP id n44-20020a056870972c00b001b75e475b75mr22559872oaq.4.1697006626985; Tue, 10 Oct 2023 23:43:46 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1697006626; cv=none; d=google.com; s=arc-20160816; b=sldD2JxYOdOtuYXZmZdxbDUsreB1Wol9KxrXr+Dh454Q1MqIb5+d4h6y2KPTiPsejq nqCRWWS5r6rffH4XOCMovqjOT2m/QzWhJpSY4mlqEqwdR1HgIjrR53HWMrYFZo1hQQzJ qbnQtKzcNS5HwUYOCnIqjU97/Q/EIWS5AuRH2mgJam4ixHCFvwHAxmLVA386kkjEPnS9 rvU7KKST82zAKW247brIQNJ0qJclRjFSJZHBo6GxGPBqMhXmCsYplKVQZHpczOu88B2o uh0dvMKWojY10qO7Ym4M8LdvdLdhIk8fiZMljPgkGs03LAmqvdaOt0wK1+1Mp/xrLxmz Pafw== 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=csqBKeBkUZLQ+DInT3ODQljj1j3iH3HbX8W5xJ28ftc=; fh=ARFoO5Pk7SniYIzyAg9Z8eUcw3AUCiaEHOgWusT66QQ=; b=Sw4yvhm7iW/YR6rro/fcMOxOa2b8eWMDfKVHHmrG+kGcAgdy4gDni58j0st3QUvMaJ mN6HhU8odAgjLZVL1eUH90YHrI4icBECfAJ6ajxYk5NyI/Bmkko+KuKWa1ke78Ah+4QH uv7PpIMneZ8YMqfYkgeG9t1OsXrwFwK2dL8ZOSRH84i1cccZTETdT7fVEOrQlM9mCpAa eeNK9tUZBhR2+hUWrSE/KoAiEPJnA/9v9ibdwThh3nnRhP8rmtNcLDXaN+a1ggUqGveA qDNnO4TcRQjKfrV8AnxWhwpYsXg4Nkf7xCHfTUfewPB6oRUPl78ySu1YtRQ+e7hswPFH /qGQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@redhat.com header.s=mimecast20190719 header.b="CRGl/ABC"; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.35 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 groat.vger.email (groat.vger.email. [23.128.96.35]) by mx.google.com with ESMTPS id z1-20020a63c041000000b00563d9ff5157si13278063pgi.547.2023.10.10.23.43.46 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 10 Oct 2023 23:43:46 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.35 as permitted sender) client-ip=23.128.96.35; Authentication-Results: mx.google.com; dkim=pass header.i=@redhat.com header.s=mimecast20190719 header.b="CRGl/ABC"; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.35 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 groat.vger.email (Postfix) with ESMTP id 4FFC980DA990; Tue, 10 Oct 2023 23:43:44 -0700 (PDT) X-Virus-Status: Clean X-Virus-Scanned: clamav-milter 0.103.10 at groat.vger.email Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1345610AbjJKGn3 (ORCPT + 19 others); Wed, 11 Oct 2023 02:43:29 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:34184 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1345840AbjJKGnW (ORCPT ); Wed, 11 Oct 2023 02:43:22 -0400 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 022E99E for ; Tue, 10 Oct 2023 23:42:32 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1697006552; 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=csqBKeBkUZLQ+DInT3ODQljj1j3iH3HbX8W5xJ28ftc=; b=CRGl/ABCFt8cIeSlSDHagbI02GU1LHIzPAS32KojAgsVj15r2tma8vFigAarq2I4LPNxud dOTazPnoV74iJroDbtavF14Hi0EFyXnPR7jNnM9D7F3UiwMO7n3gH8+UW3HHz+qw/1lA55 n3L7f7NfWrGjvYe4uBbXzojFAh3eV5Y= Received: from mimecast-mx02.redhat.com (mx-ext.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-28-ejz1fDbsMlCzYq1-sYFuig-1; Wed, 11 Oct 2023 02:42:31 -0400 X-MC-Unique: ejz1fDbsMlCzYq1-sYFuig-1 Received: from smtp.corp.redhat.com (int-mx05.intmail.prod.int.rdu2.redhat.com [10.11.54.5]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mimecast-mx02.redhat.com (Postfix) with ESMTPS id D321F3C1E9D3; Wed, 11 Oct 2023 06:42:30 +0000 (UTC) Received: from server.redhat.com (unknown [10.72.112.145]) by smtp.corp.redhat.com (Postfix) with ESMTP id 4BC8A51E3; Wed, 11 Oct 2023 06:42:27 +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 v1 3/4] vduse: Add new ioctl VDUSE_GET_RECONNECT_INFO Date: Wed, 11 Oct 2023 14:42:07 +0800 Message-Id: <20231011064208.2143245-4-lulu@redhat.com> In-Reply-To: <20231011064208.2143245-1-lulu@redhat.com> References: <20231011064208.2143245-1-lulu@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 3.1 on 10.11.54.5 X-Spam-Status: No, score=2.7 required=5.0 tests=DKIMWL_WL_HIGH,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS, MAILING_LIST_MULTI,RCVD_IN_SBL_CSS,SPF_HELO_NONE,SPF_PASS autolearn=no autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on groat.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 (groat.vger.email [0.0.0.0]); Tue, 10 Oct 2023 23:43:44 -0700 (PDT) X-Spam-Level: ** X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1779440420956394742 X-GMAIL-MSGID: 1779440420956394742 In VDUSE_GET_RECONNECT_INFO, the Userspace App can get the map size and The number of mapping memory pages from the kernel. The userspace App can use this information to map the pages. Add struct vhost_reconnect_data/vhost_reconnect_vring for sync the information in reconnection Signed-off-by: Cindy Lu --- drivers/vdpa/vdpa_user/vduse_dev.c | 15 +++++++++++ include/uapi/linux/vduse.h | 43 ++++++++++++++++++++++++++++++ 2 files changed, 58 insertions(+) diff --git a/drivers/vdpa/vdpa_user/vduse_dev.c b/drivers/vdpa/vdpa_user/vduse_dev.c index 05e72d752fb6..0f15e7ac716b 100644 --- a/drivers/vdpa/vdpa_user/vduse_dev.c +++ b/drivers/vdpa/vdpa_user/vduse_dev.c @@ -1347,6 +1347,21 @@ static long vduse_dev_ioctl(struct file *file, unsigned int cmd, ret = 0; break; } + case VDUSE_GET_RECONNECT_INFO: { + struct vduse_reconnect_mmap_info info; + + ret = -EFAULT; + if (copy_from_user(&info, argp, sizeof(info))) + break; + + info.size = PAGE_SIZE; + info.max_index = dev->vq_num + 1; + + if (copy_to_user(argp, &info, sizeof(info))) + break; + ret = 0; + break; + } default: ret = -ENOIOCTLCMD; break; diff --git a/include/uapi/linux/vduse.h b/include/uapi/linux/vduse.h index 11bd48c72c6c..5ccac535fba6 100644 --- a/include/uapi/linux/vduse.h +++ b/include/uapi/linux/vduse.h @@ -350,4 +350,47 @@ struct vduse_dev_response { }; }; +/** + * struct vhost_reconnect_data - saved the reconnect info for device + * @reconnect_time: reconnect time for this device. userspace APP needs to do ++ + * while reconnecting + * @version; version for userspace APP + * @features; Device features negotiated in the last reconnect. + * @status; Device status in last reconnect + * @nr_vrings; number of vqs + */ + +struct vhost_reconnect_data { + __u32 reconnect_time; + __u32 version; + __u64 features; + __u8 status; + __u32 nr_vrings; +}; + +/** + * struct vhost_reconnect_vring -saved the reconnect info for vqs + * @last_avail_idx: device available index + * @avail_wrap_counter: Driver ring wrap counter + */ +struct vhost_reconnect_vring { + __u16 last_avail_idx; + __u16 avail_wrap_counter; +}; + +/** + * struct vduse_reconnect_mmap_info + * @size: mapping memory size, here we use page_size + * @max_index: the number of pages allocated in kernel,just + * use for check + */ + +struct vduse_reconnect_mmap_info { + __u32 size; + __u32 max_index; +}; + +#define VDUSE_GET_RECONNECT_INFO \ + _IOWR(VDUSE_BASE, 0x1b, struct vduse_reconnect_mmap_info) + #endif /* _UAPI_VDUSE_H_ */ From patchwork Wed Oct 11 06:42:08 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Cindy Lu X-Patchwork-Id: 151155 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a05:612c:2908:b0:403:3b70:6f57 with SMTP id ib8csp344637vqb; Tue, 10 Oct 2023 23:44:13 -0700 (PDT) X-Google-Smtp-Source: AGHT+IFl738nQjlfrh29j6cuk6m69zjy/Vq9JlSDqTPlgdOszs2R8A/Ao235C4JkR368kMCJzkhr X-Received: by 2002:a17:902:e885:b0:1c0:bf60:ba82 with SMTP id w5-20020a170902e88500b001c0bf60ba82mr23255901plg.5.1697006652997; Tue, 10 Oct 2023 23:44:12 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1697006652; cv=none; d=google.com; s=arc-20160816; b=W0cGxYzZ5qoAoUFw5CvaUoQTvgAUnYtPWs9oZz9oAFZBzpN8MGOEKEgSvvfdZFYEj4 mh7ZHGP9YQg56/pJJ7Ylfar1aPhrjoFh0XymscWxUXZ7fu/j5SXSAvKcg9T+Iz57mgB0 v2BHjCdg2rn8k5wsQXsJuWt0OGrQyGOT71A1IqpcB61CAuKCOTVRGwDuUPba/uzGnNK1 tb/yXZbW1HcRNtRlN5ObUln7i9fBZWvkmnD5VqstOqDYk+4vBDkbXCowMBvE4vKjAYRF caj2cmzYcg6gEHkc7wtr1MP+o2l3N2NB8TjnbtmgYjVRKC22gdz42eybywcIKDbqV/Bk hIsA== 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=J8XfKBq2pmFc/Yny5pdd3hd4sd8TR2HWxYu52ROyThk=; fh=ARFoO5Pk7SniYIzyAg9Z8eUcw3AUCiaEHOgWusT66QQ=; b=EstrFUWAnbE4bcTbUh/XKCClILPmUHw6L36UX3blnN9o8i9Tz/YEEVrsv0+Kxs97Nj bm/0EL9JJlg+Hu2V0oSHcLTy99UxzinSDHAnVwVkciffgonBoYjcVHAbtZNVN63onEeB 7eZRw9CdoUqOUu5GTwLwnNO0sXWWr/7mf1qdP6GThCcyYQ39+I4wlMOzxIQ76c2BtyJC 8jeMl+90rL43Nl7ZGrbNom3J/SeZJ+pVtScMowCJYUcf7/B3htAPxqryUI4WO6LxyAfC oAW59GIbZgPTxMh+fKAm/ceowfelB3UPI2sGgo8qqDfYiYKRdoTlOkLO80dnrRGS5zqe OKYQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@redhat.com header.s=mimecast20190719 header.b=d12E2CWi; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:5 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 groat.vger.email (groat.vger.email. [2620:137:e000::3:5]) by mx.google.com with ESMTPS id w9-20020a1709026f0900b001c3e9170068si12918775plk.61.2023.10.10.23.44.12 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 10 Oct 2023 23:44:12 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:5 as permitted sender) client-ip=2620:137:e000::3:5; Authentication-Results: mx.google.com; dkim=pass header.i=@redhat.com header.s=mimecast20190719 header.b=d12E2CWi; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:5 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 groat.vger.email (Postfix) with ESMTP id 2D02F80DA99B; Tue, 10 Oct 2023 23:44:10 -0700 (PDT) X-Virus-Status: Clean X-Virus-Scanned: clamav-milter 0.103.10 at groat.vger.email Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1345642AbjJKGnl (ORCPT + 19 others); Wed, 11 Oct 2023 02:43:41 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:51076 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1345661AbjJKGnj (ORCPT ); Wed, 11 Oct 2023 02:43:39 -0400 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 D01D3B8 for ; Tue, 10 Oct 2023 23:42:59 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1697006579; 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=J8XfKBq2pmFc/Yny5pdd3hd4sd8TR2HWxYu52ROyThk=; b=d12E2CWimQfAHJTaeBq5l3vl1whAGzrP97mYzBi1C1Ljl0sKpkHS0Jwt7KEUnjaQIUd5oW xzVOQBIkQ8fdRyOcmhhb+G+AzAZKrPKLX55l2QXCd3CIyE5Hl4fe08nPOlFyVYNviiCe+b fPrtBkIbcOlDS3LLjcQL56ZDpQT50UU= Received: from mimecast-mx02.redhat.com (mimecast-mx02.redhat.com [66.187.233.88]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id us-mta-556-6Uomc1_pNba6ikcqIYWJBQ-1; Wed, 11 Oct 2023 02:42:55 -0400 X-MC-Unique: 6Uomc1_pNba6ikcqIYWJBQ-1 Received: from smtp.corp.redhat.com (int-mx07.intmail.prod.int.rdu2.redhat.com [10.11.54.7]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mimecast-mx02.redhat.com (Postfix) with ESMTPS id 997D28F5DA3; Wed, 11 Oct 2023 06:42:55 +0000 (UTC) Received: from server.redhat.com (unknown [10.72.112.145]) by smtp.corp.redhat.com (Postfix) with ESMTP id 07AD01C06533; Wed, 11 Oct 2023 06:42:52 +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 v1 4/4] vduse: update the vq_info in ioctl Date: Wed, 11 Oct 2023 14:42:08 +0800 Message-Id: <20231011064208.2143245-5-lulu@redhat.com> In-Reply-To: <20231011064208.2143245-1-lulu@redhat.com> References: <20231011064208.2143245-1-lulu@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 3.4.1 on 10.11.54.7 X-Spam-Status: No, score=2.7 required=5.0 tests=DKIMWL_WL_HIGH,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS, MAILING_LIST_MULTI,RCVD_IN_SBL_CSS,SPF_HELO_NONE,SPF_PASS autolearn=no autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on groat.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 (groat.vger.email [0.0.0.0]); Tue, 10 Oct 2023 23:44:10 -0700 (PDT) X-Spam-Level: ** X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1779440448552600865 X-GMAIL-MSGID: 1779440448552600865 In VDUSE_VQ_GET_INFO, the driver will sync the last_avail_idx with reconnect info, After mapping the reconnect pages to userspace The userspace App will update the reconnect_time in struct vhost_reconnect_vring, If this is not 0 then it means this vq is reconnected and will update the last_avail_idx Signed-off-by: Cindy Lu --- drivers/vdpa/vdpa_user/vduse_dev.c | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/drivers/vdpa/vdpa_user/vduse_dev.c b/drivers/vdpa/vdpa_user/vduse_dev.c index 0f15e7ac716b..42e7a90ab74c 100644 --- a/drivers/vdpa/vdpa_user/vduse_dev.c +++ b/drivers/vdpa/vdpa_user/vduse_dev.c @@ -1213,6 +1213,9 @@ static long vduse_dev_ioctl(struct file *file, unsigned int cmd, struct vduse_vq_info vq_info; struct vduse_virtqueue *vq; u32 index; + struct vdpa_reconnect_info *area; + struct vhost_reconnect_vring *vq_reconnect; + struct vhost_reconnect_data *dev_reconnect; ret = -EFAULT; if (copy_from_user(&vq_info, argp, sizeof(vq_info))) @@ -1244,6 +1247,19 @@ static long vduse_dev_ioctl(struct file *file, unsigned int cmd, vq_info.ready = vq->ready; + area = &dev->reconnect_status; + dev_reconnect = (struct vhost_reconnect_data *)area->vaddr; + + area = &vq->reconnect_info; + vq_reconnect = (struct vhost_reconnect_vring *)area->vaddr; + /*check if the vq is reconnect, if yes then update the last_avail_idx*/ + if ((vq_reconnect->last_avail_idx != + vq_info.split.avail_index) && + (dev_reconnect->reconnect_time != 0)) { + vq_info.split.avail_index = + vq_reconnect->last_avail_idx; + } + ret = -EFAULT; if (copy_to_user(argp, &vq_info, sizeof(vq_info))) break;