Bug 28604 - [945GME] X Fails To Properly Start On NC10 Due To i830_set_pixmap_bo() Change
[945GME] X Fails To Properly Start On NC10 Due To i830_set_pixmap_bo() Change
Status: RESOLVED INVALID
Product: xorg
Classification: Unclassified
Component: Driver/intel
git
x86 (IA32) All
: high critical
Assigned To: Carl Worth
Xorg Project Team
: NEEDINFO
Depends on:
Blocks:
  Show dependency treegraph
 
Reported: 2010-06-18 13:26 UTC by Michael Larabel
Modified: 2010-06-22 01:37 UTC (History)
2 users (show)

See Also:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Michael Larabel 2010-06-18 13:26:57 UTC
With a Samsung NC10 netbook using a 945GME running a clean Ubuntu Maverick daily snapshot from 2010-06-18 with the Linux 2.6.35-rc2 kernel, X Server 1.8.2 RC1, the Git DRM, and the latest xf86-video-intel Git as of today, the X Server fails to properly start. The cursor appears momentarily and then goes away, the panel turns off and back on, and this process repeats indefinitely.

00:02.0 VGA compatible controller: Intel Corporation Mobile 945GME Express Integrated Graphics Controller (rev 03)
	Subsystem: Samsung Electronics Co Ltd Device ca00
	Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx-
	Status: Cap+ 66MHz- UDF- FastB2B+ ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
	Latency: 0
	Interrupt: pin A routed to IRQ 16
	Region 0: Memory at f0000000 (32-bit, non-prefetchable) [size=512K]
	Region 1: I/O ports at 1800 [size=8]
	Region 2: Memory at d0000000 (32-bit, prefetchable) [size=256M]
	Region 3: Memory at f0300000 (32-bit, non-prefetchable) [size=256K]
	Capabilities: <access denied>
	Kernel driver in use: i915
	Kernel modules: i915

Bisecting between 2.11.0 and be55066c6481b4c5e2cd39ef1c0f3be88cae0c93 had yielded ad8af95dd35921118f45d6cff355c80cf0906ff0 "i830: Do not cache in-flight non-reusable buffers." as the initial bad commit.

Looking at it against the -intel Git master, when commenting out lines 618 through 621 within i830_set_pixmap_bo() in i830_uxa.c solves the problem on the NC10 and the X Server starts up and works without any issues

} else if (!drm_intel_bo_is_reusable(priv->bo)) {
dri_bo_unreference(priv->bo);
list_del(&priv->batch);
list_del(&priv->flush); 


-- Michael
Comment 1 Julien Cristau 2010-06-18 13:33:24 UTC
On Fri, Jun 18, 2010 at 13:26:57 -0700, bugzilla-daemon@freedesktop.org wrote:

> Bisecting between 2.11.0 and be55066c6481b4c5e2cd39ef1c0f3be88cae0c93 had
> yielded ad8af95dd35921118f45d6cff355c80cf0906ff0 "i830: Do not cache in-flight
> non-reusable buffers." as the initial bad commit.
> 
sounds to me like you're using an old libdrm.
Comment 2 Michael Larabel 2010-06-18 13:56:04 UTC
(In reply to comment #1)
> On Fri, Jun 18, 2010 at 13:26:57 -0700, bugzilla-daemon@freedesktop.org wrote:
> 
> > Bisecting between 2.11.0 and be55066c6481b4c5e2cd39ef1c0f3be88cae0c93 had
> > yielded ad8af95dd35921118f45d6cff355c80cf0906ff0 "i830: Do not cache in-flight
> > non-reusable buffers." as the initial bad commit.
> > 
> sounds to me like you're using an old libdrm.

I used the latest Git.
Comment 3 Chris Wilson 2010-06-21 01:15:49 UTC
Absolutely sure you are running against the latest libdrm? My bet is that if your were able to see the console messages (maybe captured by /var/log/gdm/:0.log*) you would see the linker complain of a missing symbol "drm_intel_bo_is_reusable".
Comment 4 Michael Larabel 2010-06-21 10:53:36 UTC
(In reply to comment #3)
> Absolutely sure you are running against the latest libdrm? My bet is that if
> your were able to see the console messages (maybe captured by
> /var/log/gdm/:0.log*) you would see the linker complain of a missing symbol
> "drm_intel_bo_is_reusable".

Yes I am certain I was using the latest Git.

The NC10 was since changed around to run other tests so I did another clean Ubuntu Maverick daily installation. After installing the latest libdrm and xf86-video-intel Git, the problem again occurred. I also tried it out on a Dell Mini 9, but the problem didn't reproduce there.
Comment 5 Julien Cristau 2010-06-21 14:24:29 UTC
(In reply to comment #4)
> (In reply to comment #3)
> > Absolutely sure you are running against the latest libdrm? My bet is that if
> > your were able to see the console messages (maybe captured by
> > /var/log/gdm/:0.log*) you would see the linker complain of a missing symbol
> > "drm_intel_bo_is_reusable".
> 
> Yes I am certain I was using the latest Git.
> 
how did you install libdrm, and what's the output of 'ldd $prefix/lib/xorg/modules/drivers/intel_drv.so'? (where prefix=/usr i guess)
Comment 6 Michael Larabel 2010-06-21 17:02:59 UTC
(In reply to comment #5)
> (In reply to comment #4)
> > (In reply to comment #3)
> > > Absolutely sure you are running against the latest libdrm? My bet is that if
> > > your were able to see the console messages (maybe captured by
> > > /var/log/gdm/:0.log*) you would see the linker complain of a missing symbol
> > > "drm_intel_bo_is_reusable".
> > 
> > Yes I am certain I was using the latest Git.
> > 
> how did you install libdrm, and what's the output of 'ldd
> $prefix/lib/xorg/modules/drivers/intel_drv.so'? (where prefix=/usr i guess)

Just the standard

./autogen.sh
./configure --prefix=/usr/
make
make install

Here's the output:

	linux-gate.so.1 =>  (0x00357000)
	libm.so.6 => /lib/libm.so.6 (0x006cf000)
	libdrm.so.2 => /lib/libdrm.so.2 (0x00b94000)
	libdrm_intel.so.1 => /lib/libdrm_intel.so.1 (0x0050d000)
	libpciaccess.so.0 => /usr/lib/libpciaccess.so.0 (0x00793000)
	libc.so.6 => /lib/libc.so.6 (0x00154000)
	/lib/ld-linux.so.2 (0x00cf9000)
	librt.so.1 => /lib/librt.so.1 (0x00773000)
	libz.so.1 => /lib/libz.so.1 (0x00587000)
	libpthread.so.0 => /lib/libpthread.so.0 (0x00fa2000)
Comment 7 Emil Velikov 2010-06-21 17:14:53 UTC
(In reply to comment #6)
> (In reply to comment #5)
> > (In reply to comment #4)
> > > (In reply to comment #3)
> > > > Absolutely sure you are running against the latest libdrm? My bet is that if
> > > > your were able to see the console messages (maybe captured by
> > > > /var/log/gdm/:0.log*) you would see the linker complain of a missing symbol
> > > > "drm_intel_bo_is_reusable".
> > > 
> > > Yes I am certain I was using the latest Git.
> > > 
> > how did you install libdrm, and what's the output of 'ldd
> > $prefix/lib/xorg/modules/drivers/intel_drv.so'? (where prefix=/usr i guess)
> 
> Just the standard
> 
> ./autogen.sh
> ./configure --prefix=/usr/
> make
> make install
> 
> Here's the output:
> 
>     linux-gate.so.1 =>  (0x00357000)
>     libm.so.6 => /lib/libm.so.6 (0x006cf000)
>     libdrm.so.2 => /lib/libdrm.so.2 (0x00b94000)
>     libdrm_intel.so.1 => /lib/libdrm_intel.so.1 (0x0050d000)
>     libpciaccess.so.0 => /usr/lib/libpciaccess.so.0 (0x00793000)
>     libc.so.6 => /lib/libc.so.6 (0x00154000)
>     /lib/ld-linux.so.2 (0x00cf9000)
>     librt.so.1 => /lib/librt.so.1 (0x00773000)
>     libz.so.1 => /lib/libz.so.1 (0x00587000)
>     libpthread.so.0 => /lib/libpthread.so.0 (0x00fa2000)

As stated previously the issue appears to be an old libdrm.

Ubuntu 10.04 installs libdrm in /lib/, so passing --libdir=/lib should fix it.
Comment 8 Julien Cristau 2010-06-22 01:37:11 UTC
(In reply to comment #6)
> ./autogen.sh
> ./configure --prefix=/usr/
> 
>     libdrm_intel.so.1 => /lib/libdrm_intel.so.1 (0x0050d000)

so yeah, old libdrm.  closing.