Bug 5832

Summary: 6.9.0 regression: r128 on laptop now ignores modeline settings for external display, and picks LCD settings
Product: xorg Reporter: Tim Connors <tim.w.connors>
Component: Driver/rage128Assignee: Xorg Project Team <xorg-team>
Status: RESOLVED FIXED QA Contact: Xorg Project Team <xorg-team>
Severity: normal    
Priority: high CC: alexdeucher, erik.andren
Version: 6.9.0Keywords: regression
Hardware: x86 (IA32)   
OS: Linux (All)   
URL: http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=348873
Whiteboard:
i915 platform: i915 features:
Attachments:
Description Flags
Log file showing modeline which are ignored despite being valid none

Description Tim Connors 2006-02-07 12:11:38 UTC
My laptop uses the r128 driver (the card is a Rage Mobility M3 with 8MB memory),
and up until 6.8.2, I could specify the external display to use a modeline with
1280-1024 @ something like 70Hz.  Since 6.9, Xorg has been ignoring my
modelines, chosing to support only the resolution the LCD supports.

In the log file in the attached URL, note the IBM_mode_? modelines.  This is my
external fixed frequency monitor, with modelines I used to be able to use.  In
the logfile, we get repeated occurences of 
(II) R128(0): Not using mode "IBM_mode_1" (no mode of this name)
(II) R128(0): Not using mode "IBM_mode_2" (no mode of this name)
(II) R128(0): Not using mode "IBM_mode_3" (no mode of this name)

We also see suspicious lines like:
(II) R128(0): Modifying mode according to VBIOS: 1024x768 [pclk 83.9 MHz] for FP
to: 1024x768 [pclk 65.0 MHz]

Since I asked for it not to display on the internal LCD, but on the external
display, it ought to ignore the settings of the LCD and pick my modelines
instead of discarding them.
Comment 1 Alex Deucher 2006-03-09 02:40:43 UTC
Can you attach your log and config?
Comment 2 Tim Connors 2006-04-14 12:46:42 UTC
Created attachment 5306 [details]
Log file showing modeline which are ignored despite being valid

As I mentioned originally, the attached URL showed the config and logfile:

http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=348873

I just tried again with an updated X -- config file hasn't changed, new logfile
is attached here.
Comment 3 Erik Andren 2006-04-19 16:38:54 UTC
Added regression keyword
Comment 4 Daniel Stone 2007-02-27 01:30:22 UTC
Sorry about the phenomenal bug spam, guys.  Adding xorg-team@ to the QA contact so bugs don't get lost in future.
Comment 5 ZJ Laczik 2007-07-08 07:59:22 UTC
I am having the same problem: my Dell laptop with a 1600x1200
flat panel screen would not drive an external monitor because
it picks frequencies for the flat panel screen, which are too
high for the external monitor. As it does this it ignores the
explicit modelines I specify for the external monitor.

I am using Mandriva 2007.1 with 'X Window System Version 7.2.0'
(from Mandriva RPM packages x11-server-xorg-1.2.0-9.2mdv2007.1,  
x11-driver-video-ati-6.6.3-1mdv2007.1 and a few more), and
kernel 2.6.17-13mdv. With previous setups I did not have this
problem; unfortunately I don't know at what point the bug appeared.

In /var/log/Xorg.0.log I have lines saying e.g. 
> (II) R128(0): Not using driver mode "1440x900" (no mode of this name)
Also, I get lines like
> Modifying mode according to VBIOS: 1400x1050 [pclk 122.0 MHz] for FP to: 1400x1050 [pclk 160.0 MHz]
which seems to be an indication that this might be a video BIOS
interaction problem... Is there any way to tell the r128 driver
to override/ignore the video BIOS information? This VBIOS override
happens even for the 'standard' modes, like 1280x1024@75Hz, let
alone the 1440x900 I am really after...
Comment 6 Tim Connors 2007-07-15 09:09:49 UTC
ZJ Laczik has discovered that a simple change to src/r128_driver.c:R128ValidMode() to return MODE_OK unconditionally is enough to make the external display work for the both of us.

This tells us that info->DisplayType == MT_LCD.  I don't know whether this is being set in R128GetBIOSParameters(), but if so, then obviously info->HasPanelRegs is true.  Judging from the comment above that, the author of this code is not convinced this is the right detection logic to use, and quite clearly, it is invalid on a laptop which has panel registers, but is being asked not to use them when one of 
Option "nopanel_display" "true"
Option "Display" "CRT"
etc are used.

Can we just go back to the detection logic that was in xorg prior to 6.9?  It worked well enough then.  Or maybe query whether such a CRT option has been provided (it is unclear in the docs which one to use -- Option "Display" "CRT" worked for me prior to 6.9 if I understand my xorg.conf CVS history properly)
Comment 7 Alex Deucher 2007-07-16 09:02:00 UTC
The code was changed to support dualhead.  I'll see if I can fix it up at some point this week.
Comment 8 Alex Deucher 2007-07-19 16:02:53 UTC
fixed:
18b00b47a483e7854727e99126808ddf361e7a4a

please reopen if you are still having problems.

Use of freedesktop.org services, including Bugzilla, is subject to our Code of Conduct. How we collect and use information is described in our Privacy Policy.