Received: by 2002:a05:6a10:8c0a:0:0:0:0 with SMTP id go10csp626119pxb; Wed, 3 Feb 2021 13:29:20 -0800 (PST) X-Google-Smtp-Source: ABdhPJxYArewUGiWjnuA5gM4MTwUvsf7IWUoM/T+34C1OURrvqPU9KGIPVO+fFpji2ZwLHYpn1s7 X-Received: by 2002:a17:906:78a:: with SMTP id l10mr3314738ejc.264.1612387760147; Wed, 03 Feb 2021 13:29:20 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1612387760; cv=none; d=google.com; s=arc-20160816; b=J9EXfwIhSqO4wEiUVpe3Q4zvLaxy8EcWaruOg44Fb7gsf2h1tweSE9QZeTSCNjnSyJ VHEEOdzG+YvR1CAhaK8C79PPI4hBE0BGxhqwgtt/6VmWLb5HCzxkluB0JHalrckqV0Gk Vyn8yNeTmkDV90EICZuHc0CPh1LdBiwjLlcmsO8tz/PAZbNRBW9mkyEp+Ht29JzA7+89 bif58laX/Im1nPT+1rS6AjTOQv2KCqVcHf+83JiB2TFDdSYzVzT3Oav57+Xa1KakxGY8 I6qNfrChK7Zf+msvg6d/UnVuaM9qy0k818G0iVAOiluckk6ndyEbnMp4HYX82WLo8P0A ytlw== 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=iZMC9aBcPlgaxRBYNOkc0uhviDBibZJkuU/B+Oy0jvs=; b=LXUCfgnf0pncooXhGxYIq1LNxjaCQf+Tszn3MMIe6Jw7fc5b26ZiNjGKzhB7/cCpiD +Rhd+jZf/Zyed7sNaQ7RFeVrlEzZsIS6OHzURhtLCmw/wDY2/R1XO73Vp3PPMmZ8kUEN RuKjnHcdX7e8pGi6hc2kNS6tPR4Myea+4kspXoir6WXd4V/CU/9RJIdvKAsV+94kDu2H 108vJdd0I7W86DjgUjBMmTa2CS9pDFUE841/lJEEohcFgkSG3B1CFmMrvQRyJjwzdNkt WO+Bjxlpogv4QIxTFqhbrXo/NiaTfQ1vJLSObrnK1DEd2jnrzOnzz6O0zuPO2PSVw4/X mDoQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@ffwll.ch header.s=google header.b=UfW064ti; 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 v5si2388899eda.107.2021.02.03.13.28.52; Wed, 03 Feb 2021 13:29:20 -0800 (PST) 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=UfW064ti; 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 S230424AbhBCV0G (ORCPT + 99 others); Wed, 3 Feb 2021 16:26:06 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:60538 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230033AbhBCV0E (ORCPT ); Wed, 3 Feb 2021 16:26:04 -0500 Received: from mail-ot1-x335.google.com (mail-ot1-x335.google.com [IPv6:2607:f8b0:4864:20::335]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 3065BC061573 for ; Wed, 3 Feb 2021 13:25:24 -0800 (PST) Received: by mail-ot1-x335.google.com with SMTP id h14so1325728otr.4 for ; Wed, 03 Feb 2021 13:25:24 -0800 (PST) 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=iZMC9aBcPlgaxRBYNOkc0uhviDBibZJkuU/B+Oy0jvs=; b=UfW064ti1wei0HSqGSWiNnLG6DFOWhizy1OMtq7YsgHPJUjNLJgQ3sD4Vfdo5jzZo6 ys04/M39ejGkJ1cVhVSxCIcJ1u6TVVTWmaejIGK/MXCRCkzyKQOpSte/rAMoBCaEAFVM 6FioN/ovomgPGZLBTDyHkuS4snoyUmUkC8rOs= 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=iZMC9aBcPlgaxRBYNOkc0uhviDBibZJkuU/B+Oy0jvs=; b=JcYIQmGQYE1JXipbGlIQS1o1C/xyW1XEhxlPGQTJ8B3WCeh13Pw+/H2OxjuMvepbDe YyqujNaObgDN6iYd9yrv5KSPkYc1vIyjVJdaSt/OC5mx/qdSNJmFoQApcZiK8s7ZrX3n ZMxJJQLYst1HrpHJpO1mwbOv2LOtfcMV5Q/YKjGUzb6AQAvV93IHy3hWLnwUa6qZtZsW ekyQnSoQ3sFkQQbtixmSe9uYvkIq3I0p1ODnkf0RkdY75IqdpPqQNuvWpT88LmwPPXPH YKcIgWkvKtSfhWWeSxboUv6SRgJHP0EjBlxnToJV7Ztq08GUzwNO6X2/rWw/kpMTclms fjRQ== X-Gm-Message-State: AOAM530pSozYyjXM6yWdXMPINdHCP5D/dNQlIUfeQOlNWyN304gnt5NL /oofdwyHZgEifc2Fv1P8OHg9wVmYH4/hPS++vajYsA== X-Received: by 2002:a9d:b85:: with SMTP id 5mr3433355oth.281.1612387523565; Wed, 03 Feb 2021 13:25:23 -0800 (PST) MIME-Version: 1.0 References: <20210203003134.2422308-1-surenb@google.com> <20210203015553.GX308988@casper.infradead.org> In-Reply-To: From: Daniel Vetter Date: Wed, 3 Feb 2021 22:25:11 +0100 Message-ID: Subject: Re: [Linaro-mm-sig] [PATCH 1/2] mm: replace BUG_ON in vm_insert_page with a return of an error To: Suren Baghdasaryan Cc: Matthew Wilcox , "moderated list:DMA BUFFER SHARING FRAMEWORK" , Sandeep Patil , =?UTF-8?Q?Christian_K=C3=B6nig?= , Android Kernel Team , James Jones , Linux Kernel Mailing List , Liam Mark , Brian Starkey , Christoph Hellwig , Minchan Kim , Linux MM , John Stultz , dri-devel , Chris Goldsworthy , Hridya Valsaraju , Andrew Morton , Robin Murphy , "open list:DMA BUFFER SHARING FRAMEWORK" Content-Type: text/plain; charset="UTF-8" Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Wed, Feb 3, 2021 at 9:29 PM Daniel Vetter wrote: > > On Wed, Feb 3, 2021 at 9:20 PM Suren Baghdasaryan wrote: > > > > On Wed, Feb 3, 2021 at 12:52 AM Daniel Vetter wrote: > > > > > > On Wed, Feb 3, 2021 at 2:57 AM Matthew Wilcox wrote: > > > > > > > > On Tue, Feb 02, 2021 at 04:31:33PM -0800, Suren Baghdasaryan wrote: > > > > > Replace BUG_ON(vma->vm_flags & VM_PFNMAP) in vm_insert_page with > > > > > WARN_ON_ONCE and returning an error. This is to ensure users of the > > > > > vm_insert_page that set VM_PFNMAP are notified of the wrong flag usage > > > > > and get an indication of an error without panicing the kernel. > > > > > This will help identifying drivers that need to clear VM_PFNMAP before > > > > > using dmabuf system heap which is moving to use vm_insert_page. > > > > > > > > NACK. > > > > > > > > The system may not _panic_, but it is clearly now _broken_. The device > > > > doesn't work, and so the system is useless. You haven't really improved > > > > anything here. Just bloated the kernel with yet another _ONCE variable > > > > that in a normal system will never ever ever be triggered. > > > > > > Also, what the heck are you doing with your drivers? dma-buf mmap must > > > call dma_buf_mmap(), even for forwarded/redirected mmaps from driver > > > char nodes. If that doesn't work we have some issues with the calling > > > contract for that function, not in vm_insert_page. > > > > The particular issue I observed (details were posted in > > https://lore.kernel.org/patchwork/patch/1372409) is that DRM drivers > > set VM_PFNMAP flag (via a call to drm_gem_mmap_obj) before calling > > dma_buf_mmap. Some drivers clear that flag but some don't. I could not > > find the answer to why VM_PFNMAP is required for dmabuf mappings and > > maybe someone can explain that here? > > If there is a reason to set this flag other than historical use of > > carveout memory then we wanted to catch such cases and fix the drivers > > that moved to using dmabuf heaps. However maybe there are other > > reasons and if so I would be very grateful if someone could explain > > them. That would help me to come up with a better solution. > > > > > Finally why exactly do we need to make this switch for system heap? > > > I've recently looked at gup usage by random drivers, and found a lot > > > of worrying things there. gup on dma-buf is really bad idea in > > > general. > > > > The reason for the switch is to be able to account dmabufs allocated > > using dmabuf heaps to the processes that map them. The next patch in > > this series https://lore.kernel.org/patchwork/patch/1374851 > > implementing the switch contains more details and there is an active > > discussion there. Would you mind joining that discussion to keep it in > > one place? > > How many semi-unrelated buffer accounting schemes does google come up with? > > We're at three with this one. > > And also we _cannot_ required that all dma-bufs are backed by struct > page, so requiring struct page to make this work is a no-go. > > Second, we do not want to all get_user_pages and friends to work on > dma-buf, it causes all kinds of pain. Yes on SoC where dma-buf are > exclusively in system memory you can maybe get away with this, but > dma-buf is supposed to work in more places than just Android SoCs. I just realized that vm_inser_page doesn't even work for CMA, it would upset get_user_pages pretty badly - you're trying to pin a page in ZONE_MOVEABLE but you can't move it because it's rather special. VM_SPECIAL is exactly meant to catch this stuff. -Daniel > If you want to account dma-bufs, and gpu memory in general, I'd say > the solid solution is cgroups. There's patches floating around. And > given that Google Android can't even agree internally on what exactly > you want I'd say we just need to cut over to that and make it happen. > > Cheers, Daniel > -- > Daniel Vetter > Software Engineer, Intel Corporation > http://blog.ffwll.ch -- Daniel Vetter Software Engineer, Intel Corporation http://blog.ffwll.ch