[Intel-gfx] [PATCH] drm/i915: Add a bit of locking to intel_dp_hpd_pulse()

Dave Airlie airlied at gmail.com
Thu Jul 31 01:49:04 CEST 2014


>
> ->hpd_pulse() is called from a workqueue via an interrupt so it happens
> asynchronously with modesets. Grab the connection_mutex in
> intel_dp_hpd_pulse() to avoid disturbing on angoing modeset with
> parallel hpd processing.

Nope, not right, we need to lock just not that amount of stuff, since MST
won't work anymore, since it relies on hpd irqs while other threads are
holding the locks to talk to the remote devices. I also think we shouldn't be
locking the the irq processing in intel_dp_check_link_status.

> On my IVB turning off the port during a modeset could result in a
> hpd which would then proceed to link train while the modeset was
> still happening. Suffice to say that didn't go so well.

Does this not point to an ordering issue somewhere, we've turned off the port,
but the device thinks the link should be trained but it currently isn't? maybe
intel_dp_check_link_status needs to be smarter about something
but we should be able to process the irqs fine without locking the modesetting
locks. Or maybe we need to know that we don't want the link trained so don't
retrain when the remote device signals a link status problem.

Daniel, the only way intel_dp->is_mst can get reset is inside this path.

Dave.



More information about the Intel-gfx mailing list