Good morning!

Here is some additional info. I've tried to step the Xorg in gdb.

The error is first reported by intel driver with message:

(EE) intel(0): No valid modes.

It is written at src/i830_driver.c:1377

   if (!xf86InitialConfiguration (pScrn, FALSE))  <== fails here
   {
      xf86DrvMsg(pScrn->scrnIndex, X_ERROR, "No valid modes.\n");
      RestoreHWState(pScrn);
      PreInitCleanup(pScrn);
      return FALSE;
   }

Tracing shows, that xf86InitialConfiguration function fails and
returns NULL.

hw/xfree86/modes/xf86Crtc.c:1513

Bool
xf86InitialConfiguration (ScrnInfoPtr scrn, Bool canGrow)
{
    ...... // a lot of code skipped
    /*
     * Assign CRTCs to fit output configuration
     */
                             
    if (!xf86PickCrtcs (scrn, crtcs, modes, 0, width, height))    <== fails here
    {
        xfree (crtcs);
        xfree (modes);
        return FALSE;
    }

Function xf86InitialConfiguration fails to assign CRTS. It call function
xf86PickCrtcs and last return FALSE.

hw/xfree86/modes/xf86Crtc.c:787

static int
xf86PickCrtcs (ScrnInfoPtr      scrn,
               xf86CrtcPtr      *best_crtcs,
               DisplayModePtr   *modes,
               int              n,
               int              width,
               int              height)
{
    xf86CrtcConfigPtr   config = XF86_CRTC_CONFIG_PTR(scrn);
    int             c, o;
    xf86OutputPtr   output;
    xf86CrtcPtr     crtc;
    xf86CrtcPtr     *crtcs;
    xf86CrtcPtr     best_crtc;
    int             best_score;
    int             score;
    int             my_score;

    if (n == config->num_output)
        return 0;
    output = config->output[n];

    /*
     * Compute score with this output disabled
     */
    best_crtcs[n] = NULL;
    best_crtc = NULL;
    best_score = xf86PickCrtcs (scrn, best_crtcs, modes, n+1, width, height);
                  ^== this functions returns NULL
    if (modes[n] == NULL)
===>      return best_score; <== and we also return NULL here

At this point we have:
   n = 0, best_score = 0, modes[0] = 0, 
so we return NULL.

Here is some excerpt from GDB session.

(gdb) next
xf86PickCrtcs (scrn=0x820ff08, best_crtcs=0x8213710, modes=0x8213bb0, n=0, 
width=2048, height=2048)
    at ../../../../hw/xfree86/modes/xf86Crtc.c:807
807     in ../../../../hw/xfree86/modes/xf86Crtc.c
(gdb) print modes
$15 = (DisplayModePtr *) 0x8213bb0
(gdb) print modes[0]
$16 = (DisplayModePtr) 0x0
(gdb) print n
$17 = 0
(gdb) print output
$18 = (xf86OutputPtr) 0x8212520
(gdb) print *output
$19 = {scrn = 0x820ff08, crtc = 0x0, possible_crtcs = 1, possible_clones = 1, 
interlaceAllowed = 0, doubleScanAllowed = 0,
  probed_modes = 0x0, options = 0x8212f40, conf_monitor = 0x8203f00, initial_x 
= 0, initial_y = 0, initial_rotation = 0,
  status = XF86OutputStatusDisconnected, MonInfo = 0x0, subpixel_order = 0, 
mm_width = 0, mm_height = 0,
  name = 0x8212578 "VGA", funcs = 0xb7bc9b60, driver_private = 0x8212a68, 
use_screen_monitor = 1, randr_output = 0x0}

  <=== NOTE "status = XF86OutputStatusDisconnected" here, is it ok?
(gdb) print best_score
$20 = 0
(gdb) next
806     in ../../../../hw/xfree86/modes/xf86Crtc.c
(gdb) next
807     in ../../../../hw/xfree86/modes/xf86Crtc.c
(gdb) next
868     in ../../../../hw/xfree86/modes/xf86Crtc.c
(gdb) next
xf86InitialConfiguration (scrn=0x820ff08, canGrow=0) at 
../../../../hw/xfree86/modes/xf86Crtc.c:1620
1620    in ../../../../hw/xfree86/modes/xf86Crtc.c
(gdb) bt
#0  xf86InitialConfiguration (scrn=0x820ff08, canGrow=0) at 
../../../../hw/xfree86/modes/xf86Crtc.c:1620
#1  0xb7b9df50 in I830PreInit (pScrn=0x820ff08, flags=<value optimized out>) at 
../../src/i830_driver.c:1377
#2  0x080a8394 in InitOutput (pScreenInfo=0x81fe360, argc=1, argv=0xbfec3fd4) 
at ../../../../hw/xfree86/common/xf86Init.c:601
#3  0x08076c6b in main (argc=1, argv=0xbfec3fd4, envp=0xbfec3fdc) at 
../../dix/main.c:370
(gdb)  

This function just returned FALSE, so all subsequent functions just
returns with error.

Any ideas? What else can I trace to find useful information?

You can send me a patch and I will recompile server or intel driver with
it.

With best regards,
   Alexander.


-- 
To UNSUBSCRIBE, email to [EMAIL PROTECTED]
with a subject of "unsubscribe". Trouble? Contact [EMAIL PROTECTED]

Reply via email to