Hi Leo,

Thanks for reviewing this

On Mon, Oct 19, 2026 at 12:38:47PM -0400, Leo Li wrote:
> > @@ -736,11 +736,11 @@ dm_dp_add_mst_connector(struct 
> > drm_dp_mst_topology_mgr *mgr,
> >  
> >     /*
> >      * Initialize connector state before adding the connectror to drm and
> >      * framebuffer lists
> >      */
> > -   amdgpu_dm_connector_funcs_reset(connector);
> 
> I'm actually not sure why there was a state reset here.
> amdgpu_dm_connector_init_helper() is called earlier in this func and
> that already did a reset.

Yeah, it's something sashiko flagged too and I removed that call (and
updated the comment).

> > +   connector->state = amdgpu_dm_connector_atomic_create_state(connector);
> 
> That asside, looks like this can overwrite the alloc'd state from
> init_helper() without freeing. So to keep the previous behavior and
> avoid regressing, perhaps we can do this:
> 
>       conn_state = amdgpu_dm_connector_atomic_create_state(connector);
>       if (!IS_ERR(conn_state)) {
>               if (connector->state)
>                       connector->funcs->atomic_destroy_state(connector, 
> connector->state);
>               connector->state = conn_state;
>       }

If we are to handle errors properly and remain equivalent, then
something like the following would be more accurate I guess?

if (connector->state) {
    connector->funcs->atomic_destroy_state(connector, connector->state);
    connector->state = NULL;
}

conn_state = amdgpu_dm_connector_atomic_create_state(connector);
if (IS_ERR(conn_state))
    return NULL;

connector->state = conn_state;

Would you prefer that, or should I remove the call to create_state
entirely because it's redundant?

> >     /*
> >      * Some of the properties below require access to state, like bpc.
> >      * Allocate some default initial connector state with our reset helper.
> >      */
> > -   if (wbcon->base.base.funcs->reset)
> > -           wbcon->base.base.funcs->reset(&wbcon->base.base);
> > +   if (!wbcon->base.base.state &&
> > +       wbcon->base.base.funcs->atomic_create_state) {
> > +           struct drm_connector_state *conn_state;
> > +
> > +           conn_state = 
> > amdgpu_dm_connector_atomic_create_state(&wbcon->base.base);
> 
> Nit: functionally the same, but would
> `wbcon->base.base.funcs->atomic_create_state(&wbcon->base.base);` be
> clearer?

Totally, I'll fix it
Thanks!
Maxime

Attachment: signature.asc
Description: PGP signature

Reply via email to