From: Boris Brezillon <boris.brezillon@collabora.com>
To: Dmitry Osipenko <dmitry.osipenko@collabora.com>
Cc: "Maxime Ripard" <mripard@kernel.org>,
"Rob Herring" <robh@kernel.org>,
kernel@collabora.com, "Thomas Zimmermann" <tzimmermann@suse.de>,
dri-devel@lists.freedesktop.org,
"Sumit Semwal" <sumit.semwal@linaro.org>,
"Daniel Almeida" <daniel.almeida@collabora.com>,
intel-gfx@lists.freedesktop.org, linux-kernel@vger.kernel.org,
"Daniel Stone" <daniel@fooishbar.org>,
"Gurchetan Singh" <gurchetansingh@chromium.org>,
"Gustavo Padovan" <gustavo.padovan@collabora.com>,
"Gerd Hoffmann" <kraxel@redhat.com>,
"Daniel Vetter" <daniel@ffwll.ch>,
"Christian König" <christian.koenig@amd.com>,
"Steven Price" <steven.price@arm.com>,
"David Airlie" <airlied@gmail.com>,
"Chia-I Wu" <olvaffe@gmail.com>,
virtualization@lists.linux-foundation.org,
"Qiang Yu" <yuq825@gmail.com>
Subject: Re: [Intel-gfx] [PATCH v13 03/10] drm/shmem-helper: Add pages_pin_count field
Date: Mon, 26 Jun 2023 17:04:57 +0200 [thread overview]
Message-ID: <20230626170420.45826ac7@collabora.com> (raw)
In-Reply-To: <20230314022659.1816246-4-dmitry.osipenko@collabora.com>
Hi Dmitry,
Sorry for chiming in only now :-/.
On Tue, 14 Mar 2023 05:26:52 +0300
Dmitry Osipenko <dmitry.osipenko@collabora.com> wrote:
> And new pages_pin_count field to struct drm_gem_shmem_object that will
> determine whether pages are evictable by memory shrinker. The pages will
> be evictable only when pages_pin_count=0. This patch prepares code for
> addition of the memory shrinker that will utilize the new field.
>
> Signed-off-by: Dmitry Osipenko <dmitry.osipenko@collabora.com>
> ---
> drivers/gpu/drm/drm_gem_shmem_helper.c | 7 +++++++
> include/drm/drm_gem_shmem_helper.h | 9 +++++++++
> 2 files changed, 16 insertions(+)
>
> diff --git a/drivers/gpu/drm/drm_gem_shmem_helper.c b/drivers/gpu/drm/drm_gem_shmem_helper.c
> index 4da9c9c39b9a..81d61791f874 100644
> --- a/drivers/gpu/drm/drm_gem_shmem_helper.c
> +++ b/drivers/gpu/drm/drm_gem_shmem_helper.c
> @@ -277,6 +277,8 @@ static int drm_gem_shmem_pin_locked(struct drm_gem_shmem_object *shmem)
> drm_WARN_ON(obj->dev, obj->import_attach);
>
> ret = drm_gem_shmem_get_pages(shmem);
> + if (!ret)
> + shmem->pages_pin_count++;
>
> return ret;
> }
> @@ -289,7 +291,12 @@ static void drm_gem_shmem_unpin_locked(struct drm_gem_shmem_object *shmem)
>
> drm_WARN_ON(obj->dev, obj->import_attach);
>
> + if (drm_WARN_ON_ONCE(obj->dev, !shmem->pages_pin_count))
> + return;
> +
> drm_gem_shmem_put_pages(shmem);
> +
> + shmem->pages_pin_count--;
> }
>
> /**
> diff --git a/include/drm/drm_gem_shmem_helper.h b/include/drm/drm_gem_shmem_helper.h
> index 20ddcd799df9..7d823c9fc480 100644
> --- a/include/drm/drm_gem_shmem_helper.h
> +++ b/include/drm/drm_gem_shmem_helper.h
> @@ -39,6 +39,15 @@ struct drm_gem_shmem_object {
> */
> unsigned int pages_use_count;
>
> + /**
> + * @pages_pin_count:
> + *
> + * Reference count on the pinned pages table.
> + * The pages allowed to be evicted by memory shrinker
> + * only when the count is zero.
> + */
> + unsigned int pages_pin_count;
s/pages_pin_count/pin_count/ ?
And do we really need both pages_pin_count and pages_use_count. Looks
like they both serve the same purpose, with one exception:
pages_use_count is also incremented in the get_pages_sgt_locked() path,
but you probably don't want it to prevent GEM eviction. Assuming
your goal with this pin_count field is to check if a GEM object is
evictable, it can be done with something like
bool
drm_gem_shmem_is_evictable_locked(struct drm_gem_shmem_object *shmem)
{
dma_resv_assert_held(shmem->base.resv);
return shmem->pages_use_count == (shmem->sgt ? 1 : 0);
}
I mean, I'm not against renaming pages_use_count into pin_count, but,
unless I'm missing something, I don't see a good reason to keep both.
Regards,
Boris
next prev parent reply other threads:[~2023-06-26 15:05 UTC|newest]
Thread overview: 21+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-03-14 2:26 [Intel-gfx] [PATCH v13 00/10] Add generic memory shrinker to VirtIO-GPU and Panfrost DRM drivers Dmitry Osipenko
2023-03-14 2:26 ` [Intel-gfx] [PATCH v13 01/10] drm/shmem-helper: Switch to reservation lock Dmitry Osipenko
2023-03-15 13:46 ` Dmitry Osipenko
2023-03-25 14:58 ` Dmitry Osipenko
2023-03-26 9:19 ` Christian König
2023-04-02 14:54 ` Dmitry Osipenko
2023-03-14 2:26 ` [Intel-gfx] [PATCH v13 02/10] drm/shmem-helper: Factor out pages alloc/release from drm_gem_shmem_get/put_pages() Dmitry Osipenko
2023-03-14 2:26 ` [Intel-gfx] [PATCH v13 03/10] drm/shmem-helper: Add pages_pin_count field Dmitry Osipenko
2023-06-26 15:04 ` Boris Brezillon [this message]
2023-06-26 15:21 ` Boris Brezillon
2023-06-26 15:32 ` Dmitry Osipenko
2023-03-14 2:26 ` [Intel-gfx] [PATCH v13 04/10] drm/shmem-helper: Switch drm_gem_shmem_vmap/vunmap to use pin/unpin Dmitry Osipenko
2023-03-14 2:26 ` [Intel-gfx] [PATCH v13 05/10] drm/shmem-helper: Factor out unpinning part from drm_gem_shmem_purge() Dmitry Osipenko
2023-03-14 2:26 ` [Intel-gfx] [PATCH v13 06/10] drm/shmem-helper: Add memory shrinker Dmitry Osipenko
2023-03-14 2:26 ` [Intel-gfx] [PATCH v13 07/10] drm/shmem-helper: Remove obsoleted is_iomem test Dmitry Osipenko
2023-03-14 2:26 ` [Intel-gfx] [PATCH v13 08/10] drm/shmem-helper: Export drm_gem_shmem_get_pages_sgt_locked() Dmitry Osipenko
2023-03-14 2:26 ` [Intel-gfx] [PATCH v13 09/10] drm/virtio: Support memory shrinking Dmitry Osipenko
2023-03-14 2:26 ` [Intel-gfx] [PATCH v13 10/10] drm/panfrost: Switch to generic memory shrinker Dmitry Osipenko
2023-03-14 2:49 ` [Intel-gfx] ✗ Fi.CI.SPARSE: warning for Add generic memory shrinker to VirtIO-GPU and Panfrost DRM drivers (rev2) Patchwork
2023-03-14 3:08 ` [Intel-gfx] ✓ Fi.CI.BAT: success " Patchwork
2023-03-15 7:44 ` [Intel-gfx] ✗ Fi.CI.IGT: failure " Patchwork
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=20230626170420.45826ac7@collabora.com \
--to=boris.brezillon@collabora.com \
--cc=airlied@gmail.com \
--cc=christian.koenig@amd.com \
--cc=daniel.almeida@collabora.com \
--cc=daniel@ffwll.ch \
--cc=daniel@fooishbar.org \
--cc=dmitry.osipenko@collabora.com \
--cc=dri-devel@lists.freedesktop.org \
--cc=gurchetansingh@chromium.org \
--cc=gustavo.padovan@collabora.com \
--cc=intel-gfx@lists.freedesktop.org \
--cc=kernel@collabora.com \
--cc=kraxel@redhat.com \
--cc=linux-kernel@vger.kernel.org \
--cc=mripard@kernel.org \
--cc=olvaffe@gmail.com \
--cc=robh@kernel.org \
--cc=steven.price@arm.com \
--cc=sumit.semwal@linaro.org \
--cc=tzimmermann@suse.de \
--cc=virtualization@lists.linux-foundation.org \
--cc=yuq825@gmail.com \
/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