Received: by 2002:a05:6a10:8c0a:0:0:0:0 with SMTP id go10csp905407pxb; Tue, 9 Feb 2021 16:12:59 -0800 (PST) X-Google-Smtp-Source: ABdhPJxGmeiChYpOmGHKKmzM6RH+1R9qyzmC+IYlu7r3J+msndsiKumBwOcSsuv3+MraJD59edXc X-Received: by 2002:a17:906:eca5:: with SMTP id qh5mr241194ejb.161.1612915979518; Tue, 09 Feb 2021 16:12:59 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1612915979; cv=none; d=google.com; s=arc-20160816; b=HLw5+X5M79/XRPHrB3o7nKrB7247qqeB7Z1f95WJ0GLEbv/JuKu/PL30C+3lP6ulgd ozW/jW3hGUakRcaBIkvjZatnPQo5ORUjWm0saNeiyZ2roNgFk7IzdSWvFpJe3fLIStit FvBDMgVB45dN3bnlM4gIzc0WcKonYOCGsOILVrbvtFwpYrLiiNvUaM7iH4rtdrSujQJn CwPv2oWE9u80rFgLsk2u9M3UczUOOHNqpPGD9+ihxcznKVNOb48k0ldiU9TlmtnthiFd 27Y24pL/TSrZ0298pvYAvFr8q7UUECkkr0CuW+PyH45z/6317vSpNBEzKxeABfiswbuS cFuQ== 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=IJlgwhfz5X2MzqyUYiX7MoKMMru1jZl967/DhPZ5YYM=; b=Qz8XonCgsLLD7lYKw0Q6X7r/iPfQG9F0h5R5s8BwEhHotune9FzZ7EngWlhqVK53Dp slF5zeAnLPoB3pt9LgHtnCab/UPNl08VHhA6SaBIuxthHNnI/j1baWNHXLkeHo2jabR9 A5DFYkhfU402Tt1WA5ZY51B81psa9Rvig0wCIYq8R2SnSBjZurwTIvXlFAiC2Vt1yurr oJybZBo9r/mZcrQJrl3A7QImYbhqTg1f/BcWZznxG0opC0ZTbRQq/VWegDMeMFjZvNkG Vo7SZqcn5q5A7lg4/0WsRY01oHDeSoVsvAJHWO4ba7bhz0xvq98e+y6u/8g3ggf4CcYq U1/A== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@ffwll.ch header.s=google header.b=IGmyMapj; 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 q26si148233ejn.226.2021.02.09.16.12.35; Tue, 09 Feb 2021 16:12:59 -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=IGmyMapj; 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 S235042AbhBJAL1 (ORCPT + 99 others); Tue, 9 Feb 2021 19:11:27 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:37306 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S233903AbhBIUmH (ORCPT ); Tue, 9 Feb 2021 15:42:07 -0500 Received: from mail-ot1-x32d.google.com (mail-ot1-x32d.google.com [IPv6:2607:f8b0:4864:20::32d]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 61A0DC061D7E for ; Tue, 9 Feb 2021 12:03:43 -0800 (PST) Received: by mail-ot1-x32d.google.com with SMTP id y11so18658788otq.1 for ; Tue, 09 Feb 2021 12:03:43 -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:content-transfer-encoding; bh=IJlgwhfz5X2MzqyUYiX7MoKMMru1jZl967/DhPZ5YYM=; b=IGmyMapjKGK/9ul8hQQxgz0gLOuVsIS61seKmxzpC1gsISZYlX9S0ZdRSi6pidiwJy /7+efzyjKx/pki6VZAJYF8FmQsEzU0QegZmkdybN9xKSoh8OLwEH6pZ4myK/CdqnQwS+ B6Q0KNJIPoX38WLQN4Nja7XJlR8U91dMQP83w= 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:content-transfer-encoding; bh=IJlgwhfz5X2MzqyUYiX7MoKMMru1jZl967/DhPZ5YYM=; b=geDY9jfjRQZ2NcWcIdtvs3unWZHlxEYR44KdGK6iYpFDjIMWyItA4QgQLeQh8HkSBn ZwV6Hw5tvf4waASUzB6cJDQgXQe/3GHhCshMpJQY3Nx66dEKxbNaD5VHFzQk2302ofXP /b34c2mPneNW6mAOcqbzgbbf61y9wYPVxIl1f0IeCs0+A765TzHSRd8GGYPr0d1Kwzq+ 8kF+xH4MvosB6vM5Q2i6duajykpTVbzMkyFeOa2BDt2Mdty4TurO9rV2R6YC9ygScN7h iZQJOuxU0z1J9BnlPA2JcDEkozgMyWJTpQE3qXf48y4mFoGi8L2BoUz5QBRKCuh20h4g m/uw== X-Gm-Message-State: AOAM5332E3GXOxzJj2D7WTnfeAjQ/PzxcJC5HTEBo9YfejTMEj3TLT6s g5jOUQCwOrVsBqB2wvuiS7W5Uq4WL7Ui1CyX2FNX3w== X-Received: by 2002:a9d:b85:: with SMTP id 5mr17540016oth.281.1612901022725; Tue, 09 Feb 2021 12:03:42 -0800 (PST) MIME-Version: 1.0 References: <20210205080621.3102035-1-john.stultz@linaro.org> <20210205080621.3102035-2-john.stultz@linaro.org> <4471b3b0-603e-6dbb-8064-ff4a95afbba9@amd.com> <48225879-2fe1-22ac-daae-c61d52465aea@amd.com> In-Reply-To: From: Daniel Vetter Date: Tue, 9 Feb 2021 21:03:31 +0100 Message-ID: Subject: Re: [RFC][PATCH v6 1/7] drm: Add a sharable drm page-pool implementation To: =?UTF-8?Q?Christian_K=C3=B6nig?= Cc: Suren Baghdasaryan , John Stultz , lkml , Sumit Semwal , Liam Mark , Chris Goldsworthy , Laura Abbott , Brian Starkey , Hridya Valsaraju , Sandeep Patil , Daniel Mentz , =?UTF-8?Q?=C3=98rjan_Eide?= , Robin Murphy , Ezequiel Garcia , Simon Ser , James Jones , linux-media , dri-devel Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Tue, Feb 9, 2021 at 6:46 PM Christian K=C3=B6nig wrote: > > > > Am 09.02.21 um 18:33 schrieb Suren Baghdasaryan: > > On Tue, Feb 9, 2021 at 4:57 AM Christian K=C3=B6nig wrote: > >> Am 09.02.21 um 13:11 schrieb Christian K=C3=B6nig: > >>> [SNIP] > >>>>>> +void drm_page_pool_add(struct drm_page_pool *pool, struct page *p= age) > >>>>>> +{ > >>>>>> + spin_lock(&pool->lock); > >>>>>> + list_add_tail(&page->lru, &pool->items); > >>>>>> + pool->count++; > >>>>>> + atomic_long_add(1 << pool->order, &total_pages); > >>>>>> + spin_unlock(&pool->lock); > >>>>>> + > >>>>>> + mod_node_page_state(page_pgdat(page), > >>>>>> NR_KERNEL_MISC_RECLAIMABLE, > >>>>>> + 1 << pool->order); > >>>>> Hui what? What should that be good for? > >>>> This is a carryover from the ION page pool implementation: > >>>> https://nam11.safelinks.protection.outlook.com/?url=3Dhttps%3A%2F%2F= git.kernel.org%2Fpub%2Fscm%2Flinux%2Fkernel%2Fgit%2Ftorvalds%2Flinux.git%2F= tree%2Fdrivers%2Fstaging%2Fandroid%2Fion%2Fion_page_pool.c%3Fh%3Dv5.10%23n2= 8&data=3D04%7C01%7Cchristian.koenig%40amd.com%7Cdccccff8edcd4d147a5b08d= 8cd20cff2%7C3dd8961fe4884e608e11a82d994e183d%7C0%7C0%7C637484888114923580%7= CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwi= LCJXVCI6Mn0%3D%7C1000&sdata=3D9%2BIBC0tezSV6Ci4S3kWfW%2BQvJm4mdunn3dF6C= 0kyfCw%3D&reserved=3D0 > >>>> > >>>> > >>>> My sense is it helps with the vmstat/meminfo accounting so folks can > >>>> see the cached pages are shrinkable/freeable. This maybe falls under > >>>> other dmabuf accounting/stats discussions, so I'm happy to remove it > >>>> for now, or let the drivers using the shared page pool logic handle > >>>> the accounting themselves? > >> Intentionally separated the discussion for that here. > >> > >> As far as I can see this is just bluntly incorrect. > >> > >> Either the page is reclaimable or it is part of our pool and freeable > >> through the shrinker, but never ever both. > > IIRC the original motivation for counting ION pooled pages as > > reclaimable was to include them into /proc/meminfo's MemAvailable > > calculations. NR_KERNEL_MISC_RECLAIMABLE defined as "reclaimable > > non-slab kernel pages" seems like a good place to account for them but > > I might be wrong. > > Yeah, that's what I see here as well. But exactly that is utterly nonsens= e. > > Those pages are not "free" in the sense that get_free_page could return > them directly. Well on Android that is kinda true, because Android has it's oom-killer (way back it was just a shrinker callback, not sure how it works now), which just shot down all the background apps. So at least some of that (everything used by background apps) is indeed reclaimable on Android. But that doesn't hold on Linux in general, so we can't really do this for common code. Also I had a long meeting with Suren, John and other googles yesterday, and the aim is now to try and support all the Android gpu memory accounting needs with cgroups. That should work, and it will allow Android to handle all the Android-ism in a clean way in upstream code. Or that's at least the plan. I think the only thing we identified that Android still needs on top is the dma-buf sysfs stuff, so that shared buffers (which on Android are always dma-buf, and always stay around as dma-buf fd throughout their lifetime) can be listed/analyzed with full detail. But aside from this the plan for all the per-process or per-heap account, oom-killer integration and everything else is planned to be done with cgroups. Android (for now) only needs to account overall gpu memory since none of it is swappable on android drivers anyway, plus no vram, so not much needed. Cheers, Daniel > > Regards, > Christian. > > > > >> In the best case this just messes up the accounting, in the worst case > >> it can cause memory corruption. > >> > >> Christian. > --=20 Daniel Vetter Software Engineer, Intel Corporation http://blog.ffwll.ch