From patchwork Wed Jun 28 06:59:16 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Cindy Lu X-Patchwork-Id: 113688 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:994d:0:b0:3d9:f83d:47d9 with SMTP id k13csp8751900vqr; Wed, 28 Jun 2023 01:07:51 -0700 (PDT) X-Google-Smtp-Source: ACHHUZ4pmmSQ58gLpnR7GC6n/VbuCw+7OtJtDrjAr5+/a6S3RJ3POyhqdSkv17lwbcST5JvXTxiJ X-Received: by 2002:a17:906:221a:b0:988:815c:ba09 with SMTP id s26-20020a170906221a00b00988815cba09mr3524651ejs.4.1687939671403; Wed, 28 Jun 2023 01:07:51 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1687939671; cv=none; d=google.com; s=arc-20160816; b=MIV2pNh9/ex9x2WI9lCfY2Tmt6wLfJSwnPXUuPqzdPsWLpAcXV2L0NH4RXRUa12KjD bqZi2JmrYOfNJmq9MszXGKUiGjcfvIk02KRKjB3H5UX9r9Uwtu2jNdmlqyOHmo7RNOEf /SOvR0nEuZPvq0DEoAQp5BVxyorcQW8nRI+o7CRhbJmaA3Qi7YlFVO1vrpSdeAufDWdV 93N7PjZxqrpV3Mfb4Dtwh57cFpRcvgTFc4r55vDVZJ3+es5L6Q3WfZprL0UOQ1C4YrTB QcPOrNPDaRs7Hoomokbn36GnPF63QkmG62wymoJBFZpIUt+V3OgidUSFIJzhr4U+cXeS e66w== 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=Rjet8Ukl1WyvnmqebMgJ6muk1ycBNL7JSNW8bedLLZI=; fh=NOG8CJEG4WJu4DlPLKvyF6THcrTOjShCi1CeGqtRM/E=; b=P7WkVyO0m/DN8iOgt8QuvPz7hzdJgiXAKcqtGnKY6bU6mjXGJ6NeJ3l6wQeNg2CrXf Z/Nkea+gtj45gSwz0wnjZmTg1aXY/jh4N21FVXEbhn5gOOlkqfv26uWotHli0z5K8fcL WBhZ82wZsDGzhXWyCDutZ6Al6j/zNrWHZXFBWRABOp6T3Sm04ARRA44XlpmU8b2IJ38Z nsc9Bj3yNnetkSbV2BI9qV9KhS9C0EXn2ks1ZRbkRSS3oFBpR5CycC4HQzvAET9/WvYQ E2chf9wx494uluZSPpvgykgH4SFJqCmWipq5ZdUGVVo2K2UDUBWgvVYDze2G++tIYq5D naHQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@redhat.com header.s=mimecast20190719 header.b=SMImhwbE; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=redhat.com Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id jo16-20020a170906f6d000b00991fe608811si2201367ejb.27.2023.06.28.01.07.27; Wed, 28 Jun 2023 01:07:51 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass header.i=@redhat.com header.s=mimecast20190719 header.b=SMImhwbE; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=redhat.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S232999AbjF1IGY (ORCPT + 99 others); Wed, 28 Jun 2023 04:06:24 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.133.124]:33752 "EHLO us-smtp-delivery-124.mimecast.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S232303AbjF1IBx (ORCPT ); Wed, 28 Jun 2023 04:01:53 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1687939263; 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=Rjet8Ukl1WyvnmqebMgJ6muk1ycBNL7JSNW8bedLLZI=; b=SMImhwbEG6F8hlscNlTedfggDK//rdQE3nRtDkiymxSNkBUdind3SpDpPd0WULwdfXXCBe 2geYUJWwZo4QntG66qlWsAio4TBQcWlRn5a3CcD7t/jGKTRhRuGbU7nAs2UiFF8nF5hQZw odsNnZNgW3sab4vZT73ILVI0KgV3hVs= Received: from mimecast-mx02.redhat.com (mx3-rdu2.redhat.com [66.187.233.73]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id us-mta-645-9O6KTV6nMZyR72Za4PuBZQ-1; Wed, 28 Jun 2023 02:59:31 -0400 X-MC-Unique: 9O6KTV6nMZyR72Za4PuBZQ-1 Received: from smtp.corp.redhat.com (int-mx09.intmail.prod.int.rdu2.redhat.com [10.11.54.9]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx02.redhat.com (Postfix) with ESMTPS id D90621C05156; Wed, 28 Jun 2023 06:59:30 +0000 (UTC) Received: from server.redhat.com (ovpn-13-142.pek2.redhat.com [10.72.13.142]) by smtp.corp.redhat.com (Postfix) with ESMTP id 51A62492B02; Wed, 28 Jun 2023 06:59:27 +0000 (UTC) From: Cindy Lu To: lulu@redhat.com, jasowang@redhat.com, mst@redhat.com, maxime.coquelin@redhat.com, xieyongji@bytedance.com, kvm@vger.kernel.org, linux-kernel@vger.kernel.org, virtualization@lists.linux-foundation.org, netdev@vger.kernel.org Subject: [RFC 1/4] vduse: Add the struct to save the vq reconnect info Date: Wed, 28 Jun 2023 14:59:16 +0800 Message-Id: <20230628065919.54042-2-lulu@redhat.com> In-Reply-To: <20230628065919.54042-1-lulu@redhat.com> References: <20230628065919.54042-1-lulu@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 3.1 on 10.11.54.9 Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-getmail-retrieved-from-mailbox: =?utf-8?q?INBOX?= X-GMAIL-THRID: =?utf-8?q?1769933028579143467?= X-GMAIL-MSGID: =?utf-8?q?1769933028579143467?= From: Your Name this struct is to save the reconnect info struct, in this struct saved the page info that alloc to save the reconnect info Signed-off-by: Cindy Lu --- drivers/vdpa/vdpa_user/vduse_dev.c | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/drivers/vdpa/vdpa_user/vduse_dev.c b/drivers/vdpa/vdpa_user/vduse_dev.c index 26b7e29cb900..f845dc46b1db 100644 --- a/drivers/vdpa/vdpa_user/vduse_dev.c +++ b/drivers/vdpa/vdpa_user/vduse_dev.c @@ -72,6 +72,12 @@ struct vduse_umem { struct page **pages; struct mm_struct *mm; }; +struct vdpa_reconnect_info { + u32 index; + phys_addr_t addr; + unsigned long vaddr; + phys_addr_t size; +}; struct vduse_dev { struct vduse_vdpa *vdev; @@ -106,6 +112,7 @@ struct vduse_dev { u32 vq_align; struct vduse_umem *umem; struct mutex mem_lock; + struct vdpa_reconnect_info reconnect_info[64]; }; struct vduse_dev_msg { From patchwork Wed Jun 28 06:59:17 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Cindy Lu X-Patchwork-Id: 113700 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:994d:0:b0:3d9:f83d:47d9 with SMTP id k13csp8765388vqr; Wed, 28 Jun 2023 01:39:49 -0700 (PDT) X-Google-Smtp-Source: ACHHUZ77qygAA2k+ZIYv0dNadwYz7QriyE8BAgaY+1AFPvIvWUP6GUv3LHZETe0ja/ylOzNXQUsT X-Received: by 2002:a17:906:73cc:b0:98d:b10f:f3cd with SMTP id n12-20020a17090673cc00b0098db10ff3cdmr8181318ejl.7.1687941589345; Wed, 28 Jun 2023 01:39:49 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1687941589; cv=none; d=google.com; s=arc-20160816; b=WSnWQIbJe1JKD6QaeWqF3fCn43kGc8x61SDyTX/9klHbVG5hnPfbypDwzb956yJHC1 jSstDmDXXWPuN1Gl6BfjlEXiaSN1F3XRs57vGJ9T0xMbHts59mL31HAckSVUTkbvYpKv fAHfzXVMGxNYfsggKaohsDaRKf6SkS3yIb9bLUPSEkOfLDp83pUvyjgX6fieWSdjQ/xp sjEyOw0FvfsT0W/U7FxXEMT5btrJAzQZIg+eIv4MHol5D9nAz5+pjjUPK5tZJ0ALMN9t GH65lgHqmmpEJUdrW1n5FSXT5kWsy29l2sqHU+EXw8P/6EWZmJ47K+Dt75v0d8qO3Txf rDHg== 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=csNRQntj+qYkEtYEdA8LKIDg2tovNr8UB73l+ephPGs=; fh=NOG8CJEG4WJu4DlPLKvyF6THcrTOjShCi1CeGqtRM/E=; b=U/REyJ0JWgwpTIz82qKNkkPTDQGSYKhrvw1GC9MvsJPM6vDks3NuEDgAzwE9E2T+jz Nk+1VurjyyDSEnj3NbiZMrpQGVHxw1cn1GOg6loD6xjayCgruHMcvQlYwAGur5w2kKWZ dadCTzy3umcx82iUzWL2vdEy4qt/DKLzVf+uwyfGDYT3fTmY9awje/LZM79BRxnHFGGx fF9lyAbbvVxdP5LUEhGOI7VtDfGvuYDpS53MaeV5KO+zkxJbhs2PUgdNvsP7Juwa+fMO 2zFz/Ob/Pb25zUtuzFVBpzE5rpjmMPhiuviG5lkGw4oBYNIai5oZY9Jnoa1DZ+6lPxLq xUBA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@redhat.com header.s=mimecast20190719 header.b="QuiqpCe/"; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=redhat.com Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id g8-20020a170906348800b0098d2f715b83si5170549ejb.626.2023.06.28.01.39.24; Wed, 28 Jun 2023 01:39:49 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass header.i=@redhat.com header.s=mimecast20190719 header.b="QuiqpCe/"; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=redhat.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S233340AbjF1II5 (ORCPT + 99 others); Wed, 28 Jun 2023 04:08:57 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.133.124]:42704 "EHLO us-smtp-delivery-124.mimecast.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S232315AbjF1ICC (ORCPT ); Wed, 28 Jun 2023 04:02:02 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1687939273; 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=csNRQntj+qYkEtYEdA8LKIDg2tovNr8UB73l+ephPGs=; b=QuiqpCe/zYsnrWuCooc1WBuN7YSAMHirjIDRfHFqolfKAtwUHo7j9Xp5KJ/TxO4VpayGyg hbp7CsqPdx3HcVeyGnxj696DZyNsx0dwotyhidbU70yWKdHrHmwEuMORwz6lvt5r/ZwXhA FIaRxUHX4RA1E2lKkwVgRgxPb9HOzEA= Received: from mimecast-mx02.redhat.com (mx3-rdu2.redhat.com [66.187.233.73]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id us-mta-86-t2pgzsuqNTeSfM39pUP_9w-1; Wed, 28 Jun 2023 02:59:35 -0400 X-MC-Unique: t2pgzsuqNTeSfM39pUP_9w-1 Received: from smtp.corp.redhat.com (int-mx09.intmail.prod.int.rdu2.redhat.com [10.11.54.9]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx02.redhat.com (Postfix) with ESMTPS id 0DC8B1C08783; Wed, 28 Jun 2023 06:59:35 +0000 (UTC) Received: from server.redhat.com (ovpn-13-142.pek2.redhat.com [10.72.13.142]) by smtp.corp.redhat.com (Postfix) with ESMTP id 7E413492B02; Wed, 28 Jun 2023 06:59:31 +0000 (UTC) From: Cindy Lu To: lulu@redhat.com, jasowang@redhat.com, mst@redhat.com, maxime.coquelin@redhat.com, xieyongji@bytedance.com, kvm@vger.kernel.org, linux-kernel@vger.kernel.org, virtualization@lists.linux-foundation.org, netdev@vger.kernel.org Subject: [RFC 2/4] vduse: Add file operation for mmap Date: Wed, 28 Jun 2023 14:59:17 +0800 Message-Id: <20230628065919.54042-3-lulu@redhat.com> In-Reply-To: <20230628065919.54042-1-lulu@redhat.com> References: <20230628065919.54042-1-lulu@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 3.1 on 10.11.54.9 Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-getmail-retrieved-from-mailbox: =?utf-8?q?INBOX?= X-GMAIL-THRID: =?utf-8?q?1769935039812593738?= X-GMAIL-MSGID: =?utf-8?q?1769935039812593738?= From: Your Name 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 | 49 ++++++++++++++++++++++++++++++ 1 file changed, 49 insertions(+) diff --git a/drivers/vdpa/vdpa_user/vduse_dev.c b/drivers/vdpa/vdpa_user/vduse_dev.c index f845dc46b1db..1b833bf0ae37 100644 --- a/drivers/vdpa/vdpa_user/vduse_dev.c +++ b/drivers/vdpa/vdpa_user/vduse_dev.c @@ -1313,6 +1313,54 @@ 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 vdpa_reconnect_info *info; + info = &dev->reconnect_info[index]; + + vma->vm_page_prot = pgprot_noncached(vma->vm_page_prot); + if (remap_pfn_range(vma, vmf->address & PAGE_MASK, PFN_DOWN(info->addr), + 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_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; + + if (vma->vm_end - vma->vm_start != PAGE_SIZE) + return -EINVAL; + if ((vma->vm_flags & VM_SHARED) == 0) + return -EINVAL; + + if (index > 65535) + return -EINVAL; + + info = &dev->reconnect_info[index]; + if (info->addr & (PAGE_SIZE - 1)) + return -EINVAL; + if (vma->vm_end - vma->vm_start != info->size) { + return -ENOTSUPP; + } + + vm_flags_set(vma, VM_IO | VM_PFNMAP | VM_DONTEXPAND | VM_DONTDUMP); + vma->vm_ops = &vduse_vm_ops; + + return 0; +} + static int vduse_dev_open(struct inode *inode, struct file *file) { int ret; @@ -1345,6 +1393,7 @@ static const struct file_operations vduse_dev_fops = { .unlocked_ioctl = vduse_dev_ioctl, .compat_ioctl = compat_ptr_ioctl, .llseek = noop_llseek, + .mmap = vduse_mmap, }; static struct vduse_dev *vduse_dev_create(void) From patchwork Wed Jun 28 06:59:18 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Cindy Lu X-Patchwork-Id: 113694 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:994d:0:b0:3d9:f83d:47d9 with SMTP id k13csp8762859vqr; Wed, 28 Jun 2023 01:33:51 -0700 (PDT) X-Google-Smtp-Source: ACHHUZ6LpFHZgl5I3heZZlJbKU8mBVfvQG8VIKR2u2BK9UpyXdrcUgFfE5Z0fxigukm+PMyBPM/Q X-Received: by 2002:a05:6a20:7d8e:b0:116:696f:1dd1 with SMTP id v14-20020a056a207d8e00b00116696f1dd1mr5989856pzj.4.1687941231653; Wed, 28 Jun 2023 01:33:51 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1687941231; cv=none; d=google.com; s=arc-20160816; b=qo5JzHmMTec4FJziSq3FZYObZ5lA/HvBJjPxcGp0Xa1J3B14yGUsXEe//t4ek1iijM 4NyVePnxD5hUxoUBZ8ul4b8lbBJS10dV7IAafachGwekK5d8ggw7eWlO8TeABDihjBAY J4IB3RClO9A8KubpkYvzExNNahR9PxDLkRyW3el10/O54E4HsGG6++AUr4UuFE/O1faA SMBV6283KkKikuho4T5H3NZ0yleZgNOVKxS5OuB1adz6Lmdlz7FQYzYkysXADui88WBF RbaOepPtgGdYQ2jgvmoQp9Mt1+hiCLvWRnGpTm7l2XgoTc5HpZ5ns6RQwPGzB/IHRl3a Xy/A== 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=Vm8YdVuG5g/R4Upgn7ExptiiekTMB39MDE6nGXwwg5I=; fh=NOG8CJEG4WJu4DlPLKvyF6THcrTOjShCi1CeGqtRM/E=; b=TAEpRsMigW+wrB1q0OmqsLU92BdFwJyvpuY0UTnrWOOUjkn1BQ3jyL1Ag9Ea6RD/K+ d3WzIAPOCIJbet6YblSXSOdlB3IuOhdNPybDf25n63YLVKlaU0/qr6mDlpqZ4NJ6BvCn 6YmXfAsrqpjSo3pFPH9deYMR3KEk+1TvVnF9ECgn0c7l5bpXAfj8r/7PjDBLAbHgXXRf Bs2W/WIJvsJ2mTFbPjcDanCVpDtge1Maz6bIuapdkgxqRtFJFYRAtYZwfjIv6IFwVquk FeeuF+q6Npgsei682jQQ40G3ZObXj9Rxi5knbVCQ7VdT7dx3qJ7Bfby7UwzJL5TlYMnv QL5A== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@redhat.com header.s=mimecast20190719 header.b=VjQCD5ww; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=redhat.com Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id cd23-20020a056a00421700b0067de347ee12si2598440pfb.164.2023.06.28.01.33.35; Wed, 28 Jun 2023 01:33:51 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass header.i=@redhat.com header.s=mimecast20190719 header.b=VjQCD5ww; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=redhat.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S232154AbjF1IHW (ORCPT + 99 others); Wed, 28 Jun 2023 04:07:22 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.129.124]:52113 "EHLO us-smtp-delivery-124.mimecast.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S232381AbjF1ICI (ORCPT ); Wed, 28 Jun 2023 04:02:08 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1687939278; 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=Vm8YdVuG5g/R4Upgn7ExptiiekTMB39MDE6nGXwwg5I=; b=VjQCD5ww+atNz7E0gkOSJimMS+f4FzL+KHIZTPOn5kqIvhrMthos20OyL1sKlV6XApFywx kn1BpotXG/445D5kwN32zmafAcJpRRr9gBfQh/GWnuyFUCK63OEjaxzYXrAOYBkEh6+XSB aUHF86FmaT9lQrcGcFIQ9vO88WUA8Ls= Received: from mimecast-mx02.redhat.com (mx3-rdu2.redhat.com [66.187.233.73]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id us-mta-115-wEAlpELWNdCfebbpAG2Kmg-1; Wed, 28 Jun 2023 02:59:39 -0400 X-MC-Unique: wEAlpELWNdCfebbpAG2Kmg-1 Received: from smtp.corp.redhat.com (int-mx09.intmail.prod.int.rdu2.redhat.com [10.11.54.9]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx02.redhat.com (Postfix) with ESMTPS id 379003C025C7; Wed, 28 Jun 2023 06:59:39 +0000 (UTC) Received: from server.redhat.com (ovpn-13-142.pek2.redhat.com [10.72.13.142]) by smtp.corp.redhat.com (Postfix) with ESMTP id A62E0492B02; Wed, 28 Jun 2023 06:59:35 +0000 (UTC) From: Cindy Lu To: lulu@redhat.com, jasowang@redhat.com, mst@redhat.com, maxime.coquelin@redhat.com, xieyongji@bytedance.com, kvm@vger.kernel.org, linux-kernel@vger.kernel.org, virtualization@lists.linux-foundation.org, netdev@vger.kernel.org Subject: [RFC 3/4] vduse: Add the function for get/free the mapp pages Date: Wed, 28 Jun 2023 14:59:18 +0800 Message-Id: <20230628065919.54042-4-lulu@redhat.com> In-Reply-To: <20230628065919.54042-1-lulu@redhat.com> References: <20230628065919.54042-1-lulu@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 3.1 on 10.11.54.9 Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-getmail-retrieved-from-mailbox: =?utf-8?q?INBOX?= X-GMAIL-THRID: =?utf-8?q?1769934665019982978?= X-GMAIL-MSGID: =?utf-8?q?1769934665019982978?= From: Your Name Add the function for get/free pages, ad this info will saved in dev->reconnect_info Signed-off-by: Cindy Lu --- drivers/vdpa/vdpa_user/vduse_dev.c | 35 ++++++++++++++++++++++++++++++ 1 file changed, 35 insertions(+) diff --git a/drivers/vdpa/vdpa_user/vduse_dev.c b/drivers/vdpa/vdpa_user/vduse_dev.c index 1b833bf0ae37..3df1256eccb4 100644 --- a/drivers/vdpa/vdpa_user/vduse_dev.c +++ b/drivers/vdpa/vdpa_user/vduse_dev.c @@ -1313,6 +1313,35 @@ static struct vduse_dev *vduse_dev_get_from_minor(int minor) return dev; } +int vduse_get_vq_reconnnect(struct vduse_dev *dev, u16 idx) +{ + struct vdpa_reconnect_info *area; + void *addr = (void *)get_zeroed_page(GFP_KERNEL); + + area = &dev->reconnect_info[idx]; + + area->addr = virt_to_phys(addr); + area->vaddr = (unsigned long)addr; + area->size = PAGE_SIZE; + area->index = idx; + + return 0; +} + +int vduse_free_vq_reconnnect(struct vduse_dev *dev, u16 idx) +{ + struct vdpa_reconnect_info *area; + + area = &dev->reconnect_info[idx]; + if ((area->size == PAGE_SIZE) && (area->addr != NULL)) { + free_page(area->vaddr); + area->size = 0; + area->addr = 0; + area->vaddr = 0; + } + + return 0; +} static vm_fault_t vduse_vm_fault(struct vm_fault *vmf) { @@ -1446,6 +1475,10 @@ static int vduse_destroy_dev(char *name) mutex_unlock(&dev->lock); return -EBUSY; } + for (int i = 0; i < dev->vq_num; i++) { + + vduse_free_vq_reconnnect(dev, i); + } dev->connected = true; mutex_unlock(&dev->lock); @@ -1583,6 +1616,8 @@ static int vduse_create_dev(struct vduse_dev_config *config, INIT_WORK(&dev->vqs[i].kick, vduse_vq_kick_work); spin_lock_init(&dev->vqs[i].kick_lock); spin_lock_init(&dev->vqs[i].irq_lock); + + vduse_get_vq_reconnnect(dev, i); } ret = idr_alloc(&vduse_idr, dev, 1, VDUSE_DEV_MAX, GFP_KERNEL); From patchwork Wed Jun 28 06:59:19 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Cindy Lu X-Patchwork-Id: 113706 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:994d:0:b0:3d9:f83d:47d9 with SMTP id k13csp8766943vqr; Wed, 28 Jun 2023 01:43:39 -0700 (PDT) X-Google-Smtp-Source: ACHHUZ5J0pyaG7PPb5Choi6Ed3ntDzuF7gfiPXdHKS1E3ornyWO0MYgAM5eX6mayENI+I4ZmKHGs X-Received: by 2002:a17:906:18:b0:992:c9d:fa6e with SMTP id 24-20020a170906001800b009920c9dfa6emr3775904eja.0.1687941819645; Wed, 28 Jun 2023 01:43:39 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1687941819; cv=none; d=google.com; s=arc-20160816; b=u8ra2ZlvF/6hILbBPEUOr81CfFZjkWbCTqWPoDHcBnOna2lhsYeyh4kp4NtfsEaEnr 8EZ9av5UGcEEVJrXonUvdewdhrffZSDu01hhGu8+dYwqRiOQ5wQbh0QVvafwC/qaF9wb 8/v0nRolkhYIq6cuAuZRz5Wq4reUNh+hzh0crtv+Mn1PLCBxkK88WqcVRCQXLsRhr/AC +T3OVVQhGYcqSq8CWGz6jalfBemRGvgVBN53gQzdlkQm9fmo/614aKR44s+YX0N9jn6N 9Eonj9+vmA7+/LJWcCBaf4YbA0+3ieDFH9jeEAChZL+BD5cW2AtT5Qg66TingflUeIX+ cC6w== 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=JAxb7d8d9hAo9Ep6Vle9AGPfDkrTVJl7Nk2Fi7I0ejI=; fh=NOG8CJEG4WJu4DlPLKvyF6THcrTOjShCi1CeGqtRM/E=; b=kEVYTo6KGh0amvY3qwT7/cMO89+KaXBKSPxB/soUnwHN/yoyNoczoUrYe4JG6Mxl8G dE9V2zvR8Gveo7VlG68YiqW3NZZLixPYUb3/F/Iz8o6udvPWfXf5DUkK8DCBBsv7InlD jPoS1CoxViiNwiOxum/NpIaptkGzQO/HqTTQ96VyS0n0qZkAPUg+yB79SjKdsuY7nDGV Aac6udr/EEEYkygjGjvR1CCq7PqQ45oHSOKDWtLbi43mjFGHlpKniHmLA6rEsMeyHAux 1r+GlzyJyBjhturqc7kr+bNZEZloBAfzss5zc4+NqVu6uFoxYMPoZtScXHiBTv0S8P8m ebHg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@redhat.com header.s=mimecast20190719 header.b=iPnOD3cO; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=redhat.com Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id mj21-20020a170906af9500b00992559d2dd0si1101167ejb.874.2023.06.28.01.43.15; Wed, 28 Jun 2023 01:43:39 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass header.i=@redhat.com header.s=mimecast20190719 header.b=iPnOD3cO; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=redhat.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S233073AbjF1IIP (ORCPT + 99 others); Wed, 28 Jun 2023 04:08:15 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.133.124]:37744 "EHLO us-smtp-delivery-124.mimecast.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S232647AbjF1ICw (ORCPT ); Wed, 28 Jun 2023 04:02:52 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1687939321; 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=JAxb7d8d9hAo9Ep6Vle9AGPfDkrTVJl7Nk2Fi7I0ejI=; b=iPnOD3cO34trA79QROPmXXFfLnFyFR1PbHWH4K29UoghN2DoG6SfKuKgdPNf0VVyyR8tzi DxlMiSut+9TWldpVbBQpgbju/HkEt5IIuoEMKP/+Hq5HpiogJ3hVK/EUtVtHZzScbhOheB zTHG/U4RU08DchEWW/rTwdhQMCTFCXM= 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-325-3YrzZBg_P96LFy3lVXhYaA-1; Wed, 28 Jun 2023 03:00:05 -0400 X-MC-Unique: 3YrzZBg_P96LFy3lVXhYaA-1 Received: from smtp.corp.redhat.com (int-mx10.intmail.prod.int.rdu2.redhat.com [10.11.54.10]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx02.redhat.com (Postfix) with ESMTPS id 327188ED600; Wed, 28 Jun 2023 07:00:05 +0000 (UTC) Received: from server.redhat.com (ovpn-13-142.pek2.redhat.com [10.72.13.142]) by smtp.corp.redhat.com (Postfix) with ESMTP id 9FB7540BB4D; Wed, 28 Jun 2023 07:00:01 +0000 (UTC) From: Cindy Lu To: lulu@redhat.com, jasowang@redhat.com, mst@redhat.com, maxime.coquelin@redhat.com, xieyongji@bytedance.com, kvm@vger.kernel.org, linux-kernel@vger.kernel.org, virtualization@lists.linux-foundation.org, netdev@vger.kernel.org Subject: [RFC 4/4] vduse: update the vq_info in ioctl Date: Wed, 28 Jun 2023 14:59:19 +0800 Message-Id: <20230628065919.54042-5-lulu@redhat.com> In-Reply-To: <20230628065919.54042-1-lulu@redhat.com> References: <20230628065919.54042-1-lulu@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 3.1 on 10.11.54.10 Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-getmail-retrieved-from-mailbox: =?utf-8?q?INBOX?= X-GMAIL-THRID: =?utf-8?q?1769933980174708759?= X-GMAIL-MSGID: =?utf-8?q?1769935281697983418?= From: Your Name in VDUSE_VQ_GET_INFO, driver will sync the last_avail_idx with reconnect info, I have olny test the split mode, so only use this here, will add more information later 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 3df1256eccb4..b8e453eac0ce 100644 --- a/drivers/vdpa/vdpa_user/vduse_dev.c +++ b/drivers/vdpa/vdpa_user/vduse_dev.c @@ -141,6 +141,11 @@ static u32 allowed_device_id[] = { VIRTIO_ID_NET, }; +struct vhost_reconnect_vring { + uint16_t last_avail_idx; + bool avail_wrap_counter; +}; + static inline struct vduse_dev *vdpa_to_vduse(struct vdpa_device *vdpa) { struct vduse_vdpa *vdev = container_of(vdpa, struct vduse_vdpa, vdpa); @@ -1176,6 +1181,17 @@ static long vduse_dev_ioctl(struct file *file, unsigned int cmd, vq->state.split.avail_index; vq_info.ready = vq->ready; + struct vdpa_reconnect_info *area; + + area = &dev->reconnect_info[index]; + struct vhost_reconnect_vring *log_reconnect; + + log_reconnect = (struct vhost_reconnect_vring *)area->vaddr; + if (log_reconnect->last_avail_idx != + vq_info.split.avail_index) { + vq_info.split.avail_index = + log_reconnect->last_avail_idx; + } ret = -EFAULT; if (copy_to_user(argp, &vq_info, sizeof(vq_info)))