[Intel-gfx] Redo a modeset on link training failure

Ville Syrjälä ville.syrjala at linux.intel.com
Fri Oct 21 09:35:44 UTC 2016


On Thu, Oct 20, 2016 at 07:31:53PM -0700, Manasi Navare wrote:
> Hi Ville,
> 
> I have implemented the code that we discussed where if the link training
> fails, it would validate the modes on the new constraints and call
> an atomic helper like drm_atomic_helper_connector_modeset() to redo
> a modeset for the same mode. The two patches for this implemnetation is
> are:
> 
> http://paste.ubuntu.com/23357104/
> http://paste.ubuntu.com/23357105/
> 
> With this I can successfully trigger the modeset and retrain the link
> at lower link rate. But I am getting a warning during intel_audio_codec_enable()
> in intel_enable_ddi() during the commit phase on SKL.
> Following is the dmesg log:
> 
> http://paste.ubuntu.com/23357075/
> 
> After further looking at it, I see that this calls drm_select_eld() function
> that throws a warning if the mode_config mutex and modeset locks are held.

You get the warn when they're *not* held. And checking for the
mode_config.mutex here looks like a bug. We call that during a modeset,
so if we get there through the atomic ioctl as opposed to a legacy
setcrtc we will not be holding the mode_config.mutex.

Walking the connector list with just the connection mutex should be safe
in theory. Although last I looked it was still racy as hell, but as I
said, in theory.

We could probably drop the connector list walk from there entirely since
we should know exactly which connector's eld we want.

> If I remove those WARN_ONs from there, I can get rid of this warning and
> everything works smoothly.
> 
> Do you know if those WARN_ONs are required because these locks would be grabbed
> when we are in modeset.
> 
> Regards
> Manasi

-- 
Ville Syrjälä
Intel OTC


More information about the Intel-gfx mailing list