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]