Received: by 2002:a05:7412:8d10:b0:f3:1519:9f41 with SMTP id bj16csp1512202rdb; Thu, 7 Dec 2023 00:47:03 -0800 (PST) X-Google-Smtp-Source: AGHT+IF0Ah3OUNLF5pQ77BJwwzqoXW/9uNaqPJszIsD8lwbst3gXzY4F/Gr7cPGPGqaReLAyrGtS X-Received: by 2002:a05:6a00:4003:b0:6cd:e2c2:13d7 with SMTP id by3-20020a056a00400300b006cde2c213d7mr3353461pfb.23.1701938822705; Thu, 07 Dec 2023 00:47:02 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1701938822; cv=none; d=google.com; s=arc-20160816; b=l1Xh1bPjIThtpZNbovwA8n86xqT5cuUehQn7QcmoqValrU5CEOui9T8NErRPjnYfDp NxirJFPUzQB00Z8V3pJyrdFcbaIT3m7w8ktJXAVJP+1dZ/IzGun6DjeTuU3Pi9DNHFpq 6WqhdThBLJwh+kaLULMy+JlFpEphJLYwealUtUN7PE/j4AUioMVWGjYbt3EHkQHaG44p hGoy0oT6yLDs+6FrDLpACE9c6F5fLT7tIN9d92TrbdDxekllgZZdnHVs/E35te1lZd8i 7Z3WJaGOON99HN/Y3WFB0LTpOtmwvZMEYcmEXPef6KGoEj8A5DwbWbjlFtvpKypwtqt0 Dkhw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:cc:to:subject :message-id:date:from:in-reply-to:references:mime-version :dkim-signature; bh=mdtFh8RVeKzHOaKhM9KvrZ9dXcN/A0fKoNgjzoMFQLI=; fh=ir7cOO3TfsXjq7Y5DnAiuq3+k2gzyaCCb4HcXAX8/h4=; b=VU7VLhkyIDZ2RrDpzztQF/bV3f4ZGr91ZGyKyiSBJUoRDs5F9+F/AAVJysxJWQ69FF RbK2uYS+J1l3O6AJ265K1KSZ2uzjn0qBHJE1ekcqWvdZtQ9kbildGAqZQUPFfDi+Htr3 1g32OIb/HHk4bBUpFINMayIKDL8p6KlC0JZTHdIgj84bsDiJAiL0KnKmAHmuJg1fu3u/ MgZ6ocIezT7G59Qh3bExjxfd0oyuAfRDYaxgDvu7dG6VfFt9jSQTtEv7kKnU8CWr80zJ sMTQqHPYjcVj8/bmiI2872WyaBoDjIbJ3rTLJGdID1ypOCvxZHuaXhlrbR9ZlWmuCYgp /WxA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@redhat.com header.s=mimecast20190719 header.b=dlz8V8W8; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.36 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=redhat.com Return-Path: Received: from pete.vger.email (pete.vger.email. [23.128.96.36]) by mx.google.com with ESMTPS id ay14-20020a056a00300e00b006cbf2bc6eaesi875646pfb.188.2023.12.07.00.47.02 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 07 Dec 2023 00:47:02 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.36 as permitted sender) client-ip=23.128.96.36; Authentication-Results: mx.google.com; dkim=pass header.i=@redhat.com header.s=mimecast20190719 header.b=dlz8V8W8; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.36 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 pete.vger.email (Postfix) with ESMTP id 7E13881F367D; Thu, 7 Dec 2023 00:46:58 -0800 (PST) X-Virus-Status: Clean X-Virus-Scanned: clamav-milter 0.103.11 at pete.vger.email Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1378367AbjLGIqZ (ORCPT + 99 others); Thu, 7 Dec 2023 03:46:25 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:59028 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230137AbjLGIqW (ORCPT ); Thu, 7 Dec 2023 03:46:22 -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 52F54C6 for ; Thu, 7 Dec 2023 00:46:28 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1701938787; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=mdtFh8RVeKzHOaKhM9KvrZ9dXcN/A0fKoNgjzoMFQLI=; b=dlz8V8W8PqbnzLiiOQV47M7c7gbaPgCHAWaeVP0lID/i7dPr4K2u/rYwoQidSP31cc0T59 MmQbdOnlEqzE/Y5XfP4cr+v9evsSMvzZI6Pwve7jg8sHCYZ/KQhnW5VoGCD8PLkOaVjOOE r23AIGW+QBbtBQ7oamDiJNlVyve8jAo= Received: from mail-pj1-f72.google.com (mail-pj1-f72.google.com [209.85.216.72]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-124-Ivgk4BBuOdms3sjwnuDIMg-1; Thu, 07 Dec 2023 03:46:26 -0500 X-MC-Unique: Ivgk4BBuOdms3sjwnuDIMg-1 Received: by mail-pj1-f72.google.com with SMTP id 98e67ed59e1d1-28643b4cef5so996925a91.1 for ; Thu, 07 Dec 2023 00:46:26 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1701938785; x=1702543585; h=content-transfer-encoding:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=mdtFh8RVeKzHOaKhM9KvrZ9dXcN/A0fKoNgjzoMFQLI=; b=Ryxrz1dEnr5BeUDPnrnZ3O4vBvn0qY0BJ0JHaSNNyzRy0fmBRzG8d1GkSz2ZivhTR3 mf0i8cYboWjqAXMXC4XuYw95c5pLXp58iAjDC1rLx7GaATrkAfmchR7Q5t46oYKAQAg5 pp8otAk0svwYqn2Y1mBb9wYdvgMLBJd59mubZHn2Me0/TdLmKfw8uQD5jmF8VWfSExYf J9Ugls+8e0wxcie6bf5MPsdbDxJfSlASS4BjgB8bCGj9jnSJW+Ip8SjWMOQULT5vqNEg 1VGcMXtLqGHLjqZw3eWS87YdARLKC5GpWA7Vf4IHrX0tjK2sTnD818Z0Z9rqaLXWdeWh UL1A== X-Gm-Message-State: AOJu0Yx5vFD9+4AZt+q0jOPHKjQ12GliVStNA6mdECS98+I4+RKm6DOz r2uekXMqRkoRMxJQCnerCcMxPEM9pCMcG7hgE5gGcLwpaz2cJD8J6BGIP1DOu61FAUIJmqLE65S tcf4q2H7N+eRO9JP1mExPY3zbccMqcyd1v40BsbLI X-Received: by 2002:a17:90a:bb83:b0:286:6cc1:3f29 with SMTP id v3-20020a17090abb8300b002866cc13f29mr1974845pjr.96.1701938785134; Thu, 07 Dec 2023 00:46:25 -0800 (PST) X-Received: by 2002:a17:90a:bb83:b0:286:6cc1:3f29 with SMTP id v3-20020a17090abb8300b002866cc13f29mr1974837pjr.96.1701938784837; Thu, 07 Dec 2023 00:46:24 -0800 (PST) MIME-Version: 1.0 References: <20231205083444.3029239-1-lulu@redhat.com> <20231205083444.3029239-6-lulu@redhat.com> In-Reply-To: <20231205083444.3029239-6-lulu@redhat.com> From: Jason Wang Date: Thu, 7 Dec 2023 16:46:12 +0800 Message-ID: Subject: Re: [PATCH v3 5/7] vduse: Add file operation for mmap To: Cindy Lu Cc: mst@redhat.com, xieyongji@bytedance.com, linux-kernel@vger.kernel.org, maxime.coquelin@redhat.com Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable 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 pete.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 (pete.vger.email [0.0.0.0]); Thu, 07 Dec 2023 00:46:58 -0800 (PST) On Tue, Dec 5, 2023 at 4:35=E2=80=AFPM Cindy Lu wrote: > > 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 =3D vmf->vma->vm_file->private_data; > + struct vm_area_struct *vma =3D vmf->vma; > + u16 index =3D vma->vm_pgoff; > + struct vduse_virtqueue *vq; > + unsigned long vaddr; > + > + /* index 0 page reserved for vduse status*/ I'd suggest to tweak it as "reserved for device state" > + if (index =3D=3D 0) { > + vaddr =3D dev->vdpa_reconnect_vaddr; > + } else { > + /* index 1+vq_number page reserved for vduse vqs*/ And "reserved for virtqueue state" > + vq =3D &dev->vqs[index - 1]; > + vaddr =3D 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)) If there's no chance for VDUSE_RECONNCT_MMAP_SIZE to differ from PAGE_SIZE. Let's just use PAGE_SIZE here. > + return VM_FAULT_SIGBUS; > + return VM_FAULT_NOPAGE; > +} > + > +static const struct vm_operations_struct vduse_vm_ops =3D { > + .fault =3D vduse_vm_fault, > +}; > + > +static int vduse_dev_mmap(struct file *file, struct vm_area_struct *vma) > +{ > + struct vduse_dev *dev =3D file->private_data; > + unsigned long vaddr =3D 0; > + unsigned long index =3D vma->vm_pgoff; > + struct vduse_virtqueue *vq; > + > + if (vma->vm_end - vma->vm_start !=3D PAGE_SIZE) > + return -EINVAL; > + if ((vma->vm_flags & VM_SHARED) =3D=3D 0) > + return -EINVAL; > + > + /*check if Userspace App map the page number larger than kernel a= llocated*/ Code explains itself, let's just drop the comment please. > + if (index > dev->vq_num + 1) > + return -EINVAL; > + > + /* index 0 page reserved for vduse status*/ This comment duplicates the one in fault. I'd suggest to move it to uAPI. > + if (index =3D=3D 0) { > + vaddr =3D dev->vdpa_reconnect_vaddr; > + } else { > + /* index 1+vq_number page reserved for vduse vqs*/ > + vq =3D &dev->vqs[index - 1]; > + vaddr =3D vq->vdpa_reconnect_vaddr; > + } > + /* Check whether the memory for the mmap was allocated by the ker= nel. > + * If not, this device may not have been created/destroyed correc= tly. > + */ Code explains, so let's drop the comment. > + if (vaddr =3D=3D 0) > + return -EOPNOTSUPP; > + > + /* check if the address is page aligned, if not, > + * this address maybe damaged > + */ And this comment. Thanks