On Tue, 2019-08-20 at 19:16 +0300, Ville Syrjala wrote: > From: Ville Syrjälä <ville.syrjala@xxxxxxxxxxxxxxx> > > We're not allowed to create new properties after device registration > so for MST connectors we need to either create the max_bpc property > earlier, or we reuse one we already have. Let's do the latter > apporach > since the corresponding SST connector already has the prop and its > min/max are correct also for the MST connector. > > The problem was highlighted by commit 4f5368b5541a ("drm/kms: > Catch mode_object lifetime errors") which results in the following > spew: > [ 1330.878941] WARNING: CPU: 2 PID: 1554 at > drivers/gpu/drm/drm_mode_object.c:45 __drm_mode_object_add+0xa0/0xb0 > [drm] > ... > [ 1330.879008] Call Trace: > [ 1330.879023] drm_property_create+0xba/0x180 [drm] > [ 1330.879036] drm_property_create_range+0x15/0x30 [drm] > [ 1330.879048] drm_connector_attach_max_bpc_property+0x62/0x80 [drm] > [ 1330.879086] intel_dp_add_mst_connector+0x11f/0x140 [i915] > [ 1330.879094] drm_dp_add_port.isra.20+0x20b/0x440 [drm_kms_helper] > ... > > Cc: stable@xxxxxxxxxxxxxxx > Cc: Lyude Paul <lyude@xxxxxxxxxx> > Cc: sunpeng.li@xxxxxxx > Cc: Daniel Vetter <daniel.vetter@xxxxxxxx> > Cc: Sean Paul <sean@xxxxxxxxxx> > Fixes: 5ca0ef8a56b8 ("drm/i915: Add max_bpc property for DP MST") > Signed-off-by: Ville Syrjälä <ville.syrjala@xxxxxxxxxxxxxxx> > --- > drivers/gpu/drm/i915/display/intel_dp_mst.c | 10 +++++++++- > 1 file changed, 9 insertions(+), 1 deletion(-) > > diff --git a/drivers/gpu/drm/i915/display/intel_dp_mst.c > b/drivers/gpu/drm/i915/display/intel_dp_mst.c > index 83faa246e361..9748581c1d62 100644 > --- a/drivers/gpu/drm/i915/display/intel_dp_mst.c > +++ b/drivers/gpu/drm/i915/display/intel_dp_mst.c > @@ -536,7 +536,15 @@ static struct drm_connector > *intel_dp_add_mst_connector(struct drm_dp_mst_topolo > > intel_attach_force_audio_property(connector); > intel_attach_broadcast_rgb_property(connector); > - drm_connector_attach_max_bpc_property(connector, 6, 12); > + > + /* > + * Reuse the prop from the SST connector because we're > + * not allowed to create new props after device registration. > + */ > + connector->max_bpc_property = > + intel_dp->attached_connector->base.max_bpc_property; > + if (connector->max_bpc_property) > + drm_connector_attach_max_bpc_property(connector, 6, > 12); I was looking to the same issue and thinking if do something similar to intel_attach_force_audio_property()/intel_attach_broadcast_rgb_propert( ) would be the right approach but this looks even better. Reviewed-by: José Roberto de Souza <jose.souza@xxxxxxxxx> > > return connector; >