lkml.org 
[lkml]   [2023]   [Feb]   [17]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    Date
    SubjectRe: [PATCH v10 03/11] drm/gem: Add evict() callback to drm_gem_object_funcs
    From
    Hi

    Am 08.01.23 um 22:04 schrieb Dmitry Osipenko:
    > Add new common evict() callback to drm_gem_object_funcs and corresponding
    > drm_gem_object_evict() helper. This is a first step on a way to providing
    > common GEM-shrinker API for DRM drivers.
    >
    > Suggested-by: Thomas Zimmermann <tzimmermann@suse.de>
    > Signed-off-by: Dmitry Osipenko <dmitry.osipenko@collabora.com>

    Reviewed-by: Thomas Zimmermann <tzimmermann@suse.de>

    with my comments below addressed.

    > ---
    > drivers/gpu/drm/drm_gem.c | 16 ++++++++++++++++
    > include/drm/drm_gem.h | 12 ++++++++++++
    > 2 files changed, 28 insertions(+)
    >
    > diff --git a/drivers/gpu/drm/drm_gem.c b/drivers/gpu/drm/drm_gem.c
    > index c6bca5ac6e0f..dbb48fc9dff3 100644
    > --- a/drivers/gpu/drm/drm_gem.c
    > +++ b/drivers/gpu/drm/drm_gem.c
    > @@ -1471,3 +1471,19 @@ drm_gem_lru_scan(struct drm_gem_lru *lru,
    > return freed;
    > }
    > EXPORT_SYMBOL(drm_gem_lru_scan);
    > +
    > +/**
    > + * drm_gem_object_evict - helper to evict backing pages for a GEM object
    > + * @obj: obj in question
    > + */
    > +bool

    Please use int and return an errno code.

    No newline here, please.

    > +drm_gem_object_evict(struct drm_gem_object *obj)
    > +{
    > + dma_resv_assert_held(obj->resv);
    > +
    > + if (obj->funcs->evict)
    > + return obj->funcs->evict(obj);
    > +
    > + return false;
    > +}
    > +EXPORT_SYMBOL(drm_gem_object_evict);
    > diff --git a/include/drm/drm_gem.h b/include/drm/drm_gem.h
    > index f1f00fc2dba6..8e5c22f25691 100644
    > --- a/include/drm/drm_gem.h
    > +++ b/include/drm/drm_gem.h
    > @@ -172,6 +172,16 @@ struct drm_gem_object_funcs {
    > * This is optional but necessary for mmap support.
    > */
    > const struct vm_operations_struct *vm_ops;
    > +
    > + /**
    > + * @evict:
    > + *
    > + * Evicts gem object out from memory. Used by the drm_gem_object_evict()
    > + * helper. Returns true on success, false otherwise.
    > + *
    > + * This callback is optional.
    > + */
    > + bool (*evict)(struct drm_gem_object *obj);

    This should be declared between mmap and evict.

    Again, please use int and return an errno code.

    > };
    >
    > /**
    > @@ -481,4 +491,6 @@ unsigned long drm_gem_lru_scan(struct drm_gem_lru *lru,
    > unsigned long *remaining,
    > bool (*shrink)(struct drm_gem_object *obj));
    >
    > +bool drm_gem_object_evict(struct drm_gem_object *obj);

    drm_gem_evict() should be the correct name; like drm_gem_vmap() and
    drm_gem_pin(), etc.

    Best regards
    Thomas

    > +
    > #endif /* __DRM_GEM_H__ */

    --
    Thomas Zimmermann
    Graphics Driver Developer
    SUSE Software Solutions Germany GmbH
    Maxfeldstr. 5, 90409 Nürnberg, Germany
    (HRB 36809, AG Nürnberg)
    Geschäftsführer: Ivo Totev
    [unhandled content-type:application/pgp-signature]
    \
     
     \ /
      Last update: 2023-03-27 00:26    [W:4.668 / U:0.072 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site