mirror of
git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2025-09-18 22:14:16 +00:00
drm/connector: Add FIXME for GETRESOURCES ioctl wrt. uninited connectors
The connectors enumerated by the GETRESOURCES ioctl may not be fully initialized yet wrt. to the state set up during connector registration (for instance the connector's debugfs/sysfs interfaces may not exist yet). This can happen in two ways: 1. Connectors initialized and added to the drm_mode_config::connector_list during driver loading will be visible to the GETRESOURCES ioctl caller once the driver is registered via drm_dev_register()->drm_minor_register(DRM_MINOR_PRIMARY) and before the connectors are registered via drm_dev_register()-> drm_modeset_register_all(). 2. Dynamic connectors (MST) - after being initialized - may be added to the connector_list after the driver is loaded and registered and before the connector's userspace interfaces (debugfs, sysfs etc.) are added in drm_connector_dynamic_register(). A solution for 1. would be to register the driver only after the connectors are registered, for 2. to add the connector to connector_list only after the userspace interfaces are registered. The fix requires a bigger change, for now adding a FIXME: comment for it. v2: Remove references to the patchset from the commit log. (Jani) Suggested-by: Simona Vetter <simona.vetter@ffwll.ch> Reviewed-by: Lyude Paul <lyude@redhat.com> Reviewed-by: Jani Nikula <jani.nikula@intel.com> Acked-by: Alex Deucher <alexander.deucher@amd.com> Acked-by: Wayne Lin <Wayne.Lin@amd.com> Signed-off-by: Imre Deak <imre.deak@intel.com> Link: https://patchwork.freedesktop.org/patch/msgid/20241211230328.4012496-3-imre.deak@intel.com
This commit is contained in:
parent
1d985ddabb
commit
2f17099ab9
1 changed files with 9 additions and 0 deletions
|
@ -150,6 +150,15 @@ int drm_mode_getresources(struct drm_device *dev, void *data,
|
|||
drm_connector_list_iter_begin(dev, &conn_iter);
|
||||
count = 0;
|
||||
connector_id = u64_to_user_ptr(card_res->connector_id_ptr);
|
||||
/*
|
||||
* FIXME: the connectors on the list may not be fully initialized yet,
|
||||
* if the ioctl is called before the connectors are registered. (See
|
||||
* drm_dev_register()->drm_modeset_register_all() for static and
|
||||
* drm_connector_dynamic_register() for dynamic connectors.)
|
||||
* The driver should only get registered after static connectors are
|
||||
* fully initialized and dynamic connectors should be added to the
|
||||
* connector list only after fully initializing them.
|
||||
*/
|
||||
drm_for_each_connector_iter(connector, &conn_iter) {
|
||||
/* only expose writeback connectors if userspace understands them */
|
||||
if (!file_priv->writeback_connectors &&
|
||||
|
|
Loading…
Add table
Reference in a new issue