On Wed, Dec 09, 2020 at 04:58:05PM +0100, Daniel Vetter wrote: > On Wed, Dec 09, 2020 at 11:58:44AM +0100, Philipp Zabel wrote: > > Hi Sam, > > > > On Tue, 2020-12-08 at 19:48 +0100, Sam Ravnborg wrote: > > > Hi Philipp, > > > On Tue, Dec 08, 2020 at 04:54:33PM +0100, Philipp Zabel wrote: > > > > Simple managed encoders do not require the .destroy callback, > > > > make the whole funcs structure optional. > > > > > > > > Signed-off-by: Philipp Zabel <p.zabel@xxxxxxxxxxxxxx> > > > > Reviewed-by: Laurent Pinchart <laurent.pinchart@xxxxxxxxxxxxxxxx> > > > > --- > > > > New in v4. > > > > --- > > > > drivers/gpu/drm/drm_encoder.c | 4 ++-- > > > > drivers/gpu/drm/drm_mode_config.c | 5 +++-- > > > > include/drm/drm_encoder.h | 2 +- > > > > 3 files changed, 6 insertions(+), 5 deletions(-) > > > > > > [...] > > > > diff --git a/drivers/gpu/drm/drm_mode_config.c b/drivers/gpu/drm/drm_mode_config.c > > > > index f1affc1bb679..87e144155456 100644 > > > > --- a/drivers/gpu/drm/drm_mode_config.c > > > > +++ b/drivers/gpu/drm/drm_mode_config.c > > [...] > > > > @@ -487,7 +487,8 @@ void drm_mode_config_cleanup(struct drm_device *dev) > > > > > > > > list_for_each_entry_safe(encoder, enct, &dev->mode_config.encoder_list, > > > > head) { > > > > - encoder->funcs->destroy(encoder); > > > > + if (encoder->funcs) > > > > + encoder->funcs->destroy(encoder); > > > > > > So late_register and early_unregister are both optional. > > > But if encoder->funcs is set then the destroy callback is mandatory. > > > > For encoders that are kept on the mode_config.encoder_list until > > drm_mode_config_cleanup() is called, the destroy callback is still > > mandatory. > > > > Encoders allocated with drmm_encoder_alloc() on the other hand should > > have the destroy callback set to NULL, if encoder->funcs is set. > > These encoders are removed from the mode_config.encoder_list by the drmm > > cleanup code, before drm_mode_config_cleanup is called. > > > > > I am just wondering if this is intended. > > > Reding the documnetation of drm_encoder_funcs thist matches the > > > documentation but anyway.. > > > > > > With this comment considered, > > > Reviewed-by: Sam Ravnborg <sam@xxxxxxxxxxxx> > > > > Thank you for bringing this up, should we just leave > > drm_mode_config_cleanup() as-is? > > Yup, not having a funcs->destroy there is a bug. Maybe should even warn > about the lack of that in the traditional non-drmm_ encoder init function. Forgot to add: With that Reviewed-by: Daniel Vetter <daniel.vetter@xxxxxxxx> > -Daniel > > > > > regards > > Philipp > > _______________________________________________ > > dri-devel mailing list > > dri-devel@xxxxxxxxxxxxxxxxxxxxx > > https://lists.freedesktop.org/mailman/listinfo/dri-devel > > -- > Daniel Vetter > Software Engineer, Intel Corporation > http://blog.ffwll.ch -- Daniel Vetter Software Engineer, Intel Corporation http://blog.ffwll.ch _______________________________________________ dri-devel mailing list dri-devel@xxxxxxxxxxxxxxxxxxxxx https://lists.freedesktop.org/mailman/listinfo/dri-devel