virtualization.lists.linux-foundation.org archive mirror
 help / color / mirror / Atom feed
From: Daniel Vetter <daniel@ffwll.ch>
To: Dmitry Osipenko <dmitry.osipenko@collabora.com>
Cc: David Airlie <airlied@linux.ie>,
	dri-devel@lists.freedesktop.org,
	Gurchetan Singh <gurchetansingh@chromium.org>,
	Dmitry Osipenko <digetx@gmail.com>, Rob Herring <robh@kernel.org>,
	Daniel Stone <daniel@fooishbar.org>,
	Steven Price <steven.price@arm.com>,
	Gustavo Padovan <gustavo.padovan@collabora.com>,
	Alyssa Rosenzweig <alyssa.rosenzweig@collabora.com>,
	Chia-I Wu <olvaffe@gmail.com>, Daniel Vetter <daniel@ffwll.ch>,
	Maarten Lankhorst <maarten.lankhorst@linux.intel.com>,
	Maxime Ripard <mripard@kernel.org>,
	virtualization@lists.linux-foundation.org,
	Tomeu Vizoso <tomeu.vizoso@collabora.com>,
	Gert Wollny <gert.wollny@collabora.com>,
	Emil Velikov <emil.l.velikov@gmail.com>,
	linux-kernel@vger.kernel.org, Rob Clark <robdclark@gmail.com>,
	Thomas Zimmermann <tzimmermann@suse.de>,
	Robin Murphy <robin.murphy@arm.com>
Subject: Re: [PATCH v4 11/15] drm/shmem-helper: Add generic memory shrinker
Date: Mon, 9 May 2022 15:49:09 +0200	[thread overview]
Message-ID: <Ynkb1U2nNWYPML88@phenom.ffwll.local> (raw)
In-Reply-To: <ff97790a-fb64-1e15-74b4-59c807bce0b9@collabora.com>

On Fri, May 06, 2022 at 03:10:43AM +0300, Dmitry Osipenko wrote:
> On 5/5/22 11:34, Thomas Zimmermann wrote:
> > Hi
> > 
> > Am 18.04.22 um 00:37 schrieb Dmitry Osipenko:
> >> Introduce a common DRM SHMEM shrinker. It allows to reduce code
> >> duplication among DRM drivers that implement theirs own shrinkers.
> >> This is initial version of the shrinker that covers basic needs of
> >> GPU drivers, both purging and eviction of shmem objects are supported.
> >>
> >> This patch is based on a couple ideas borrowed from Rob's Clark MSM
> >> shrinker and Thomas' Zimmermann variant of SHMEM shrinker.
> >>
> >> In order to start using DRM SHMEM shrinker drivers should:
> >>
> >> 1. Implement new purge(), evict() + swap_in() GEM callbacks.
> >> 2. Register shrinker using drm_gem_shmem_shrinker_register(drm_device).
> >> 3. Use drm_gem_shmem_set_purgeable_and_evictable(shmem) and alike API
> >>     functions to activate shrinking of GEMs.
> > 
> > Honestly speaking, after reading the patch and the discussion here I
> > really don't like where all tis is going. The interfaces and
> > implementation are overengineered.  Descisions about evicting and
> > purging should be done by the memory manager. For the most part, it's
> > none of the driver's business.
> 
> Daniel mostly suggesting to make interface more flexible for future
> drivers, so we won't need to re-do it later on. My version of the
> interface is based on what drivers need today.
> 
> Why do you think it's a problem to turn shmem helper into the simple
> generic memory manager? I don't see how it's better to have drivers
> duplicating the exactly same efforts and making different mistakes.
> 
> The shmem shrinker implementation is mostly based on the freedreno's
> shrinker and it's very easy to enable generic shrinker for VirtIO and
> Panfrost drivers. I think in the future freedreno and other drivers
> could switch to use drm shmem instead of open coding the memory management.

Yeah I think we have enough shrinkers all over drm to actually design
something solid here.

There's also the i915 shrinker and some kinda shrinker in ttm too. So we
are definitely past the "have 3 examples to make sure you design something
solid" rule of thumb.

I also have a bit an idea that we could try to glue the shmem shrinker
into ttm, at least at a very high level that's something that would make
some sense.
 
> > I'd like to ask you to reduce the scope of the patchset and build the
> > shrinker only for virtio-gpu. I know that I first suggested to build
> > upon shmem helpers, but it seems that it's easier to do that in a later
> > patchset.
> 
> The first version of the VirtIO shrinker didn't support memory eviction.
> Memory eviction support requires page fault handler to be aware of the
> evicted pages, what should we do about it? The page fault handling is a
> part of memory management, hence to me drm-shmem is already kinda a MM.

Hm I still don't get that part, why does that also not go through the
shmem helpers? I'm still confused why drivers need to know the difference
between evition and purging. Or maybe I'm confused again.
-Daniel
-- 
Daniel Vetter
Software Engineer, Intel Corporation
http://blog.ffwll.ch
_______________________________________________
Virtualization mailing list
Virtualization@lists.linux-foundation.org
https://lists.linuxfoundation.org/mailman/listinfo/virtualization

  parent reply	other threads:[~2022-05-09 13:49 UTC|newest]

Thread overview: 24+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <20220417223707.157113-1-dmitry.osipenko@collabora.com>
     [not found] ` <20220417223707.157113-10-dmitry.osipenko@collabora.com>
2022-04-18 18:25   ` [PATCH v4 09/15] drm/shmem-helper: Correct doc-comment of drm_gem_shmem_get_sg_table() Thomas Zimmermann
     [not found] ` <20220417223707.157113-11-dmitry.osipenko@collabora.com>
2022-04-18 18:38   ` [PATCH v4 10/15] drm/shmem-helper: Take reservation lock instead of drm_gem_shmem locks Thomas Zimmermann
     [not found]     ` <d9e7bec1-fffb-e0c4-8659-ef3ce2c31280@collabora.com>
2022-04-27 14:50       ` Daniel Vetter
     [not found]         ` <8f932ab0-bb72-8fea-4078-dc59e9164bd4@collabora.com>
2022-05-04  8:21           ` Daniel Vetter
     [not found]             ` <01506516-ab2f-cb6e-7507-f2a3295efb59@collabora.com>
2022-05-05  8:12               ` Daniel Vetter
     [not found]                 ` <83e68918-68de-c0c6-6f9b-e94d34b19383@collabora.com>
2022-05-09 13:42                   ` Daniel Vetter
     [not found]                     ` <4d08b382-0076-1ea2-b565-893d50b453cb@collabora.com>
2022-05-11 13:00                       ` Daniel Vetter
2022-05-11 14:24                         ` Christian König
2022-05-11 15:07                           ` Daniel Vetter
     [not found]                           ` <3a362c32-870c-1d73-bba6-bbdcd62dc326@collabora.com>
2022-05-11 15:29                             ` Daniel Vetter
     [not found]                               ` <ba2836d0-9a3a-b879-cb1e-a48aed31637d@collabora.com>
2022-05-11 19:05                                 ` Daniel Vetter
2022-05-12  7:29                                   ` Christian König
2022-05-12 14:15                                     ` Daniel Vetter
     [not found] ` <20220417223707.157113-12-dmitry.osipenko@collabora.com>
2022-04-19  7:22   ` [PATCH v4 11/15] drm/shmem-helper: Add generic memory shrinker Thomas Zimmermann
     [not found]     ` <7f497f99-f4c1-33d6-46cf-95bd90188fe3@collabora.com>
2022-04-27 15:03       ` Daniel Vetter
     [not found]         ` <d0970dbd-e6e7-afa0-fdfd-b755008e371f@collabora.com>
2022-05-04  8:24           ` Daniel Vetter
2022-06-19 16:54           ` Rob Clark
2022-05-05  8:34   ` Thomas Zimmermann
2022-05-05 11:59     ` Daniel Vetter
     [not found]     ` <ff97790a-fb64-1e15-74b4-59c807bce0b9@collabora.com>
2022-05-09 13:49       ` Daniel Vetter [this message]
     [not found]         ` <5fdf5232-e2b2-b444-5a41-f1db7e6a04da@collabora.com>
2022-05-11 13:09           ` Daniel Vetter
     [not found]             ` <3429a12f-9fbe-b66b-dbbd-94a1df54714e@collabora.com>
2022-05-11 19:09               ` Daniel Vetter
     [not found]                 ` <0ae6fed7-b166-d2b8-0e42-84b94b777c20@collabora.com>
2022-05-12 17:04                   ` Daniel Vetter
     [not found]                     ` <31bc7a14-ff30-6961-b4fc-0aad83551df9@collabora.com>
2022-05-19 14:13                       ` Daniel Vetter

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=Ynkb1U2nNWYPML88@phenom.ffwll.local \
    --to=daniel@ffwll.ch \
    --cc=airlied@linux.ie \
    --cc=alyssa.rosenzweig@collabora.com \
    --cc=daniel@fooishbar.org \
    --cc=digetx@gmail.com \
    --cc=dmitry.osipenko@collabora.com \
    --cc=dri-devel@lists.freedesktop.org \
    --cc=emil.l.velikov@gmail.com \
    --cc=gert.wollny@collabora.com \
    --cc=gurchetansingh@chromium.org \
    --cc=gustavo.padovan@collabora.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=maarten.lankhorst@linux.intel.com \
    --cc=mripard@kernel.org \
    --cc=olvaffe@gmail.com \
    --cc=robdclark@gmail.com \
    --cc=robh@kernel.org \
    --cc=robin.murphy@arm.com \
    --cc=steven.price@arm.com \
    --cc=tomeu.vizoso@collabora.com \
    --cc=tzimmermann@suse.de \
    --cc=virtualization@lists.linux-foundation.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).