The final result of my bisect is actually what I guessed in the previous comment (see output below). The patch (also below) is simple and one can easily see that undoing it would solve the problem.
It seems that some monitors (including my monitor) report that they are non-continuous frequency but in reality they are. The simplest way to fix this bug is simply to undo the patch to support such buggy monitors, the correct fix would be an exception list with the monitors which support resolutions which they do not report.
There should perhaps be a possibility to override this manually by a run-time configuration bit so that for all monitors the non-reported resolutions get listed.
till@till-twist:~/kernel/linux-stable$ git bisect good
740922ee575f8ee4daa2bfd3db5f69dd7573fc76 is the first bad commit
commit 740922ee575f8ee4daa2bfd3db5f69dd7573fc76
Author: Paulo Zanoni <email address hidden>
Date: Fri Feb 15 13:36:27 2013 -0200
drm: don't add inferred modes for monitors that don't support them
If bit 0 of the features byte (0x18) is set to 0, then, according to
the EDID spec, "the display is non-continuous frequency (multi-mode)
and is only specified to accept the video timing formats that are
listed in Base EDID and certain Extension Blocks".
For more information, please see the EDID spec, check the notes of the
table that explains the "Feature Support" byte (18h) and also the
notes on the tables of the section that explains "Display Range Limits
& Additional Timing Description Definition (tag #FDh)".
Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=45729
Reviewed-by: Alex Deucher <email address hidden>
Reviewed-by: Adam Jackson <email address hidden>
Signed-off-by: Paulo Zanoni <email address hidden>
Signed-off-by: Dave Airlie <email address hidden>
Signed-off-by: Greg Kroah-Hartman <email address hidden>
:040000 040000 26e271499e4ff7746011a296e569a985126aeb3f d43c54ed20f43a1459c6adb7d922ee2be55c9317 M drivers
till@till-twist:~/kernel/linux-stable$
The final result of my bisect is actually what I guessed in the previous comment (see output below). The patch (also below) is simple and one can easily see that undoing it would solve the problem.
It seems that some monitors (including my monitor) report that they are non-continuous frequency but in reality they are. The simplest way to fix this bug is simply to undo the patch to support such buggy monitors, the correct fix would be an exception list with the monitors which support resolutions which they do not report.
There should perhaps be a possibility to override this manually by a run-time configuration bit so that for all monitors the non-reported resolutions get listed.
till@till- twist:~ /kernel/ linux-stable$ git bisect good 4daa2bfd3db5f69 dd7573fc76 is the first bad commit 4daa2bfd3db5f69 dd7573fc76
740922ee575f8ee
commit 740922ee575f8ee
Author: Paulo Zanoni <email address hidden>
Date: Fri Feb 15 13:36:27 2013 -0200
drm: don't add inferred modes for monitors that don't support them
commit 196e077dc165a30 7efbd9e7569f81b bdbcf18f65 upstream.
If bit 0 of the features byte (0x18) is set to 0, then, according to
the EDID spec, "the display is non-continuous frequency (multi-mode)
and is only specified to accept the video timing formats that are
listed in Base EDID and certain Extension Blocks".
For more information, please see the EDID spec, check the notes of the
table that explains the "Feature Support" byte (18h) and also the
notes on the tables of the section that explains "Display Range Limits
& Additional Timing Description Definition (tag #FDh)".
Bugzilla: https:/ /bugs.freedeskt op.org/ show_bug. cgi?id= 45729
Reviewed-by: Alex Deucher <email address hidden>
Reviewed-by: Adam Jackson <email address hidden>
Signed-off-by: Paulo Zanoni <email address hidden>
Signed-off-by: Dave Airlie <email address hidden>
Signed-off-by: Greg Kroah-Hartman <email address hidden>
:040000 040000 26e271499e4ff77 46011a296e569a9 85126aeb3f d43c54ed20f43a1 459c6adb7d922ee 2be55c9317 M drivers twist:~ /kernel/ linux-stable$
till@till-
Here is the patch:
till@till: ~/ubuntu/ linux/linux- stable$ git diff -r 740922e~..740922e gpu/drm/ drm_edid. c b/drivers/ gpu/drm/ drm_edid. c gpu/drm/ drm_edid. c gpu/drm/ drm_edid. c edid_modes( struct drm_connector *connector, st modes(connector , edid); modes(connector , edid); _modes( connector, edid); modes(connector , edid); FEATURE_ DEFAULT_ GTF) modes(connector , edid); modes(connector , edid);
diff --git a/drivers/
index 5a3770f..584d5fd 100644
--- a/drivers/
+++ b/drivers/
@@ -2020,7 +2020,8 @@ int drm_add_
num_modes += add_cvt_
num_modes += add_standard_
num_modes += add_established
- num_modes += add_inferred_
+ if (edid->features & DRM_EDID_
+ num_modes += add_inferred_
num_modes += add_cea_
if (quirks & (EDID_QUIRK_ PREFER_ LARGE_60 | EDID_QUIRK_ PREFER_ LARGE_75) ) ~/ubuntu/ linux/linux- stable$
till@till: