All of lore.kernel.org
 help / color / mirror / Atom feed
From: Boris Brezillon <boris.brezillon@collabora.com>
To: Thomas Zimmermann <tzimmermann@suse.de>
Cc: dmitry.osipenko@collabora.com, maarten.lankhorst@linux.intel.com,
	mripard@kernel.org, airlied@gmail.com, simona@ffwll.ch,
	dri-devel@lists.freedesktop.org, stable@vger.kernel.org
Subject: Re: [PATCH 5/5] drm/tests: shmem: Hold reservation lock around purge
Date: Fri, 19 Dec 2025 14:06:53 +0100	[thread overview]
Message-ID: <20251219140653.176ad59b@fedora> (raw)
In-Reply-To: <20251212160317.287409-6-tzimmermann@suse.de>

On Fri, 12 Dec 2025 17:00:36 +0100
Thomas Zimmermann <tzimmermann@suse.de> wrote:

> Acquire and release the GEM object's reservation lock around calls
> to the object's purge operation. The tests use
> drm_gem_shmem_purge_locked(), which led to errors such as show below.
> 
> [   58.709128] WARNING: CPU: 1 PID: 1354 at drivers/gpu/drm/drm_gem_shmem_helper.c:515 drm_gem_shmem_purge_locked+0x51c/0x740
> 
> Only export the new helper drm_gem_shmem_purge() for Kunit tests.
> This is not an interface for regular drivers.
> 
> Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de>
> Fixes: 954907f7147d ("drm/shmem-helper: Refactor locked/unlocked functions")
> Cc: dri-devel@lists.freedesktop.org
> Cc: <stable@vger.kernel.org> # v6.16+

Reviewed-by: Boris Brezillon <boris.brezillon@collabora.com>

> ---
>  drivers/gpu/drm/drm_gem_shmem_helper.c     | 15 +++++++++++++++
>  drivers/gpu/drm/tests/drm_gem_shmem_test.c |  4 +++-
>  include/drm/drm_gem_shmem_helper.h         |  1 +
>  3 files changed, 19 insertions(+), 1 deletion(-)
> 
> diff --git a/drivers/gpu/drm/drm_gem_shmem_helper.c b/drivers/gpu/drm/drm_gem_shmem_helper.c
> index 4ffcf6ed46f5..dfc24392cb61 100644
> --- a/drivers/gpu/drm/drm_gem_shmem_helper.c
> +++ b/drivers/gpu/drm/drm_gem_shmem_helper.c
> @@ -939,6 +939,21 @@ int drm_gem_shmem_madvise(struct drm_gem_shmem_object *shmem, int madv)
>  	return ret;
>  }
>  EXPORT_SYMBOL_IF_KUNIT(drm_gem_shmem_madvise);
> +
> +int drm_gem_shmem_purge(struct drm_gem_shmem_object *shmem)
> +{
> +	struct drm_gem_object *obj = &shmem->base;
> +	int ret;
> +
> +	ret = dma_resv_lock_interruptible(obj->resv, NULL);
> +	if (ret)
> +		return ret;
> +	drm_gem_shmem_purge_locked(shmem);
> +	dma_resv_unlock(obj->resv);
> +
> +	return 0;
> +}
> +EXPORT_SYMBOL_IF_KUNIT(drm_gem_shmem_purge);
>  #endif
>  
>  MODULE_DESCRIPTION("DRM SHMEM memory-management helpers");
> diff --git a/drivers/gpu/drm/tests/drm_gem_shmem_test.c b/drivers/gpu/drm/tests/drm_gem_shmem_test.c
> index d639848e3c8e..4b459f21acfd 100644
> --- a/drivers/gpu/drm/tests/drm_gem_shmem_test.c
> +++ b/drivers/gpu/drm/tests/drm_gem_shmem_test.c
> @@ -340,7 +340,9 @@ static void drm_gem_shmem_test_purge(struct kunit *test)
>  	ret = drm_gem_shmem_is_purgeable(shmem);
>  	KUNIT_EXPECT_TRUE(test, ret);
>  
> -	drm_gem_shmem_purge_locked(shmem);
> +	ret = drm_gem_shmem_purge(shmem);
> +	KUNIT_ASSERT_EQ(test, ret, 0);
> +
>  	KUNIT_EXPECT_NULL(test, shmem->pages);
>  	KUNIT_EXPECT_NULL(test, shmem->sgt);
>  	KUNIT_EXPECT_EQ(test, shmem->madv, -1);
> diff --git a/include/drm/drm_gem_shmem_helper.h b/include/drm/drm_gem_shmem_helper.h
> index 3dd93e2df709..8d56970d7eed 100644
> --- a/include/drm/drm_gem_shmem_helper.h
> +++ b/include/drm/drm_gem_shmem_helper.h
> @@ -311,6 +311,7 @@ struct drm_gem_object *drm_gem_shmem_prime_import_no_map(struct drm_device *dev,
>  int drm_gem_shmem_vmap(struct drm_gem_shmem_object *shmem, struct iosys_map *map);
>  void drm_gem_shmem_vunmap(struct drm_gem_shmem_object *shmem, struct iosys_map *map);
>  int drm_gem_shmem_madvise(struct drm_gem_shmem_object *shmem, int madv);
> +int drm_gem_shmem_purge(struct drm_gem_shmem_object *shmem);
>  #endif
>  
>  #endif /* __DRM_GEM_SHMEM_HELPER_H__ */


      reply	other threads:[~2025-12-19 13:06 UTC|newest]

Thread overview: 11+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2025-12-12 16:00 [PATCH 0/5] drm/tests: Fix tests for GEM SHMEM Thomas Zimmermann
2025-12-12 16:00 ` [PATCH 1/5] drm/tests: shmem: Swap names of export tests Thomas Zimmermann
2025-12-19 13:03   ` Boris Brezillon
2025-12-12 16:00 ` [PATCH 2/5] drm/tests: shmem: Add clean-up action to unpin pages Thomas Zimmermann
2025-12-19 13:04   ` Boris Brezillon
2025-12-12 16:00 ` [PATCH 3/5] drm/tests: shmem: Hold reservation lock around vmap/vunmap Thomas Zimmermann
2025-12-19 13:05   ` Boris Brezillon
2025-12-12 16:00 ` [PATCH 4/5] drm/tests: shmem: Hold reservation lock around madvise Thomas Zimmermann
2025-12-19 13:06   ` Boris Brezillon
2025-12-12 16:00 ` [PATCH 5/5] drm/tests: shmem: Hold reservation lock around purge Thomas Zimmermann
2025-12-19 13:06   ` Boris Brezillon [this message]

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=20251219140653.176ad59b@fedora \
    --to=boris.brezillon@collabora.com \
    --cc=airlied@gmail.com \
    --cc=dmitry.osipenko@collabora.com \
    --cc=dri-devel@lists.freedesktop.org \
    --cc=maarten.lankhorst@linux.intel.com \
    --cc=mripard@kernel.org \
    --cc=simona@ffwll.ch \
    --cc=stable@vger.kernel.org \
    --cc=tzimmermann@suse.de \
    /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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.