diff options
Diffstat (limited to 'drivers/gpu/drm/drm_mode_object.c')
| -rw-r--r-- | drivers/gpu/drm/drm_mode_object.c | 14 | 
1 files changed, 14 insertions, 0 deletions
diff --git a/drivers/gpu/drm/drm_mode_object.c b/drivers/gpu/drm/drm_mode_object.c index 6a23e36ed4fe..35c2719407a8 100644 --- a/drivers/gpu/drm/drm_mode_object.c +++ b/drivers/gpu/drm/drm_mode_object.c @@ -224,12 +224,26 @@ EXPORT_SYMBOL(drm_mode_object_get);   * This attaches the given property to the modeset object with the given initial   * value. Currently this function cannot fail since the properties are stored in   * a statically sized array. + * + * Note that all properties must be attached before the object itself is + * registered and accessible from userspace.   */  void drm_object_attach_property(struct drm_mode_object *obj,  				struct drm_property *property,  				uint64_t init_val)  {  	int count = obj->properties->count; +	struct drm_device *dev = property->dev; + + +	if (obj->type == DRM_MODE_OBJECT_CONNECTOR) { +		struct drm_connector *connector = obj_to_connector(obj); + +		WARN_ON(!dev->driver->load && +			connector->registration_state == DRM_CONNECTOR_REGISTERED); +	} else { +		WARN_ON(!dev->driver->load && dev->registered); +	}  	if (count == DRM_OBJECT_MAX_PROPERTY) {  		WARN(1, "Failed to attach object property (type: 0x%x). Please "  |