Hi all,

I think i have found the root cause of all the problems

In dfb_fbdev_set_mode called from primaryInitLayer (fbdev.c1108) as

Listing from fdbdev.c : 1102

     tmp.format     = DSPF_RGB16;
     tmp.buffermode = DLBM_FRONTONLY;
     tmp.source.x   = 0;
     tmp.source.y   = 0;
     tmp.source.w   = config->width;
     tmp.source.h   = config->height;
     if (dfb_fbdev_set_mode( NULL, NULL, &tmp ))

NOTE: config->width & height have been setup in tmp.source.w & tmp.source.h

But the code inside dfb_fbdev_set_mode  (Line fbdev.c:1647)

          vxres = config->width;
          vyres = config->height;

          var.xoffset = source->x;
          var.yoffset = source->y;

uses config->width & height for vxres & vyres !

Please note that "config", which is "tmp" in the caller has width & height
uninitialized.
But only tmp.source.w & h initialized.

This was the reason for the huge vxres & vyres values, which led to the
KERNEL PANIC
It was also the reason for the SurfaceCreate failure

I donot know what is the right way to call this API...but changing the lines
to this fixes the issues

         vxres = source->w;
         vyres = source->h;

i have attached a patch for tracking the exact change.
Please accept the patch in case if required.



On Wed, Mar 5, 2008 at 10:18 PM, Sriram Neelakandan <
[EMAIL PROTECTED]> wrote:

> Hi all,
>
> I have some issues with  i810 gfxdriver on  DirectFB-1.1.1.
>
> The mail is long .. please bare with me .. i have sequenced out as much
> info as possible to aid in debugging !
>
> I had the following issues:
>
> 1. I did not know the primary fb for the i810 is some how /dev/fb1 .. that
> took some time for me to figure out.
>
> [EMAIL PROTECTED] directfb]# *dmesg | grep -i i810*
> agpgart: Detected an Intel i810 Chipset.
> i810-i2c: Probe DDC1 Bus
> i810fb_init_pci: DDC probe successful
> fbcon: I810 (fb1) is primary device
> I810FB: fb1         : Intel(R) 810-DC100 Framebuffer Device v0.9.0
> I810FB: Video RAM   : 4096K
> I810FB: Monitor     : H: 30-71 KHz V: 50-160 Hz
> I810FB: Mode        : [EMAIL PROTECTED]
>
> so i added in  directfbrc - fbdev=/dev/fb1
>
>
> 2. After that i do* fbset -fb /dev/fb1 *
> mode "1024x768-84"
>     # D: 94.500 MHz, H: 68.677 kHz, V: 84.997 Hz
>     geometry 1024 768 1024 768 8
>     timings 10582 208 48 36 1 96 3
>     hsync high
>     vsync high
>     rgba 8/0,8/0,8/0,8/0
> endmode
>
> See the offsets are all ZEROs !!
>
> 3. So i manually set up the fb using
>
> *fbset -fb /dev/fb1 -xres 800 -yres 600 -depth 16 -rgba 5,6,5,0
>
> *after that
>
> * fbset -fb /dev/fb1 *
> mode "800x600-85"
>     # D: 56.303 MHz, H: 53.724 kHz, V: 85.142 Hz
>     geometry 800 600 800 600 16
>     timings 17761 152 32 27 1 64 3
>     hsync high
>     vsync high
>     rgba 5/11,6/5,5/0,0/0
> endmode
>
> i *pasted* this to the beginning of * /etc/fb.modes*
>
> 4. i run dfbinfo .. *kernel panic in EIP : i810fb_check_var*
>
> Reason ... fbdev.c : 1835 .. call to FBIOPUT_VSCREENINFO with huge values
> of Virtual RES
>
> (gdb) p var
> $9 = {xres = 1024, yres = 768, xres_virtual = 3214385416, yres_virtual =
> 13357344, xoffset = 0,
>   yoffset = 0, bits_per_pixel = 16, grayscale = 0, red = {offset = 11,
> length = 5,
>     msb_right = 0}, green = {offset = 5, length = 6, msb_right = 0}, blue
> = {offset = 0,
>     length = 5, msb_right = 0}, transp = {offset = 0, length = 0,
> msb_right = 0}, nonstd = 0,
>   activate = 2, height = 0, width = 0, accel_flags = 0, pixclock = 10582,
> left_margin = 208,
>   right_margin = 48, upper_margin = 36, lower_margin = 1, hsync_len = 96,
> vsync_len = 3,
>   sync = 3, vmode = 0, rotate = 0, reserved = {0, 0, 0, 0, 0}}
>
>
> So i changed  fbdev.c:1801, fbdev.c:1802
>
>    var.xres_virtual = mode->xres*3; //vxres; SRIRAM FIX
>    var.yres_virtual = mode->yres*3; //vyres; SRIRAM FIX
>    printf("\tSRIRAM FIX:(%d,%d,%d,%d)\n", var.xres, var.yres,
> var.xres_virtual, var.yres_virtual);
>
>
> No Kernel PANIC ...  Issue fixed
>
> 5. Now i do dfbinfo i get this !!
>
> [EMAIL PROTECTED] directfb]# dfbinfo
>
>      =======================|  DirectFB 1.1.1  |=======================
>           (c) 2001-2007  The DirectFB Organization (directfb.org)
>           (c) 2000-2004  Convergence (integrated media) GmbH
>         ------------------------------------------------------------
>
> (*) DirectFB/Core: Single Application Core. (2008-03-05 15:29)
> (*) Direct/Thread: Running 'VT Switcher' (CRITICAL, 17887)...
> (*) Direct/Thread: Running 'Keyboard Input' (INPUT, 17888)...
> (*) DirectFB/Input: Keyboard 0.9 (directfb.org)
> (*) Direct/Thread: Running 'PS/2 Input' (INPUT, 17889)...
> (*) DirectFB/Input: IMPS/2 Mouse 1.0 (directfb.org)
> (*) Direct/Thread: Running 'Linux Input' (INPUT, 17890)...
> (*) DirectFB/Input: Macintosh mouse button emulatio (1) 0.1 (directfb.org)
> (*) Direct/Thread: Running 'Linux Input' (INPUT, 17891)...
> (*) DirectFB/Input: AT Translated Set 2 keyboard (2) 0.1 (directfb.org)
> (*) Direct/Thread: Running 'Linux Input' (INPUT, 17892)...
> (*) DirectFB/Input: ImPS/2 Logitech Wheel Mouse (3) 0.1 (directfb.org)
> (*) Direct/Thread: Running 'Linux Input' (INPUT, 17893)...
> (*) DirectFB/Input: Power Button (FF) (4) 0.1 (directfb.org)
> (*) Direct/Thread: Running 'Linux Input' (INPUT, 17894)...
> (*) DirectFB/Input: Power Button (CM) (5) 0.1 (directfb.org)
> (*) DirectFB/Genefx: MMX detected and enabled
> (*) DirectFB/Graphics: Intel 810/810E/810-DC100/815 0.5 (Tony Daplas)
>         SRIRAM FIX:(800,600,2400,1800)
>         SRIRAM FIX:(1024,768,3072,2304)
>         SRIRAM FIX:(800,600,2400,1800)
> (*) DirectFB/Core/WM: Default 0.3 (directfb.org)
> (*) FBDev/Mode: Testing 800x600 RGB16
>         SRIRAM FIX:(800,600,2400,1800)
> (!) DirectFB/DirectFBCreate: Setting desktop resolution to 0x0 failed!
>      -> Using default resolution.
> (!) DirectFB/DirectFBCreate: Setting desktop format failed!
>      -> Using default format.
> (!) DirectFB/DirectFBCreate: Setting desktop buffer mode failed!
>      -> No virtual resolution support or not enough memory?
>         Falling back to system back buffer.
> (*) FBDev/Mode: Testing 800x600 RGB16
>         SRIRAM FIX:(800,600,2400,1800)
> (*) FBDev/Mode: Preparing switch to 800x600 RGB16
> (*) FBDev/Mode: Testing 800x600 RGB16
>         SRIRAM FIX:(800,600,2400,1800)
> (*) FBDev/Mode: Preparing switch to 800x600 RGB16
> (*) FBDev/Mode: Testing 800x600 RGB16
>         SRIRAM FIX:(800,600,2400,1800)
> (*) FBDev/Mode: Preparing switch to 800x600 RGB16
> (*) FBDev/Mode: Testing 800x600 RGB16
>         SRIRAM FIX:(800,600,2400,1800)
> (*) FBDev/Mode: Preparing switch to 800x600 RGB16
> (*) FBDev/Mode: Testing 800x600 RGB16
>         SRIRAM FIX:(800,600,2400,1800)
> (*) FBDev/Mode: Preparing switch to 800x600 RGB16
> (*) FBDev/Surface: Allocated 800x600 16bit RGB16 buffer at offset 0 and
> pitch 1600.
> (*) FBDev/Mode: (Post)Setting 800x600 RGB16
>         SRIRAM FIX:(800,600,2400,1800)
> (*) FBDev/Mode: Switched to 800x600 (2400x873) at 16 bit RGB16 (wanted
> RGB16).
> (*) FBDev/Mode: Testing 800x600 RGB16
>         SRIRAM FIX:(800,600,2400,1800)
> (*) FBDev/Mode: Preparing switch to 800x600 RGB16
> (*) FBDev/Mode: (Post)Setting 800x600 RGB16
>
>
> Screen (00) FBDev Primary Screen            (primary screen)
>    Caps: VSYNC POWER_MANAGEMENT
>
>      Layer (00) FBDev Primary Layer             (primary layer)
>         Type:    GRAPHICS
>         Caps:    SURFACE BRIGHTNESS CONTRAST SATURATION
>
>      Layer (01) Intel 810/815 Overlay
>         Type:    GRAPHICS VIDEO STILL_PICTURE
>         Caps:    SURFACE OPACITY SCREEN_LOCATION DEINTERLACING
> DST_COLORKEY BRIGHTNESS CONTRAST SATURATION SCREEN_POSITION SCREEN_SIZE
>
>
> Input (00) Keyboard                        (primary keyboard)
>    Type: KEYBOARD
>    Caps: KEYS
>
> Input (01) IMPS/2 Mouse                    (primary mouse)
>    Type: MOUSE
>    Caps: AXES BUTTONS
>    Max. Axis: 2
>    Max. Button: 2
>
> Input (10) Macintosh mouse button emulatio
>    Type: MOUSE
>    Caps: AXES BUTTONS
>    Max. Axis: 1
>    Max. Button: 2
>
> Input (11) AT Translated Set 2 keyboard
>    Type: KEYBOARD
>    Caps: KEYS
>
> Input (12) ImPS/2 Logitech Wheel Mouse
>    Type: MOUSE
>    Caps: AXES BUTTONS
>    Max. Axis: 2
>    Max. Button: 2
>
> Are these fine ?
> *(!) DirectFB/DirectFBCreate: Setting desktop resolution to 0x0 failed!
>      -> Using default resolution.
> (!) DirectFB/DirectFBCreate: Setting desktop format failed!
>      -> Using default format.
> (!) DirectFB/DirectFBCreate: Setting desktop buffer mode failed!
>      -> No virtual resolution support or not enough memory?
>         Falling back to system back buffer.*
>
>
>
>  DIRECTFBRC --  For reference ---
>
>
>  [EMAIL PROTECTED] directfb]# cat /usr/local/etc/directfbrc
> fbdev=/dev/fb1
> fatal-level=none
>
>
> Whats going wrong here ? HELP PLEASE !!!
>
> --
> Sriram Neelakandan
> Author - Embedded Linux System Design And Development (
> http://tinyurl.com/2doosu)




-- 
Sriram Neelakandan
Author - Embedded Linux System Design And Development (
http://tinyurl.com/2doosu)
*** ../orig/DirectFB-1.1.1/systems/fbdev/fbdev.c        2007-12-15 
18:00:28.000000000 +0530
--- systems/fbdev/fbdev.c       2008-03-06 13:19:41.000000000 +0530
*************** dfb_fbdev_set_mode( CoreSurface         
*** 1642,1649 ****
            if (source->h != mode->yres && shared->fix.ypanstep == 0 && 
shared->fix.ywrapstep == 0)
                 return DFB_UNSUPPORTED;
  
!           vxres = config->width;
!           vyres = config->height;
  
            var.xoffset = source->x;
            var.yoffset = source->y;
--- 1642,1649 ----
            if (source->h != mode->yres && shared->fix.ypanstep == 0 && 
shared->fix.ywrapstep == 0)
                 return DFB_UNSUPPORTED;
  
!           vxres = source->w;
!           vyres = source->h;
  
            var.xoffset = source->x;
            var.yoffset = source->y;
*************** dfb_fbdev_set_mode( CoreSurface         
*** 1800,1805 ****
--- 1800,1806 ----
       var.yres = mode->yres;
       var.xres_virtual = vxres;
       var.yres_virtual = vyres;
+      printf("\tFIX:(%d,%d,%d,%d)\n", var.xres, var.yres, var.xres_virtual, 
var.yres_virtual);
  
       var.pixclock = mode->pixclock;
       var.left_margin = mode->left_margin;
_______________________________________________
directfb-dev mailing list
directfb-dev@directfb.org
http://mail.directfb.org/cgi-bin/mailman/listinfo/directfb-dev

Reply via email to