Commit e5361b4b authored by Hans de Goede's avatar Hans de Goede
Browse files

staging/vboxvideo: Refactor vbox_update_mode_hints



Refactor vbox_update_mode_hints to no longer use the obsolete
drm_modeset_lock_all() and switch it over to drm_connector_list_iter
instead of directly accessing the list using list_for_each_entry.

Acked-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Acked-by: default avatarDaniel Vetter <daniel.vetter@ffwll.ch>
Signed-off-by: default avatarHans de Goede <hdegoede@redhat.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20190304164724.10210-3-hdegoede@redhat.com
parent dcf7000b
Loading
Loading
Loading
Loading
+7 −8
Original line number Diff line number Diff line
@@ -105,6 +105,7 @@ static void validate_or_set_position_hints(struct vbox_private *vbox)
/* Query the host for the most recent video mode hints. */
static void vbox_update_mode_hints(struct vbox_private *vbox)
{
	struct drm_connector_list_iter conn_iter;
	struct drm_device *dev = &vbox->ddev;
	struct drm_connector *connector;
	struct vbox_connector *vbox_conn;
@@ -122,13 +123,10 @@ static void vbox_update_mode_hints(struct vbox_private *vbox)
	}

	validate_or_set_position_hints(vbox);
	drm_modeset_lock_all(dev);
	/*
	 * FIXME: this needs to use drm_connector_list_iter and some real
	 * locking for the actual data it changes, not the deprecated
	 * drm_modeset_lock_all() shotgun approach.
	 */
	list_for_each_entry(connector, &dev->mode_config.connector_list, head) {

	drm_modeset_lock(&dev->mode_config.connection_mutex, NULL);
	drm_connector_list_iter_begin(dev, &conn_iter);
	drm_for_each_connector_iter(connector, &conn_iter) {
		vbox_conn = to_vbox_connector(connector);

		hints = &vbox->last_mode_hints[vbox_conn->vbox_crtc->crtc_id];
@@ -157,7 +155,8 @@ static void vbox_update_mode_hints(struct vbox_private *vbox)

		vbox_conn->vbox_crtc->disconnected = disconnected;
	}
	drm_modeset_unlock_all(dev);
	drm_connector_list_iter_end(&conn_iter);
	drm_modeset_unlock(&dev->mode_config.connection_mutex);
}

static void vbox_hotplug_worker(struct work_struct *work)