All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH 1/2] drm/property: Enforce more lifetime rules
@ 2019-10-23 14:49 ` Daniel Vetter
  0 siblings, 0 replies; 26+ messages in thread
From: Daniel Vetter @ 2019-10-23 14:49 UTC (permalink / raw)
  To: DRI Development
  Cc: Daniel Vetter, Intel Graphics Development, Rajat Jain, Daniel Vetter

Properties can't be attached after registering, userspace would get
confused (no one bothers to reprobe really).

- Add kerneldoc
- Enforce this with some checks. This needs a somewhat ugly check
  since connectors can be added later on, but we still need to attach
  all properties before they go public.

Note that we already enforce that properties themselves are created
before the entire device is registered.

Cc: Jani Nikula <jani.nikula@linux.intel.com>
Cc: Rajat Jain <rajatja@google.com>
Signed-off-by: Daniel Vetter <daniel.vetter@intel.com>
---
 drivers/gpu/drm/drm_mode_object.c | 14 ++++++++++++++
 1 file changed, 14 insertions(+)

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 "
-- 
2.23.0

_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel

^ permalink raw reply related	[flat|nested] 26+ messages in thread

end of thread, other threads:[~2019-11-04 16:57 UTC | newest]

Thread overview: 26+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2019-10-23 14:49 [PATCH 1/2] drm/property: Enforce more lifetime rules Daniel Vetter
2019-10-23 14:49 ` [Intel-gfx] " Daniel Vetter
2019-10-23 14:49 ` [PATCH 2/2] drm/todo: Add entry to remove load/unload hooks Daniel Vetter
2019-10-23 14:49   ` [Intel-gfx] " Daniel Vetter
2019-10-23 14:49   ` Daniel Vetter
2019-10-24 10:35   ` [Intel-gfx] " Thierry Reding
2019-10-24 10:35     ` Thierry Reding
2019-11-04 16:57     ` Daniel Vetter
2019-11-04 16:57       ` Daniel Vetter
2019-10-24  0:46 ` ✗ Fi.CI.CHECKPATCH: warning for series starting with [1/2] drm/property: Enforce more lifetime rules Patchwork
2019-10-24  0:46   ` [Intel-gfx] " Patchwork
2019-10-24  1:14 ` ✓ Fi.CI.BAT: success " Patchwork
2019-10-24  1:14   ` [Intel-gfx] " Patchwork
2019-10-24 10:40 ` [PATCH 1/2] " Thierry Reding
2019-10-24 10:40   ` [Intel-gfx] " Thierry Reding
2019-10-24 10:40   ` Thierry Reding
2019-10-24 10:43   ` Thierry Reding
2019-10-24 10:43     ` [Intel-gfx] " Thierry Reding
2019-10-24 10:43     ` Thierry Reding
2019-10-24 11:47     ` Daniel Vetter
2019-10-24 11:47       ` Daniel Vetter
2019-10-24 12:09 ` Jani Nikula
2019-10-24 12:09   ` [Intel-gfx] " Jani Nikula
2019-10-24 12:09   ` Jani Nikula
2019-10-24 22:35 ` ✗ Fi.CI.IGT: failure for series starting with [1/2] " Patchwork
2019-10-24 22:35   ` [Intel-gfx] " Patchwork

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.