Thread (4 messages) 4 messages, 3 authors, 2008-01-16

Re: [Bugme-new] [Bug 9762] New: radeonfb and Xpress 200m 5955

From: Andrew Morton <akpm@linux-foundation.org>
Date: 2008-01-16 19:12:58

On Wed, 16 Jan 2008 16:23:22 +0100 (CET) Geert Uytterhoeven [off-list ref] wrote:
On Wed, 16 Jan 2008, Andrew Morton wrote:
quoted
On Wed, 16 Jan 2008 01:33:25 -0800 (PST) bugme-daemon@bugzilla.kernel.org wrote:
quoted
http://bugzilla.kernel.org/show_bug.cgi?id=9762

           Summary: radeonfb and Xpress 200m 5955
           Product: Drivers
           Version: 2.5
     KernelVersion: >=2.6.23
          Platform: All
        OS/Version: Linux
              Tree: Mainline
            Status: NEW
          Severity: normal
          Priority: P1
         Component: Console/Framebuffers
        AssignedTo: jsimmons@infradead.org
        ReportedBy: alevkovich@tut.by


Latest working kernel version: 2.6.23
Earliest failing kernel version: any
Distribution: gentoo
Hardware Environment: Radeon XPress 200m 5955
Software Environment: 
Problem Description: framebuffer is ok only with default parameters only (it is
1280x800-8@60). If parameters are video=radeonfb:1280x800-32@60 then xres, yres
and xres_virtual are ok but yres_virtual is 1024. It can be corrected by fbset
utility so I think it can be corrected in the driver code also.

Steps to reproduce: video=radeonfb:1280x800-32@60 or
video=radeonfb:1280x800-16@60
damn, another post-2.6.2 regression.

Does anyone know whether this is likely to be a radeonfb problem or an
fbdev core problem?
Perhaps

commit 1c5dd170927b1aa8e3a01d43d611b840336cdaf2
Author: Michal Januszewski [off-list ref]
Date:   Tue Oct 16 01:29:19 2007 -0700

    fbdev: find mode with the highest/safest refresh rate in fb_find_mode()
    
    Currently, if the refresh rate is not specified, fb_find_mode() returns the
    first known video mode with the requested resolution, which provides no
    guarantees wrt the refresh rate.  Change this so that the mode with the
    highest refresh rate is returned when the driver provides a custom video mod
e
    database and the monitor limits, and a mode with the safe 60 Hz refresh rate
    otherwise.
Thanks.
M. alevkovich, can you please try to back out that change?
Here's a patch against 2.6.24-rc8 which performs that reversion:
--- a/drivers/video/modedb.c~revert-1
+++ a/drivers/video/modedb.c
@@ -608,43 +608,26 @@ done:
 	DPRINTK("Trying specified video mode%s %ix%i\n",
 	    refresh_specified ? "" : " (ignoring refresh rate)", xres, yres);
 
-	if (!refresh_specified) {
-		/*
-		 * If the caller has provided a custom mode database and a
-		 * valid monspecs structure, we look for the mode with the
-		 * highest refresh rate.  Otherwise we play it safe it and
-		 * try to find a mode with a refresh rate closest to the
-		 * standard 60 Hz.
-		 */
-		if (db != modedb &&
-		    info->monspecs.vfmin && info->monspecs.vfmax &&
-		    info->monspecs.hfmin && info->monspecs.hfmax &&
-		    info->monspecs.dclkmax) {
-			refresh = 1000;
-		} else {
-			refresh = 60;
-		}
-	}
-
-	diff = -1;
+	diff = refresh;
 	best = -1;
 	for (i = 0; i < dbsize; i++) {
-		if ((name_matches(db[i], name, namelen) ||
-		    (res_specified && res_matches(db[i], xres, yres))) &&
-		    !fb_try_mode(var, info, &db[i], bpp)) {
-			if (refresh_specified && db[i].refresh == refresh) {
-				return 1;
-			} else {
-				if (abs(db[i].refresh - refresh) < diff) {
-					diff = abs(db[i].refresh - refresh);
-					best = i;
+		if (name_matches(db[i], name, namelen) ||
+		    (res_specified && res_matches(db[i], xres, yres))) {
+			if(!fb_try_mode(var, info, &db[i], bpp)) {
+				if(!refresh_specified || db[i].refresh == refresh)
+					return 1;
+				else {
+					if(diff > abs(db[i].refresh - refresh)) {
+						diff = abs(db[i].refresh - refresh);
+						best = i;
+					}
 				}
 			}
 		}
 	}
 	if (best != -1) {
 		fb_try_mode(var, info, &db[best], bpp);
-		return (refresh_specified) ? 2 : 1;
+		return 2;
 	}
 
 	diff = xres + yres;
_


-------------------------------------------------------------------------
This SF.net email is sponsored by: Microsoft
Defy all challenges. Microsoft(R) Visual Studio 2008.
http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help