Received: by 2002:a05:6a10:6744:0:0:0:0 with SMTP id w4csp1008132pxu; Fri, 16 Oct 2020 01:05:53 -0700 (PDT) X-Google-Smtp-Source: ABdhPJzwGvrezYvs8pRPSsXb9k+ZZe3eefxdqQKVps5yj3/JSO9midPg5aKY873p8ao7R+og8QH1 X-Received: by 2002:aa7:cb8f:: with SMTP id r15mr2552796edt.356.1602835553558; Fri, 16 Oct 2020 01:05:53 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1602835553; cv=none; d=google.com; s=arc-20160816; b=As2JFKcVdakKBJOE/hhPBRVLemAG3fCwrUY/vhmWinpJoNOi/chHiCCDN4NxYj6iuH HYaFiHUc/Jo+/WdWmDctqf7tDcqG6Ae6G1w0L5xa/liq78N6btBbs3HwslXpBqlv4l+a VQnmhua/ywTq9pdSptY2GtltTl0jhZqT2yCqA+3ar/dEnCfBbYX3C2BlSQMdvuCsM9lj W0M9NhQDEGEaiuaazuNAdpM/BFa78AH2U6tWAnTbXEiMw8Xl8eN7dtqmx3eRCIlEzgPM 9N3sf9RkKIx9tGknRids5+u5GEmTWlpvugvmCCldRBEOKKMgFQLmMCM5GTpvEUO98FjK uqrg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:cc:to:subject:message-id:date:from:in-reply-to :references:mime-version:dkim-signature; bh=INEWr2CP3X204G2+3BdRku1fQyrBAx5gcE6UKT3OyOY=; b=fXp1N4ykXirlhMZCRFws1WQBcDIdze9D3V2mH0tNUwVXqt/fKBIDYW18PFvsHDE5T8 emZCpt5R1Th7o3yxn8HEC1Uww17M5evOidHpZ3pSJLWy40okH1LJL//E+Gp9eglYSsh6 KilQR4WWdb7xiroXYDJZyWqQppwLPpIz1vAqUpWMzDRwY2RWXtvLwHJGzITHbfVU73FZ Api+4VLCitjjMRQQqCG7J8CQgRxnptrmIkwsFWmZK7GuvgDCfGQ/gvGcqHP7zS1MWXeY KElRsHAXsMlh/g4aPcXJTWjod9kHAxO7X9zsuwp/oYauvzI+HXyYv1jNew6qzUpvrRnn KR/g== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@ffwll.ch header.s=google header.b=PYscHGEN; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id dt13si1183265ejb.195.2020.10.16.01.05.30; Fri, 16 Oct 2020 01:05:53 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; dkim=pass header.i=@ffwll.ch header.s=google header.b=PYscHGEN; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S2405009AbgJPIDz (ORCPT + 99 others); Fri, 16 Oct 2020 04:03:55 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:50860 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S2404995AbgJPIDx (ORCPT ); Fri, 16 Oct 2020 04:03:53 -0400 Received: from mail-oi1-x241.google.com (mail-oi1-x241.google.com [IPv6:2607:f8b0:4864:20::241]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 0FAC0C061755 for ; Fri, 16 Oct 2020 01:03:52 -0700 (PDT) Received: by mail-oi1-x241.google.com with SMTP id 16so1467417oix.9 for ; Fri, 16 Oct 2020 01:03:52 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ffwll.ch; s=google; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=INEWr2CP3X204G2+3BdRku1fQyrBAx5gcE6UKT3OyOY=; b=PYscHGENn896fSGfivBibPnplvLtnL/b2OJMTMD4dpMHQHxNw+64iWRis9sD2nvJ3L GOV/hMMVbuuc/Dh9AKUrk63GN8LOY99ye984UM1brrmBjSpje4c9K1cdtapwwULr3uYK 5a7sZUI60W2i8WwwI8UzzVDb5t1NNMYrEKGHc= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=INEWr2CP3X204G2+3BdRku1fQyrBAx5gcE6UKT3OyOY=; b=YqSyliNCjGK0KInccfRUT14aZEpXBkTHoDn6JxI3FjT7sABQaoZ/Pd+nfMra0gpkeW gw/EZuuzKGJPtv/ZQpteG56vE9+l6YFhx0VJD8sgQOyC3LTrrS05WX8l0lXhbTWGGzoT BXOvUOyXzStrSrPM7y+4kxojOxtTbeJy0XLy5duIjMBLrBLcyDjBRa715iRDlKXCCapp Vu7yqjuvGlMNDA7stfB/ZCfmigZyhijVbQWZnuAuLMtOzTBSk+2PYedW+eWAvENtdOgf Hp9IGVSxS7I7HaIHs8b98df1Sz2/faKmxbgKY9AshyPKNG+DoZtIaAcZVwVLuSYuuply 4t8g== X-Gm-Message-State: AOAM530zzYgmcgMvcDVTHgM/G5FkEnHmzH4hOa8g8n6Jxs9jOwULpPHz MWgS7R/4fRsRiBuLk0/j3jTFOyNwkx4c1bAQ7ddJvQ== X-Received: by 2002:aca:cc01:: with SMTP id c1mr1679690oig.128.1602835431410; Fri, 16 Oct 2020 01:03:51 -0700 (PDT) MIME-Version: 1.0 References: <20201009075934.3509076-1-daniel.vetter@ffwll.ch> <20201009075934.3509076-6-daniel.vetter@ffwll.ch> <4685181e-8306-0d96-8be6-592b3c563cbf@nvidia.com> In-Reply-To: <4685181e-8306-0d96-8be6-592b3c563cbf@nvidia.com> From: Daniel Vetter Date: Fri, 16 Oct 2020 10:03:40 +0200 Message-ID: Subject: Re: [PATCH v2 05/17] mm/frame-vector: Use FOLL_LONGTERM To: John Hubbard Cc: DRI Development , LKML , KVM list , Linux MM , Linux ARM , linux-samsung-soc , "open list:DMA BUFFER SHARING FRAMEWORK" , linux-s390 , Daniel Vetter , Jason Gunthorpe , Pawel Osciak , Marek Szyprowski , Kyungmin Park , Tomasz Figa , Mauro Carvalho Chehab , Andrew Morton , =?UTF-8?B?SsOpcsO0bWUgR2xpc3Nl?= , Jan Kara , Dan Williams Content-Type: text/plain; charset="UTF-8" Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Fri, Oct 16, 2020 at 9:54 AM John Hubbard wrote: > > On 10/9/20 12:59 AM, Daniel Vetter wrote: > ... > > @@ -48,40 +47,25 @@ int get_vaddr_frames(unsigned long start, unsigned int nr_frames, > > > > start = untagged_addr(start); > > > > - mmap_read_lock(mm); > > - locked = 1; > > - vma = find_vma_intersection(mm, start, start + 1); > > - if (!vma) { > > - ret = -EFAULT; > > - goto out; > > - } > > - > > - /* > > - * While get_vaddr_frames() could be used for transient (kernel > > - * controlled lifetime) pinning of memory pages all current > > - * users establish long term (userspace controlled lifetime) > > - * page pinning. Treat get_vaddr_frames() like > > - * get_user_pages_longterm() and disallow it for filesystem-dax > > - * mappings. > > - */ > > - if (vma_is_fsdax(vma)) { > > - ret = -EOPNOTSUPP; > > - goto out; > > - } > > - > > - if (!(vma->vm_flags & (VM_IO | VM_PFNMAP))) { > > + ret = pin_user_pages_fast(start, nr_frames, > > + FOLL_FORCE | FOLL_WRITE | FOLL_LONGTERM, > > + (struct page **)(vec->ptrs)); > > + if (ret > 0) { > > None of the callers that we have today will accept anything less than > ret == nr_frames. And the whole partially pinned region idea turns out > to be just not useful for almost everyone, from what I recall of the gup/pup > call sites. So I wonder if we should just have get_vaddr_frames do the > cleanup here and return -EFAULT, if ret != nr_frames ? Yeah I noticed that the calling convention here is a bit funny. But I with these frame-vector helpers now being part of drivers/media it's up to media folks if they want to clean that up, or leave it as is. If this would be in drm I'd say we'll have the loud warning and tainting due to CONFIG_STRICT_FOLLOW_PFN=n for 2-3 years. Then assuming no big complaints showed up, rip it all out and just directly call pup in each place that wants it (like I've done for habanalabs and exynos). -Daniel -- Daniel Vetter Software Engineer, Intel Corporation http://blog.ffwll.ch