[Intel-gfx] [PATCH] drm/i915: Allow user modes to exceed DVI 165MHz limit

Ville Syrjälä ville.syrjala at linux.intel.com
Thu Mar 27 12:03:31 CET 2014


On Thu, Mar 27, 2014 at 09:37:36AM +0000, Chris Wilson wrote:
> On Thu, Mar 27, 2014 at 11:08:45AM +0200, ville.syrjala at linux.intel.com wrote:
> > So relax the checks a bit, and apply the single-link DVI dotclock limit
> > only when filtering the mode list, and ignore the limit when setting
> > a user specified mode.
> 
> Mind enlightening me as to how this actually works? I thought all
> display modes were validated before we used them, so how come this
> sneaks through?
> 
> So it goes like this:
> 
> userspace calls GETCONNECTOR
> kernel: fill_modes -> drm_helper_probe_single_connector_modes -> mode_valid?
> 
> but
> 
> userspace calls SETCRTC with a random mode
> kernel: applies random mode without validation
> 
> Seriously we don't do any checking that the mode given to SETCRTC is
> applicable and not in any way harmful before setting registers?

Pretty much. Calling our user mode validation even "minimal" is a bit
of a stretch. And the checks we have in the .mode_valid() hooks are
lacking as well.

As far as this particular patch goes, we do check the port clock in the
hdmi compute_config hook, so I had to relax it a bit to ignore the single
link DVI limit there, and instead just check it against the hardware
specific limit from BSpec. I think that's a reasonable thing to do. If
we wanted to protect the user (or the equipment in case of CRTs) more,
we should probably check things against the EDID min/max scan rates and
max clock.

-- 
Ville Syrjälä
Intel OTC



More information about the Intel-gfx mailing list