[PATCH] drm/drm_bridge: adjust bridge module's refcount
Laurent Pinchart
laurent.pinchart at ideasonboard.com
Wed Nov 30 09:30:12 UTC 2016
Hi Jyri,
On Wednesday 30 Nov 2016 11:13:41 Jyri Sarha wrote:
> On 11/30/16 11:03, Laurent Pinchart wrote:
> >>> This would require combining lookup and attach in all cases. I'm not
> >>> sure
> >>>
> >>>>> that would be very convenient for drivers. Keeping the two
> >>>>> operations separate would be more flexible.
> >>>
> >>> That could be avoided if of_drm_find_bridge() would copy the content of
> >>> bridge object, in stead of providing a pointer.
> >
> > /me shivers
> >
> >>> The attach call could then search for the bridge object again before
> >>> continuing. But still in the end the impact to individual drivers would
> >>> be equal to adding a simple drm_bridge_put() call. Probably better to go
> >>> forward with your suggestion.
> >
> > Please :-)
>
> Ok :). But first I'll make a pull request of all accumulated tilcdc
> patches, as all problems I have found in them are to be fixed outside
> tilcdc.
Sure.
> >>> Even adding the drm_bridge_put() would not be necessary in most cases
> >>> if we would add a devm version of getting the bridge object. In 99% of
> >>> cases the device probe will fail if the bridge attach fails, and bridge
> >>> object refcount would return to zero automatically.
> >
> > devm_* is evil in most cases, especially the devm_kzalloc() function as it
> > ties object lifetime to devices, releasing memory at unbind time when the
> > object can still be referenced elsewhere. Regarding bridges, a
> > devm_of_drm_find_bridge() might make sense as the bridge seems at first
> > glance to (nearly) always be a resource that can be released at DRM
> > unbind time.
>
> But the devm is not at all as evil when the object is refcounted,
> because every piece of code that wants to keep a reference to the object
> can keep it.
devm_* is fine when allocating a resources that is release at device unbind
time. I/O regions, IRQ, and most probably bridges (I'd have to sleep over that
last one) should fall in that category, at least most of the time.
devm_kzalloc() is evil in the sense that many driver authors use it as a
solution to world hunger without thinking twice, while memory allocated by
drivers for objects that are registered and must outlive the lifetime of the
device binding is not a resource consumed by the driver that can be released
at unbind time.
--
Regards,
Laurent Pinchart
More information about the dri-devel
mailing list