Bug 25447 - [Arrandale, xorg-x11-drv-intel-2.9.1-1.fc12]: Xorg frozen at startup
Summary: [Arrandale, xorg-x11-drv-intel-2.9.1-1.fc12]: Xorg frozen at startup
Status: RESOLVED FIXED
Alias: None
Product: xorg
Classification: Unclassified
Component: Driver/intel (show other bugs)
Version: unspecified
Hardware: x86 (IA32) Linux (All)
: medium major
Assignee: Wang Zhenyu
QA Contact: Xorg Project Team
URL:
Whiteboard:
Keywords:
Depends on:
Blocks:
 
Reported: 2009-12-04 06:32 UTC by Régis Odeyé
Modified: 2009-12-29 16:50 UTC (History)
0 users

See Also:
i915 platform:
i915 features:


Attachments
xorg.conf provided by Xorg -configure (2.14 KB, application/octet-stream)
2009-12-04 06:33 UTC, Régis Odeyé
no flags Details
The complete log (8.78 KB, text/x-log)
2009-12-04 06:34 UTC, Régis Odeyé
no flags Details
dmesg with 2.6.32 kernel (36.35 KB, text/plain)
2009-12-28 05:18 UTC, Régis Odeyé
no flags Details
lspci with 2.6.32 kernel (36.62 KB, text/plain)
2009-12-28 05:19 UTC, Régis Odeyé
no flags Details
Xorg with 2.6.32 kernel (8.59 KB, text/x-log)
2009-12-28 05:19 UTC, Régis Odeyé
no flags Details
Xorg log with i915.modeset=1 (23.43 KB, application/octet-stream)
2009-12-29 02:02 UTC, Régis Odeyé
no flags Details
dmesg output with i915.modeset=1 (38.48 KB, text/plain)
2009-12-29 02:03 UTC, Régis Odeyé
no flags Details
xorg.conf with VGA enabled and LVDS disabled (2.29 KB, application/octet-stream)
2009-12-29 05:40 UTC, Régis Odeyé
no flags Details

Description Régis Odeyé 2009-12-04 06:32:46 UTC
Using Fedora 12, with the attached xorg.conf, on a Arrandale evaluation plateform , Xorg never start.

-- chipset: Arrandale
-- system architecture: i686
-- xf86-video-intel/xserver/mesa/libdrm version: xorg-x11-drv-intel-2.9.1-1.fc12, xserver X.Org X Server 1.7.1
-- kernel version: 2.6.31.5-127.fc12.i686.PAE
-- Linux distribution: Fedora 12
-- Machine or mobo model: 
-- Display connector: VGA

[root@eval8544 ~]# tail Xorg.0.log
(II) intel(0): 0x10000000:            end of aperture
(II) intel(0): BO memory allocation layout:
(II) intel(0): 0x01fff000:            start of memory manager
(II) intel(0): 0x02020000-0x0231ffff: front buffer (3072 kB) X tiled
(II) intel(0): 0x02420000-0x02429fff: HW cursors (40 kB)
(II) intel(0): 0x10000000:            end of memory manager
(WW) intel(0): ESR is 0x00000010, page table error
(WW) intel(0): PGTBL_ER is 0x00100000, CS instruction GTT PTE
(WW) intel(0): Existing errors found in hardware state.
(II) intel(0): Selecting standard 18 bit TMDS pixel format.
Comment 1 Régis Odeyé 2009-12-04 06:33:57 UTC
Created attachment 31738 [details]
xorg.conf provided by Xorg -configure
Comment 2 Régis Odeyé 2009-12-04 06:34:42 UTC
Created attachment 31739 [details]
The complete log
Comment 3 Wang Zhenyu 2009-12-06 17:49:40 UTC
fc12's kernel is missing some fixes for Arrandale, could you try latest 2.6.32?

Please attach your dmesg, lspci -nvv output.
Comment 4 Wang Zhenyu 2009-12-21 21:52:12 UTC
lower priority. Any testing news?
Comment 5 Régis Odeyé 2009-12-28 05:18:37 UTC
Created attachment 32325 [details]
dmesg with 2.6.32 kernel
Comment 6 Régis Odeyé 2009-12-28 05:19:10 UTC
Created attachment 32326 [details]
lspci with 2.6.32 kernel
Comment 7 Régis Odeyé 2009-12-28 05:19:44 UTC
Created attachment 32327 [details]
Xorg with 2.6.32 kernel
Comment 8 Régis Odeyé 2009-12-28 05:25:29 UTC
Sorry about the delay of this answer...

I did some tests with 2.6.32 kernel. Would you like to find attached files Xorg.0.log, dmesg and lspci outputs.

There is no more warning about memory allocation in the Xorg log nevertheless still no display.

Regards.

Comment 9 Régis Odeyé 2009-12-28 10:04:53 UTC
So, after some more analysis, still with 2.6.32 kernel, Xorg is looping in the following routine, in i830_lvds.c file:
static void
i830SetLVDSPanelPower(xf86OutputPtr output, Bool on)
{
    I830OutputPrivatePtr    intel_output = output->driver_private;
    struct i830_lvds_priv   *dev_priv = intel_output->dev_priv;
    ScrnInfoPtr             pScrn = output->scrn;
    I830Ptr                 pI830 = I830PTR(pScrn);
    uint32_t                pp_status;
    
    if (on) {
        /* if we're going from on->on, be aware to current level. */
        if ((INREG(PP_CONTROL) & POWER_TARGET_ON) && !dev_priv->dpmsoff) 
            dev_priv->backlight_duty_cycle = dev_priv->get_backlight(output);
    
        /*
         * If we're going from off->on we may need to turn on the backlight.
         * We should use the saved value whenever possible, but on some
         * machines 0 is a valid backlight value (due to an external backlight
         * controller for example), so on them, when turning LVDS back on,
         * they'll always re-maximize the brightness.
         */
        if (!(INREG(PP_CONTROL) & POWER_TARGET_ON) &&
            dev_priv->backlight_duty_cycle == 0 &&
            pI830->backlight_control_method < BCM_KERNEL)
            dev_priv->backlight_duty_cycle = dev_priv->backlight_max;
    
        OUTREG(PP_CONTROL, INREG(PP_CONTROL) | POWER_TARGET_ON);
        do {                                <================
            pp_status = INREG(PP_STATUS);   <= LOOPING HERE
        } while ((pp_status & PP_ON) == 0); <================
    
        dev_priv->set_backlight(output, dev_priv->backlight_duty_cycle);
        dev_priv->dpmsoff = FALSE;
    } else {
        /*
         * Only save the current backlight value if we're going from
         * on to off.
         */
        if ((INREG(PP_CONTROL) & POWER_TARGET_ON) && !dev_priv->dpmsoff)
            dev_priv->backlight_duty_cycle = dev_priv->get_backlight(output);
        dev_priv->set_backlight(output, 0);
    
        OUTREG(PP_CONTROL, INREG(PP_CONTROL) & ~POWER_TARGET_ON);
        do {
            pp_status = INREG(PP_STATUS);
        } while (pp_status & PP_ON);
    
        dev_priv->dpmsoff = TRUE;
    }
}

We do not use a LVDS monitor but a VGA CRT one.
I'm looking for the way not to configure LVDS when I'm using a CRT.
It seems that using quirk_ignore_lvds routine may be one way but I'm looking for  a dynamic way to do this (without re-compile intel module). 
Is it possible through Xorg options ?
Comment 10 Wang Zhenyu 2009-12-28 16:50:03 UTC
oh, Arrandale has no more user modesetting support in xf86-video-intel, you have to use kernel modesetting from drm/i915 module. Make sure your kernel has CONFIG_DRM_I915 and CONFIG_DRM_I915_KMS enabled.
Comment 11 Régis Odeyé 2009-12-29 02:02:35 UTC
Created attachment 32341 [details]
Xorg log with i915.modeset=1
Comment 12 Régis Odeyé 2009-12-29 02:03:21 UTC
Created attachment 32342 [details]
dmesg output with i915.modeset=1
Comment 13 Régis Odeyé 2009-12-29 02:19:14 UTC
Far much better with i915.modeset=1 set in kernel command line. Refer to the related attachments. Thanks for the input.

I still do not understand why a lvds output is detected on my system (it is a Calpella evaluation platform) because I have only a CRT connected on the VGA port and definetely no LCD display.

This other strange thing is related to the following error message in dmesg:
[root@eval8544 log]# grep ERROR /tmp/dmesg.okwithmodeset.txt
[drm:drm_mode_rmfb] *ERROR* tried to remove a fb that we didn't own
[drm:drm_mode_rmfb] *ERROR* tried to remove a fb that we didn't own
Any idea about this ?
Comment 14 Régis Odeyé 2009-12-29 05:39:28 UTC
I configured xorg.conf to get the LVDS output disabled and it seems to be OK now.

Let me know if this is the best way (refer to xorg.conf.VGA attachment) ?

I also removed i915.modeset=1 kernel option because it is the default. In the very first kernel parameters command line, I had nomodeset option inheritated from the standard Fedora installation.
Comment 15 Régis Odeyé 2009-12-29 05:40:23 UTC
Created attachment 32345 [details]
xorg.conf with VGA enabled and LVDS disabled
Comment 16 Régis Odeyé 2009-12-29 07:49:59 UTC
FYI, I went back to 2.6.31.5-127.fc12.i686.PAE kernel which is the "standard" Fedora 12 kernel and it is also working when the kernel modeset are used and with the xorg.conf attached.
Regards.
Comment 17 Wang Zhenyu 2009-12-29 16:50:17 UTC
Mobile SDV is supposed to have LVDS, you can also pass 'video=LVDS-1:d' in kernel boot option to disable LVDS output.

Close this.


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.