On Wed, Nov 30, 2016 at 09:36:33AM +0100, Daniel Vetter wrote:
On Tue, Nov 29, 2016 at 11:30:33PM -0800, Manasi Navare wrote:
+static void intel_dp_modeset_retry_work_fn(struct work_struct *work) +{
- struct intel_connector *intel_connector;
- struct drm_connector *connector;
- struct drm_display_mode *mode;
- bool verbose_prune = true;
- intel_connector = container_of(work, typeof(*intel_connector),
modeset_retry_work);
- connector = &intel_connector->base;
- DRM_DEBUG_KMS("[CONNECTOR:%d:%s]\n", connector->base.id,
connector->name);
- /* Grab the locks before changing connector property*/
- mutex_lock(&connector->dev->mode_config.mutex);
- /* Set connector link status to BAD and send a Uevent to notify
* userspace to do a modeset.
*/
- drm_mode_connector_set_link_status_property(connector,
DRM_MODE_LINK_STATUS_BAD);
- list_for_each_entry(mode, &connector->modes, head) {
mode->status = intel_dp_mode_valid(connector,
mode);
- }
- drm_mode_prune_invalid(connector->dev, &connector->modes,
verbose_prune);
This call to drm_mode_prune_invalid is probably just to paper over a bug in SNA - SNA violates the hotplug handling uabi by not unconditionally reprobing. Inconsistently paper over that bug in the kernel is not good, userspace interfaces need to be well defined. Please remove this call and test with either UXA or -modesetting until SNA is fixed.
Then you should also categorically state that (once again) misusing the HOTPLUG uevent for notification of a property update is wrong. -Chris