On Fri, 12 Dec 2025 17:00:33 +0100
Thomas Zimmermann <[email protected]> wrote:

> Automatically unpin pages on cleanup. The test currently fails with
> the error
> 
> [   58.246263] drm-kunit-mock-device 
> drm_gem_shmem_test_get_sg_table.drm-kunit-mock-device: [drm] 
> drm_WARN_ON(refcount_read(&shmem->pages_pin_count))
> 
> while cleaning up the GEM object. The pin count has to be zero at this
> point.
> 
> Signed-off-by: Thomas Zimmermann <[email protected]>
> Fixes: d586b535f144 ("drm/shmem-helper: Add and use pages_pin_count")
> Cc: [email protected]
> Cc: <[email protected]> # v6.16+

Reviewed-by: Boris Brezillon <[email protected]>

> ---
>  drivers/gpu/drm/tests/drm_gem_shmem_test.c | 6 ++++++
>  1 file changed, 6 insertions(+)
> 
> diff --git a/drivers/gpu/drm/tests/drm_gem_shmem_test.c 
> b/drivers/gpu/drm/tests/drm_gem_shmem_test.c
> index 872881ec9c30..1d50bab51ef3 100644
> --- a/drivers/gpu/drm/tests/drm_gem_shmem_test.c
> +++ b/drivers/gpu/drm/tests/drm_gem_shmem_test.c
> @@ -34,6 +34,9 @@ KUNIT_DEFINE_ACTION_WRAPPER(sg_free_table_wrapper, 
> sg_free_table,
>  KUNIT_DEFINE_ACTION_WRAPPER(drm_gem_shmem_free_wrapper, drm_gem_shmem_free,
>                           struct drm_gem_shmem_object *);
>  
> +KUNIT_DEFINE_ACTION_WRAPPER(drm_gem_shmem_unpin_wrapper, drm_gem_shmem_unpin,
> +                         struct drm_gem_shmem_object *);
> +
>  /*
>   * Test creating a shmem GEM object backed by shmem buffer. The test
>   * case succeeds if the GEM object is successfully allocated with the
> @@ -212,6 +215,9 @@ static void drm_gem_shmem_test_get_sg_table(struct kunit 
> *test)
>       ret = drm_gem_shmem_pin(shmem);
>       KUNIT_ASSERT_EQ(test, ret, 0);
>  
> +     ret = kunit_add_action_or_reset(test, drm_gem_shmem_unpin_wrapper, 
> shmem);
> +     KUNIT_ASSERT_EQ(test, ret, 0);
> +
>       sgt = drm_gem_shmem_get_sg_table(shmem);
>       KUNIT_ASSERT_NOT_ERR_OR_NULL(test, sgt);
>       KUNIT_EXPECT_NULL(test, shmem->sgt);

Reply via email to