* [PATCH 0/2] drm/tilcdc: replace reference/unreference with get/put
@ 2017-09-21 19:46 ` Aishwarya Pant
0 siblings, 0 replies; 8+ messages in thread
From: Aishwarya Pant @ 2017-09-21 19:46 UTC (permalink / raw)
To: Daniel Vetter, Jani Nikula, Sean Paul, David Airlie, dri-devel
Cc: outreachy-kernel
This patchset introduces drm_dev_get() and drm_dev_put() functions that are
intented to be replacements for drm_dev_{ref/unref}.
Then all usages of ref/reference and unref/unreference suffixes are replaced by
get/put reference count functions in tilcdc. The following cocci script was used
to make the tilcdc patch:
@@
expression ex;
@@
(
-drm_framebuffer_unreference(ex);
+drm_framebuffer_put(ex);
|
-drm_dev_unref(ex);
+drm_dev_put(ex);
|
-drm_framebuffer_reference(ex);
+drm_framebuffer_get(ex);
)
Aishwarya Pant (2):
drm: introduce drm_dev_{get/put} functions
drm/tilcdc: replace reference/unreference() with get/put
drivers/gpu/drm/drm_drv.c | 64 +++++++++++++++++++++++++-----------
drivers/gpu/drm/tilcdc/tilcdc_crtc.c | 6 ++--
drivers/gpu/drm/tilcdc/tilcdc_drv.c | 2 +-
include/drm/drm_drv.h | 4 ++-
4 files changed, 52 insertions(+), 24 deletions(-)
--
2.7.4
^ permalink raw reply [flat|nested] 8+ messages in thread* [PATCH 0/2] drm/tilcdc: replace reference/unreference with get/put @ 2017-09-21 19:46 ` Aishwarya Pant 0 siblings, 0 replies; 8+ messages in thread From: Aishwarya Pant @ 2017-09-21 19:46 UTC (permalink / raw) To: Daniel Vetter, Jani Nikula, Sean Paul, David Airlie, dri-devel Cc: outreachy-kernel This patchset introduces drm_dev_get() and drm_dev_put() functions that are intented to be replacements for drm_dev_{ref/unref}. Then all usages of ref/reference and unref/unreference suffixes are replaced by get/put reference count functions in tilcdc. The following cocci script was used to make the tilcdc patch: @@ expression ex; @@ ( -drm_framebuffer_unreference(ex); +drm_framebuffer_put(ex); | -drm_dev_unref(ex); +drm_dev_put(ex); | -drm_framebuffer_reference(ex); +drm_framebuffer_get(ex); ) Aishwarya Pant (2): drm: introduce drm_dev_{get/put} functions drm/tilcdc: replace reference/unreference() with get/put drivers/gpu/drm/drm_drv.c | 64 +++++++++++++++++++++++++----------- drivers/gpu/drm/tilcdc/tilcdc_crtc.c | 6 ++-- drivers/gpu/drm/tilcdc/tilcdc_drv.c | 2 +- include/drm/drm_drv.h | 4 ++- 4 files changed, 52 insertions(+), 24 deletions(-) -- 2.7.4 _______________________________________________ dri-devel mailing list dri-devel@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/dri-devel ^ permalink raw reply [flat|nested] 8+ messages in thread
* [PATCH 1/2] drm: introduce drm_dev_{get/put} functions 2017-09-21 19:46 ` Aishwarya Pant @ 2017-09-21 19:47 ` Aishwarya Pant -1 siblings, 0 replies; 8+ messages in thread From: Aishwarya Pant @ 2017-09-21 19:47 UTC (permalink / raw) To: Daniel Vetter, Jani Nikula, Sean Paul, David Airlie, dri-devel Cc: outreachy-kernel Reference counting functions in the kernel typically use get/put suffixes. For maintaining coding style consistency, introduce drm_dev_{get/put} functions and let the old APIs (with ref/unref suffixes) remain for compatibility. Signed-off-by: Aishwarya Pant <aishpant@gmail.com> --- drivers/gpu/drm/drm_drv.c | 64 +++++++++++++++++++++++++++++++++-------------- include/drm/drm_drv.h | 4 ++- 2 files changed, 48 insertions(+), 20 deletions(-) diff --git a/drivers/gpu/drm/drm_drv.c b/drivers/gpu/drm/drm_drv.c index be38ac7..4592314 100644 --- a/drivers/gpu/drm/drm_drv.c +++ b/drivers/gpu/drm/drm_drv.c @@ -286,13 +286,13 @@ struct drm_minor *drm_minor_acquire(unsigned int minor_id) spin_lock_irqsave(&drm_minor_lock, flags); minor = idr_find(&drm_minors_idr, minor_id); if (minor) - drm_dev_ref(minor->dev); + drm_dev_get(minor->dev); spin_unlock_irqrestore(&drm_minor_lock, flags); if (!minor) { return ERR_PTR(-ENODEV); } else if (drm_dev_is_unplugged(minor->dev)) { - drm_dev_unref(minor->dev); + drm_dev_put(minor->dev); return ERR_PTR(-ENODEV); } @@ -301,7 +301,7 @@ struct drm_minor *drm_minor_acquire(unsigned int minor_id) void drm_minor_release(struct drm_minor *minor) { - drm_dev_unref(minor->dev); + drm_dev_put(minor->dev); } /** @@ -326,11 +326,11 @@ void drm_minor_release(struct drm_minor *minor) * When cleaning up a device instance everything needs to be done in reverse: * First unpublish the device instance with drm_dev_unregister(). Then clean up * any other resources allocated at device initialization and drop the driver's - * reference to &drm_device using drm_dev_unref(). + * reference to &drm_device using drm_dev_put(). * * Note that the lifetime rules for &drm_device instance has still a lot of * historical baggage. Hence use the reference counting provided by - * drm_dev_ref() and drm_dev_unref() only carefully. + * drm_dev_get() and drm_dev_put() only carefully. * * It is recommended that drivers embed &struct drm_device into their own device * structure, which is supported through drm_dev_init(). @@ -345,7 +345,7 @@ void drm_minor_release(struct drm_minor *minor) * Cleans up all DRM device, calling drm_lastclose(). * * Note: Use of this function is deprecated. It will eventually go away - * completely. Please use drm_dev_unregister() and drm_dev_unref() explicitly + * completely. Please use drm_dev_unregister() and drm_dev_put() explicitly * instead to make sure that the device isn't userspace accessible any more * while teardown is in progress, ensuring that userspace can't access an * inconsistent state. @@ -360,7 +360,7 @@ void drm_put_dev(struct drm_device *dev) } drm_dev_unregister(dev); - drm_dev_unref(dev); + drm_dev_put(dev); } EXPORT_SYMBOL(drm_put_dev); @@ -386,7 +386,7 @@ void drm_dev_unplug(struct drm_device *dev) mutex_lock(&drm_global_mutex); drm_device_set_unplugged(dev); if (dev->open_count == 0) - drm_dev_unref(dev); + drm_dev_put(dev); mutex_unlock(&drm_global_mutex); } EXPORT_SYMBOL(drm_dev_unplug); @@ -475,8 +475,8 @@ static void drm_fs_inode_free(struct inode *inode) * initialization sequence to make sure userspace can't access an inconsistent * state. * - * The initial ref-count of the object is 1. Use drm_dev_ref() and - * drm_dev_unref() to take and drop further ref-counts. + * The initial ref-count of the object is 1. Use drm_dev_get() and + * drm_dev_put() to take and drop further ref-counts. * * Note that for purely virtual devices @parent can be NULL. * @@ -626,8 +626,8 @@ EXPORT_SYMBOL(drm_dev_fini); * initialization sequence to make sure userspace can't access an inconsistent * state. * - * The initial ref-count of the object is 1. Use drm_dev_ref() and - * drm_dev_unref() to take and drop further ref-counts. + * The initial ref-count of the object is 1. Use drm_dev_get() and + * drm_dev_put() to take and drop further ref-counts. * * Note that for purely virtual devices @parent can be NULL. * @@ -670,36 +670,62 @@ static void drm_dev_release(struct kref *ref) } /** - * drm_dev_ref - Take reference of a DRM device + * drm_dev_get - Take reference of a DRM device * @dev: device to take reference of or NULL * * This increases the ref-count of @dev by one. You *must* already own a - * reference when calling this. Use drm_dev_unref() to drop this reference + * reference when calling this. Use drm_dev_put() to drop this reference * again. * * This function never fails. However, this function does not provide *any* * guarantee whether the device is alive or running. It only provides a * reference to the object and the memory associated with it. */ -void drm_dev_ref(struct drm_device *dev) +void drm_dev_get(struct drm_device *dev) { if (dev) kref_get(&dev->ref); } -EXPORT_SYMBOL(drm_dev_ref); +EXPORT_SYMBOL(drm_dev_get); /** - * drm_dev_unref - Drop reference of a DRM device + * drm_dev_put - Drop reference of a DRM device * @dev: device to drop reference of or NULL * * This decreases the ref-count of @dev by one. The device is destroyed if the * ref-count drops to zero. */ -void drm_dev_unref(struct drm_device *dev) +void drm_dev_put(struct drm_device *dev) { if (dev) kref_put(&dev->ref, drm_dev_release); } +EXPORT_SYMBOL(drm_dev_put); + +/** + * drm_dev_ref - Take reference of a DRM device + * @dev: device to take reference of or NULL + * + * This is a compatibility alias for drm_dev_get() and should not be used by new + * code. + */ +void drm_dev_ref(struct drm_device *dev) +{ + drm_dev_get(dev); +} +EXPORT_SYMBOL(drm_dev_ref); + +/** + * drm_dev_unref - Drop reference of a DRM device + * @dev: device to drop reference of or NULL + * + * This is a compatibility alias for drm_dev_put() and should not be used by new + * code. + */ +void drm_dev_unref(struct drm_device *dev) +{ + drm_dev_put(dev); +} EXPORT_SYMBOL(drm_dev_unref); static int create_compat_control_link(struct drm_device *dev) @@ -839,7 +865,7 @@ EXPORT_SYMBOL(drm_dev_register); * * Unregister the DRM device from the system. This does the reverse of * drm_dev_register() but does not deallocate the device. The caller must call - * drm_dev_unref() to drop their final reference. + * drm_dev_put() to drop their final reference. * * A special form of unregistering for hotpluggable devices is drm_dev_unplug(), * which can be called while there are still open users of @dev. diff --git a/include/drm/drm_drv.h b/include/drm/drm_drv.h index 71bbaae..e574fa0 100644 --- a/include/drm/drm_drv.h +++ b/include/drm/drm_drv.h @@ -155,7 +155,7 @@ struct drm_driver { * reverse order of the initialization. Similarly to the load * hook, this handler is deprecated and its usage should be * dropped in favor of an open-coded teardown function at the - * driver layer. See drm_dev_unregister() and drm_dev_unref() + * driver layer. See drm_dev_unregister() and drm_dev_put() * for the proper way to remove a &struct drm_device. * * The unload() hook is called right after unregistering @@ -611,6 +611,8 @@ struct drm_device *drm_dev_alloc(struct drm_driver *driver, int drm_dev_register(struct drm_device *dev, unsigned long flags); void drm_dev_unregister(struct drm_device *dev); +void drm_dev_get(struct drm_device *dev); +void drm_dev_put(struct drm_device *dev); void drm_dev_ref(struct drm_device *dev); void drm_dev_unref(struct drm_device *dev); void drm_put_dev(struct drm_device *dev); -- 2.7.4 ^ permalink raw reply related [flat|nested] 8+ messages in thread
* [PATCH 1/2] drm: introduce drm_dev_{get/put} functions @ 2017-09-21 19:47 ` Aishwarya Pant 0 siblings, 0 replies; 8+ messages in thread From: Aishwarya Pant @ 2017-09-21 19:47 UTC (permalink / raw) To: Daniel Vetter, Jani Nikula, Sean Paul, David Airlie, dri-devel Cc: outreachy-kernel Reference counting functions in the kernel typically use get/put suffixes. For maintaining coding style consistency, introduce drm_dev_{get/put} functions and let the old APIs (with ref/unref suffixes) remain for compatibility. Signed-off-by: Aishwarya Pant <aishpant@gmail.com> --- drivers/gpu/drm/drm_drv.c | 64 +++++++++++++++++++++++++++++++++-------------- include/drm/drm_drv.h | 4 ++- 2 files changed, 48 insertions(+), 20 deletions(-) diff --git a/drivers/gpu/drm/drm_drv.c b/drivers/gpu/drm/drm_drv.c index be38ac7..4592314 100644 --- a/drivers/gpu/drm/drm_drv.c +++ b/drivers/gpu/drm/drm_drv.c @@ -286,13 +286,13 @@ struct drm_minor *drm_minor_acquire(unsigned int minor_id) spin_lock_irqsave(&drm_minor_lock, flags); minor = idr_find(&drm_minors_idr, minor_id); if (minor) - drm_dev_ref(minor->dev); + drm_dev_get(minor->dev); spin_unlock_irqrestore(&drm_minor_lock, flags); if (!minor) { return ERR_PTR(-ENODEV); } else if (drm_dev_is_unplugged(minor->dev)) { - drm_dev_unref(minor->dev); + drm_dev_put(minor->dev); return ERR_PTR(-ENODEV); } @@ -301,7 +301,7 @@ struct drm_minor *drm_minor_acquire(unsigned int minor_id) void drm_minor_release(struct drm_minor *minor) { - drm_dev_unref(minor->dev); + drm_dev_put(minor->dev); } /** @@ -326,11 +326,11 @@ void drm_minor_release(struct drm_minor *minor) * When cleaning up a device instance everything needs to be done in reverse: * First unpublish the device instance with drm_dev_unregister(). Then clean up * any other resources allocated at device initialization and drop the driver's - * reference to &drm_device using drm_dev_unref(). + * reference to &drm_device using drm_dev_put(). * * Note that the lifetime rules for &drm_device instance has still a lot of * historical baggage. Hence use the reference counting provided by - * drm_dev_ref() and drm_dev_unref() only carefully. + * drm_dev_get() and drm_dev_put() only carefully. * * It is recommended that drivers embed &struct drm_device into their own device * structure, which is supported through drm_dev_init(). @@ -345,7 +345,7 @@ void drm_minor_release(struct drm_minor *minor) * Cleans up all DRM device, calling drm_lastclose(). * * Note: Use of this function is deprecated. It will eventually go away - * completely. Please use drm_dev_unregister() and drm_dev_unref() explicitly + * completely. Please use drm_dev_unregister() and drm_dev_put() explicitly * instead to make sure that the device isn't userspace accessible any more * while teardown is in progress, ensuring that userspace can't access an * inconsistent state. @@ -360,7 +360,7 @@ void drm_put_dev(struct drm_device *dev) } drm_dev_unregister(dev); - drm_dev_unref(dev); + drm_dev_put(dev); } EXPORT_SYMBOL(drm_put_dev); @@ -386,7 +386,7 @@ void drm_dev_unplug(struct drm_device *dev) mutex_lock(&drm_global_mutex); drm_device_set_unplugged(dev); if (dev->open_count == 0) - drm_dev_unref(dev); + drm_dev_put(dev); mutex_unlock(&drm_global_mutex); } EXPORT_SYMBOL(drm_dev_unplug); @@ -475,8 +475,8 @@ static void drm_fs_inode_free(struct inode *inode) * initialization sequence to make sure userspace can't access an inconsistent * state. * - * The initial ref-count of the object is 1. Use drm_dev_ref() and - * drm_dev_unref() to take and drop further ref-counts. + * The initial ref-count of the object is 1. Use drm_dev_get() and + * drm_dev_put() to take and drop further ref-counts. * * Note that for purely virtual devices @parent can be NULL. * @@ -626,8 +626,8 @@ EXPORT_SYMBOL(drm_dev_fini); * initialization sequence to make sure userspace can't access an inconsistent * state. * - * The initial ref-count of the object is 1. Use drm_dev_ref() and - * drm_dev_unref() to take and drop further ref-counts. + * The initial ref-count of the object is 1. Use drm_dev_get() and + * drm_dev_put() to take and drop further ref-counts. * * Note that for purely virtual devices @parent can be NULL. * @@ -670,36 +670,62 @@ static void drm_dev_release(struct kref *ref) } /** - * drm_dev_ref - Take reference of a DRM device + * drm_dev_get - Take reference of a DRM device * @dev: device to take reference of or NULL * * This increases the ref-count of @dev by one. You *must* already own a - * reference when calling this. Use drm_dev_unref() to drop this reference + * reference when calling this. Use drm_dev_put() to drop this reference * again. * * This function never fails. However, this function does not provide *any* * guarantee whether the device is alive or running. It only provides a * reference to the object and the memory associated with it. */ -void drm_dev_ref(struct drm_device *dev) +void drm_dev_get(struct drm_device *dev) { if (dev) kref_get(&dev->ref); } -EXPORT_SYMBOL(drm_dev_ref); +EXPORT_SYMBOL(drm_dev_get); /** - * drm_dev_unref - Drop reference of a DRM device + * drm_dev_put - Drop reference of a DRM device * @dev: device to drop reference of or NULL * * This decreases the ref-count of @dev by one. The device is destroyed if the * ref-count drops to zero. */ -void drm_dev_unref(struct drm_device *dev) +void drm_dev_put(struct drm_device *dev) { if (dev) kref_put(&dev->ref, drm_dev_release); } +EXPORT_SYMBOL(drm_dev_put); + +/** + * drm_dev_ref - Take reference of a DRM device + * @dev: device to take reference of or NULL + * + * This is a compatibility alias for drm_dev_get() and should not be used by new + * code. + */ +void drm_dev_ref(struct drm_device *dev) +{ + drm_dev_get(dev); +} +EXPORT_SYMBOL(drm_dev_ref); + +/** + * drm_dev_unref - Drop reference of a DRM device + * @dev: device to drop reference of or NULL + * + * This is a compatibility alias for drm_dev_put() and should not be used by new + * code. + */ +void drm_dev_unref(struct drm_device *dev) +{ + drm_dev_put(dev); +} EXPORT_SYMBOL(drm_dev_unref); static int create_compat_control_link(struct drm_device *dev) @@ -839,7 +865,7 @@ EXPORT_SYMBOL(drm_dev_register); * * Unregister the DRM device from the system. This does the reverse of * drm_dev_register() but does not deallocate the device. The caller must call - * drm_dev_unref() to drop their final reference. + * drm_dev_put() to drop their final reference. * * A special form of unregistering for hotpluggable devices is drm_dev_unplug(), * which can be called while there are still open users of @dev. diff --git a/include/drm/drm_drv.h b/include/drm/drm_drv.h index 71bbaae..e574fa0 100644 --- a/include/drm/drm_drv.h +++ b/include/drm/drm_drv.h @@ -155,7 +155,7 @@ struct drm_driver { * reverse order of the initialization. Similarly to the load * hook, this handler is deprecated and its usage should be * dropped in favor of an open-coded teardown function at the - * driver layer. See drm_dev_unregister() and drm_dev_unref() + * driver layer. See drm_dev_unregister() and drm_dev_put() * for the proper way to remove a &struct drm_device. * * The unload() hook is called right after unregistering @@ -611,6 +611,8 @@ struct drm_device *drm_dev_alloc(struct drm_driver *driver, int drm_dev_register(struct drm_device *dev, unsigned long flags); void drm_dev_unregister(struct drm_device *dev); +void drm_dev_get(struct drm_device *dev); +void drm_dev_put(struct drm_device *dev); void drm_dev_ref(struct drm_device *dev); void drm_dev_unref(struct drm_device *dev); void drm_put_dev(struct drm_device *dev); -- 2.7.4 _______________________________________________ dri-devel mailing list dri-devel@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/dri-devel ^ permalink raw reply related [flat|nested] 8+ messages in thread
* Re: [Outreachy kernel] [PATCH 1/2] drm: introduce drm_dev_{get/put} functions 2017-09-21 19:47 ` Aishwarya Pant @ 2017-09-26 5:22 ` Daniel Vetter -1 siblings, 0 replies; 8+ messages in thread From: Daniel Vetter @ 2017-09-26 5:22 UTC (permalink / raw) To: Aishwarya Pant Cc: Daniel Vetter, Jani Nikula, Sean Paul, David Airlie, dri-devel, outreachy-kernel On Fri, Sep 22, 2017 at 01:17:06AM +0530, Aishwarya Pant wrote: > Reference counting functions in the kernel typically use get/put suffixes. For > maintaining coding style consistency, introduce drm_dev_{get/put} functions > and let the old APIs (with ref/unref suffixes) remain for compatibility. > > Signed-off-by: Aishwarya Pant <aishpant@gmail.com> Excellent idea to fill this gap, we totally overlooked this in the initial work! > --- > drivers/gpu/drm/drm_drv.c | 64 +++++++++++++++++++++++++++++++++-------------- > include/drm/drm_drv.h | 4 ++- Please also update scripts/coccinelle/api/drm-get-put.cocci with this new transformation. > 2 files changed, 48 insertions(+), 20 deletions(-) > > diff --git a/drivers/gpu/drm/drm_drv.c b/drivers/gpu/drm/drm_drv.c > index be38ac7..4592314 100644 > --- a/drivers/gpu/drm/drm_drv.c > +++ b/drivers/gpu/drm/drm_drv.c > @@ -286,13 +286,13 @@ struct drm_minor *drm_minor_acquire(unsigned int minor_id) > spin_lock_irqsave(&drm_minor_lock, flags); > minor = idr_find(&drm_minors_idr, minor_id); > if (minor) > - drm_dev_ref(minor->dev); > + drm_dev_get(minor->dev); > spin_unlock_irqrestore(&drm_minor_lock, flags); > > if (!minor) { > return ERR_PTR(-ENODEV); > } else if (drm_dev_is_unplugged(minor->dev)) { > - drm_dev_unref(minor->dev); > + drm_dev_put(minor->dev); > return ERR_PTR(-ENODEV); > } > > @@ -301,7 +301,7 @@ struct drm_minor *drm_minor_acquire(unsigned int minor_id) > > void drm_minor_release(struct drm_minor *minor) > { > - drm_dev_unref(minor->dev); > + drm_dev_put(minor->dev); > } > > /** > @@ -326,11 +326,11 @@ void drm_minor_release(struct drm_minor *minor) > * When cleaning up a device instance everything needs to be done in reverse: > * First unpublish the device instance with drm_dev_unregister(). Then clean up > * any other resources allocated at device initialization and drop the driver's > - * reference to &drm_device using drm_dev_unref(). > + * reference to &drm_device using drm_dev_put(). > * > * Note that the lifetime rules for &drm_device instance has still a lot of > * historical baggage. Hence use the reference counting provided by > - * drm_dev_ref() and drm_dev_unref() only carefully. > + * drm_dev_get() and drm_dev_put() only carefully. > * > * It is recommended that drivers embed &struct drm_device into their own device > * structure, which is supported through drm_dev_init(). > @@ -345,7 +345,7 @@ void drm_minor_release(struct drm_minor *minor) > * Cleans up all DRM device, calling drm_lastclose(). > * > * Note: Use of this function is deprecated. It will eventually go away > - * completely. Please use drm_dev_unregister() and drm_dev_unref() explicitly > + * completely. Please use drm_dev_unregister() and drm_dev_put() explicitly > * instead to make sure that the device isn't userspace accessible any more > * while teardown is in progress, ensuring that userspace can't access an > * inconsistent state. > @@ -360,7 +360,7 @@ void drm_put_dev(struct drm_device *dev) > } > > drm_dev_unregister(dev); > - drm_dev_unref(dev); > + drm_dev_put(dev); > } > EXPORT_SYMBOL(drm_put_dev); > > @@ -386,7 +386,7 @@ void drm_dev_unplug(struct drm_device *dev) > mutex_lock(&drm_global_mutex); > drm_device_set_unplugged(dev); > if (dev->open_count == 0) > - drm_dev_unref(dev); > + drm_dev_put(dev); > mutex_unlock(&drm_global_mutex); > } > EXPORT_SYMBOL(drm_dev_unplug); > @@ -475,8 +475,8 @@ static void drm_fs_inode_free(struct inode *inode) > * initialization sequence to make sure userspace can't access an inconsistent > * state. > * > - * The initial ref-count of the object is 1. Use drm_dev_ref() and > - * drm_dev_unref() to take and drop further ref-counts. > + * The initial ref-count of the object is 1. Use drm_dev_get() and > + * drm_dev_put() to take and drop further ref-counts. > * > * Note that for purely virtual devices @parent can be NULL. > * > @@ -626,8 +626,8 @@ EXPORT_SYMBOL(drm_dev_fini); > * initialization sequence to make sure userspace can't access an inconsistent > * state. > * > - * The initial ref-count of the object is 1. Use drm_dev_ref() and > - * drm_dev_unref() to take and drop further ref-counts. > + * The initial ref-count of the object is 1. Use drm_dev_get() and > + * drm_dev_put() to take and drop further ref-counts. > * > * Note that for purely virtual devices @parent can be NULL. > * > @@ -670,36 +670,62 @@ static void drm_dev_release(struct kref *ref) > } > > /** > - * drm_dev_ref - Take reference of a DRM device > + * drm_dev_get - Take reference of a DRM device > * @dev: device to take reference of or NULL > * > * This increases the ref-count of @dev by one. You *must* already own a > - * reference when calling this. Use drm_dev_unref() to drop this reference > + * reference when calling this. Use drm_dev_put() to drop this reference > * again. > * > * This function never fails. However, this function does not provide *any* > * guarantee whether the device is alive or running. It only provides a > * reference to the object and the memory associated with it. > */ > -void drm_dev_ref(struct drm_device *dev) > +void drm_dev_get(struct drm_device *dev) > { > if (dev) > kref_get(&dev->ref); > } > -EXPORT_SYMBOL(drm_dev_ref); > +EXPORT_SYMBOL(drm_dev_get); > > /** > - * drm_dev_unref - Drop reference of a DRM device > + * drm_dev_put - Drop reference of a DRM device > * @dev: device to drop reference of or NULL > * > * This decreases the ref-count of @dev by one. The device is destroyed if the > * ref-count drops to zero. > */ > -void drm_dev_unref(struct drm_device *dev) > +void drm_dev_put(struct drm_device *dev) > { > if (dev) > kref_put(&dev->ref, drm_dev_release); > } > +EXPORT_SYMBOL(drm_dev_put); > + > +/** > + * drm_dev_ref - Take reference of a DRM device > + * @dev: device to take reference of or NULL > + * > + * This is a compatibility alias for drm_dev_get() and should not be used by new > + * code. > + */ > +void drm_dev_ref(struct drm_device *dev) > +{ > + drm_dev_get(dev); > +} > +EXPORT_SYMBOL(drm_dev_ref); I think you've already converted all callers for drm_dev_ref() with this patch here, so no need to add the compat function and risk getting new callers. Once a conversion is done in upstream we should remove these. Please remove. With those 2 nits addressed I think your patch is ready for merging, please resend with those changes. Thanks, Daniel > + > +/** > + * drm_dev_unref - Drop reference of a DRM device > + * @dev: device to drop reference of or NULL > + * > + * This is a compatibility alias for drm_dev_put() and should not be used by new > + * code. > + */ > +void drm_dev_unref(struct drm_device *dev) > +{ > + drm_dev_put(dev); > +} > EXPORT_SYMBOL(drm_dev_unref); > > static int create_compat_control_link(struct drm_device *dev) > @@ -839,7 +865,7 @@ EXPORT_SYMBOL(drm_dev_register); > * > * Unregister the DRM device from the system. This does the reverse of > * drm_dev_register() but does not deallocate the device. The caller must call > - * drm_dev_unref() to drop their final reference. > + * drm_dev_put() to drop their final reference. > * > * A special form of unregistering for hotpluggable devices is drm_dev_unplug(), > * which can be called while there are still open users of @dev. > diff --git a/include/drm/drm_drv.h b/include/drm/drm_drv.h > index 71bbaae..e574fa0 100644 > --- a/include/drm/drm_drv.h > +++ b/include/drm/drm_drv.h > @@ -155,7 +155,7 @@ struct drm_driver { > * reverse order of the initialization. Similarly to the load > * hook, this handler is deprecated and its usage should be > * dropped in favor of an open-coded teardown function at the > - * driver layer. See drm_dev_unregister() and drm_dev_unref() > + * driver layer. See drm_dev_unregister() and drm_dev_put() > * for the proper way to remove a &struct drm_device. > * > * The unload() hook is called right after unregistering > @@ -611,6 +611,8 @@ struct drm_device *drm_dev_alloc(struct drm_driver *driver, > int drm_dev_register(struct drm_device *dev, unsigned long flags); > void drm_dev_unregister(struct drm_device *dev); > > +void drm_dev_get(struct drm_device *dev); > +void drm_dev_put(struct drm_device *dev); > void drm_dev_ref(struct drm_device *dev); > void drm_dev_unref(struct drm_device *dev); > void drm_put_dev(struct drm_device *dev); > -- > 2.7.4 > > -- > You received this message because you are subscribed to the Google Groups "outreachy-kernel" group. > To unsubscribe from this group and stop receiving emails from it, send an email to outreachy-kernel+unsubscribe@googlegroups.com. > To post to this group, send email to outreachy-kernel@googlegroups.com. > To view this discussion on the web visit https://groups.google.com/d/msgid/outreachy-kernel/33c3c79daa7a8f9c52ee87f4d78f3a551ab96b54.1506023126.git.aishpant%40gmail.com. > For more options, visit https://groups.google.com/d/optout. -- Daniel Vetter Software Engineer, Intel Corporation http://blog.ffwll.ch ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [Outreachy kernel] [PATCH 1/2] drm: introduce drm_dev_{get/put} functions @ 2017-09-26 5:22 ` Daniel Vetter 0 siblings, 0 replies; 8+ messages in thread From: Daniel Vetter @ 2017-09-26 5:22 UTC (permalink / raw) To: Aishwarya Pant; +Cc: dri-devel, outreachy-kernel, Daniel Vetter On Fri, Sep 22, 2017 at 01:17:06AM +0530, Aishwarya Pant wrote: > Reference counting functions in the kernel typically use get/put suffixes. For > maintaining coding style consistency, introduce drm_dev_{get/put} functions > and let the old APIs (with ref/unref suffixes) remain for compatibility. > > Signed-off-by: Aishwarya Pant <aishpant@gmail.com> Excellent idea to fill this gap, we totally overlooked this in the initial work! > --- > drivers/gpu/drm/drm_drv.c | 64 +++++++++++++++++++++++++++++++++-------------- > include/drm/drm_drv.h | 4 ++- Please also update scripts/coccinelle/api/drm-get-put.cocci with this new transformation. > 2 files changed, 48 insertions(+), 20 deletions(-) > > diff --git a/drivers/gpu/drm/drm_drv.c b/drivers/gpu/drm/drm_drv.c > index be38ac7..4592314 100644 > --- a/drivers/gpu/drm/drm_drv.c > +++ b/drivers/gpu/drm/drm_drv.c > @@ -286,13 +286,13 @@ struct drm_minor *drm_minor_acquire(unsigned int minor_id) > spin_lock_irqsave(&drm_minor_lock, flags); > minor = idr_find(&drm_minors_idr, minor_id); > if (minor) > - drm_dev_ref(minor->dev); > + drm_dev_get(minor->dev); > spin_unlock_irqrestore(&drm_minor_lock, flags); > > if (!minor) { > return ERR_PTR(-ENODEV); > } else if (drm_dev_is_unplugged(minor->dev)) { > - drm_dev_unref(minor->dev); > + drm_dev_put(minor->dev); > return ERR_PTR(-ENODEV); > } > > @@ -301,7 +301,7 @@ struct drm_minor *drm_minor_acquire(unsigned int minor_id) > > void drm_minor_release(struct drm_minor *minor) > { > - drm_dev_unref(minor->dev); > + drm_dev_put(minor->dev); > } > > /** > @@ -326,11 +326,11 @@ void drm_minor_release(struct drm_minor *minor) > * When cleaning up a device instance everything needs to be done in reverse: > * First unpublish the device instance with drm_dev_unregister(). Then clean up > * any other resources allocated at device initialization and drop the driver's > - * reference to &drm_device using drm_dev_unref(). > + * reference to &drm_device using drm_dev_put(). > * > * Note that the lifetime rules for &drm_device instance has still a lot of > * historical baggage. Hence use the reference counting provided by > - * drm_dev_ref() and drm_dev_unref() only carefully. > + * drm_dev_get() and drm_dev_put() only carefully. > * > * It is recommended that drivers embed &struct drm_device into their own device > * structure, which is supported through drm_dev_init(). > @@ -345,7 +345,7 @@ void drm_minor_release(struct drm_minor *minor) > * Cleans up all DRM device, calling drm_lastclose(). > * > * Note: Use of this function is deprecated. It will eventually go away > - * completely. Please use drm_dev_unregister() and drm_dev_unref() explicitly > + * completely. Please use drm_dev_unregister() and drm_dev_put() explicitly > * instead to make sure that the device isn't userspace accessible any more > * while teardown is in progress, ensuring that userspace can't access an > * inconsistent state. > @@ -360,7 +360,7 @@ void drm_put_dev(struct drm_device *dev) > } > > drm_dev_unregister(dev); > - drm_dev_unref(dev); > + drm_dev_put(dev); > } > EXPORT_SYMBOL(drm_put_dev); > > @@ -386,7 +386,7 @@ void drm_dev_unplug(struct drm_device *dev) > mutex_lock(&drm_global_mutex); > drm_device_set_unplugged(dev); > if (dev->open_count == 0) > - drm_dev_unref(dev); > + drm_dev_put(dev); > mutex_unlock(&drm_global_mutex); > } > EXPORT_SYMBOL(drm_dev_unplug); > @@ -475,8 +475,8 @@ static void drm_fs_inode_free(struct inode *inode) > * initialization sequence to make sure userspace can't access an inconsistent > * state. > * > - * The initial ref-count of the object is 1. Use drm_dev_ref() and > - * drm_dev_unref() to take and drop further ref-counts. > + * The initial ref-count of the object is 1. Use drm_dev_get() and > + * drm_dev_put() to take and drop further ref-counts. > * > * Note that for purely virtual devices @parent can be NULL. > * > @@ -626,8 +626,8 @@ EXPORT_SYMBOL(drm_dev_fini); > * initialization sequence to make sure userspace can't access an inconsistent > * state. > * > - * The initial ref-count of the object is 1. Use drm_dev_ref() and > - * drm_dev_unref() to take and drop further ref-counts. > + * The initial ref-count of the object is 1. Use drm_dev_get() and > + * drm_dev_put() to take and drop further ref-counts. > * > * Note that for purely virtual devices @parent can be NULL. > * > @@ -670,36 +670,62 @@ static void drm_dev_release(struct kref *ref) > } > > /** > - * drm_dev_ref - Take reference of a DRM device > + * drm_dev_get - Take reference of a DRM device > * @dev: device to take reference of or NULL > * > * This increases the ref-count of @dev by one. You *must* already own a > - * reference when calling this. Use drm_dev_unref() to drop this reference > + * reference when calling this. Use drm_dev_put() to drop this reference > * again. > * > * This function never fails. However, this function does not provide *any* > * guarantee whether the device is alive or running. It only provides a > * reference to the object and the memory associated with it. > */ > -void drm_dev_ref(struct drm_device *dev) > +void drm_dev_get(struct drm_device *dev) > { > if (dev) > kref_get(&dev->ref); > } > -EXPORT_SYMBOL(drm_dev_ref); > +EXPORT_SYMBOL(drm_dev_get); > > /** > - * drm_dev_unref - Drop reference of a DRM device > + * drm_dev_put - Drop reference of a DRM device > * @dev: device to drop reference of or NULL > * > * This decreases the ref-count of @dev by one. The device is destroyed if the > * ref-count drops to zero. > */ > -void drm_dev_unref(struct drm_device *dev) > +void drm_dev_put(struct drm_device *dev) > { > if (dev) > kref_put(&dev->ref, drm_dev_release); > } > +EXPORT_SYMBOL(drm_dev_put); > + > +/** > + * drm_dev_ref - Take reference of a DRM device > + * @dev: device to take reference of or NULL > + * > + * This is a compatibility alias for drm_dev_get() and should not be used by new > + * code. > + */ > +void drm_dev_ref(struct drm_device *dev) > +{ > + drm_dev_get(dev); > +} > +EXPORT_SYMBOL(drm_dev_ref); I think you've already converted all callers for drm_dev_ref() with this patch here, so no need to add the compat function and risk getting new callers. Once a conversion is done in upstream we should remove these. Please remove. With those 2 nits addressed I think your patch is ready for merging, please resend with those changes. Thanks, Daniel > + > +/** > + * drm_dev_unref - Drop reference of a DRM device > + * @dev: device to drop reference of or NULL > + * > + * This is a compatibility alias for drm_dev_put() and should not be used by new > + * code. > + */ > +void drm_dev_unref(struct drm_device *dev) > +{ > + drm_dev_put(dev); > +} > EXPORT_SYMBOL(drm_dev_unref); > > static int create_compat_control_link(struct drm_device *dev) > @@ -839,7 +865,7 @@ EXPORT_SYMBOL(drm_dev_register); > * > * Unregister the DRM device from the system. This does the reverse of > * drm_dev_register() but does not deallocate the device. The caller must call > - * drm_dev_unref() to drop their final reference. > + * drm_dev_put() to drop their final reference. > * > * A special form of unregistering for hotpluggable devices is drm_dev_unplug(), > * which can be called while there are still open users of @dev. > diff --git a/include/drm/drm_drv.h b/include/drm/drm_drv.h > index 71bbaae..e574fa0 100644 > --- a/include/drm/drm_drv.h > +++ b/include/drm/drm_drv.h > @@ -155,7 +155,7 @@ struct drm_driver { > * reverse order of the initialization. Similarly to the load > * hook, this handler is deprecated and its usage should be > * dropped in favor of an open-coded teardown function at the > - * driver layer. See drm_dev_unregister() and drm_dev_unref() > + * driver layer. See drm_dev_unregister() and drm_dev_put() > * for the proper way to remove a &struct drm_device. > * > * The unload() hook is called right after unregistering > @@ -611,6 +611,8 @@ struct drm_device *drm_dev_alloc(struct drm_driver *driver, > int drm_dev_register(struct drm_device *dev, unsigned long flags); > void drm_dev_unregister(struct drm_device *dev); > > +void drm_dev_get(struct drm_device *dev); > +void drm_dev_put(struct drm_device *dev); > void drm_dev_ref(struct drm_device *dev); > void drm_dev_unref(struct drm_device *dev); > void drm_put_dev(struct drm_device *dev); > -- > 2.7.4 > > -- > You received this message because you are subscribed to the Google Groups "outreachy-kernel" group. > To unsubscribe from this group and stop receiving emails from it, send an email to outreachy-kernel+unsubscribe@googlegroups.com. > To post to this group, send email to outreachy-kernel@googlegroups.com. > To view this discussion on the web visit https://groups.google.com/d/msgid/outreachy-kernel/33c3c79daa7a8f9c52ee87f4d78f3a551ab96b54.1506023126.git.aishpant%40gmail.com. > For more options, visit https://groups.google.com/d/optout. -- Daniel Vetter Software Engineer, Intel Corporation http://blog.ffwll.ch _______________________________________________ dri-devel mailing list dri-devel@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/dri-devel ^ permalink raw reply [flat|nested] 8+ messages in thread
* [PATCH 2/2] drm/tilcdc: replace reference/unreference() with get/put 2017-09-21 19:46 ` Aishwarya Pant @ 2017-09-21 19:47 ` Aishwarya Pant -1 siblings, 0 replies; 8+ messages in thread From: Aishwarya Pant @ 2017-09-21 19:47 UTC (permalink / raw) To: Daniel Vetter, Jani Nikula, Sean Paul, David Airlie, dri-devel Cc: outreachy-kernel For maintaining consistency with kernel coding style replace reference/unreference in ref counting functions with get/put. The following cocci script was used to generate the tilcdc patch: @@ expression ex; @@ ( -drm_framebuffer_unreference(ex); +drm_framebuffer_put(ex); | -drm_dev_unref(ex); +drm_dev_put(ex); | -drm_framebuffer_reference(ex); +drm_framebuffer_get(ex); ) Signed-off-by: Aishwarya Pant <aishpant@gmail.com> --- drivers/gpu/drm/tilcdc/tilcdc_crtc.c | 6 +++--- drivers/gpu/drm/tilcdc/tilcdc_drv.c | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/drivers/gpu/drm/tilcdc/tilcdc_crtc.c b/drivers/gpu/drm/tilcdc/tilcdc_crtc.c index 406fe45..d2589f310 100644 --- a/drivers/gpu/drm/tilcdc/tilcdc_crtc.c +++ b/drivers/gpu/drm/tilcdc/tilcdc_crtc.c @@ -75,7 +75,7 @@ static void unref_worker(struct drm_flip_work *work, void *val) struct drm_device *dev = tilcdc_crtc->base.dev; mutex_lock(&dev->mode_config.mutex); - drm_framebuffer_unreference(val); + drm_framebuffer_put(val); mutex_unlock(&dev->mode_config.mutex); } @@ -456,7 +456,7 @@ static void tilcdc_crtc_set_mode(struct drm_crtc *crtc) set_scanout(crtc, fb); - drm_framebuffer_reference(fb); + drm_framebuffer_get(fb); crtc->hwmode = crtc->state->adjusted_mode; } @@ -633,7 +633,7 @@ int tilcdc_crtc_update_fb(struct drm_crtc *crtc, return -EBUSY; } - drm_framebuffer_reference(fb); + drm_framebuffer_get(fb); crtc->primary->fb = fb; tilcdc_crtc->event = event; diff --git a/drivers/gpu/drm/tilcdc/tilcdc_drv.c b/drivers/gpu/drm/tilcdc/tilcdc_drv.c index b0d70f9..74276ef 100644 --- a/drivers/gpu/drm/tilcdc/tilcdc_drv.c +++ b/drivers/gpu/drm/tilcdc/tilcdc_drv.c @@ -225,7 +225,7 @@ static void tilcdc_fini(struct drm_device *dev) pm_runtime_disable(dev->dev); - drm_dev_unref(dev); + drm_dev_put(dev); } static int tilcdc_init(struct drm_driver *ddrv, struct device *dev) -- 2.7.4 ^ permalink raw reply related [flat|nested] 8+ messages in thread
* [PATCH 2/2] drm/tilcdc: replace reference/unreference() with get/put @ 2017-09-21 19:47 ` Aishwarya Pant 0 siblings, 0 replies; 8+ messages in thread From: Aishwarya Pant @ 2017-09-21 19:47 UTC (permalink / raw) To: Daniel Vetter, Jani Nikula, Sean Paul, David Airlie, dri-devel Cc: outreachy-kernel For maintaining consistency with kernel coding style replace reference/unreference in ref counting functions with get/put. The following cocci script was used to generate the tilcdc patch: @@ expression ex; @@ ( -drm_framebuffer_unreference(ex); +drm_framebuffer_put(ex); | -drm_dev_unref(ex); +drm_dev_put(ex); | -drm_framebuffer_reference(ex); +drm_framebuffer_get(ex); ) Signed-off-by: Aishwarya Pant <aishpant@gmail.com> --- drivers/gpu/drm/tilcdc/tilcdc_crtc.c | 6 +++--- drivers/gpu/drm/tilcdc/tilcdc_drv.c | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/drivers/gpu/drm/tilcdc/tilcdc_crtc.c b/drivers/gpu/drm/tilcdc/tilcdc_crtc.c index 406fe45..d2589f310 100644 --- a/drivers/gpu/drm/tilcdc/tilcdc_crtc.c +++ b/drivers/gpu/drm/tilcdc/tilcdc_crtc.c @@ -75,7 +75,7 @@ static void unref_worker(struct drm_flip_work *work, void *val) struct drm_device *dev = tilcdc_crtc->base.dev; mutex_lock(&dev->mode_config.mutex); - drm_framebuffer_unreference(val); + drm_framebuffer_put(val); mutex_unlock(&dev->mode_config.mutex); } @@ -456,7 +456,7 @@ static void tilcdc_crtc_set_mode(struct drm_crtc *crtc) set_scanout(crtc, fb); - drm_framebuffer_reference(fb); + drm_framebuffer_get(fb); crtc->hwmode = crtc->state->adjusted_mode; } @@ -633,7 +633,7 @@ int tilcdc_crtc_update_fb(struct drm_crtc *crtc, return -EBUSY; } - drm_framebuffer_reference(fb); + drm_framebuffer_get(fb); crtc->primary->fb = fb; tilcdc_crtc->event = event; diff --git a/drivers/gpu/drm/tilcdc/tilcdc_drv.c b/drivers/gpu/drm/tilcdc/tilcdc_drv.c index b0d70f9..74276ef 100644 --- a/drivers/gpu/drm/tilcdc/tilcdc_drv.c +++ b/drivers/gpu/drm/tilcdc/tilcdc_drv.c @@ -225,7 +225,7 @@ static void tilcdc_fini(struct drm_device *dev) pm_runtime_disable(dev->dev); - drm_dev_unref(dev); + drm_dev_put(dev); } static int tilcdc_init(struct drm_driver *ddrv, struct device *dev) -- 2.7.4 _______________________________________________ dri-devel mailing list dri-devel@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/dri-devel ^ permalink raw reply related [flat|nested] 8+ messages in thread
end of thread, other threads:[~2017-09-26 5:22 UTC | newest]
Thread overview: 8+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2017-09-21 19:46 [PATCH 0/2] drm/tilcdc: replace reference/unreference with get/put Aishwarya Pant
2017-09-21 19:46 ` Aishwarya Pant
2017-09-21 19:47 ` [PATCH 1/2] drm: introduce drm_dev_{get/put} functions Aishwarya Pant
2017-09-21 19:47 ` Aishwarya Pant
2017-09-26 5:22 ` [Outreachy kernel] " Daniel Vetter
2017-09-26 5:22 ` Daniel Vetter
2017-09-21 19:47 ` [PATCH 2/2] drm/tilcdc: replace reference/unreference() with get/put Aishwarya Pant
2017-09-21 19:47 ` Aishwarya Pant
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.