Bug 11695

Summary: i915 driver broken after ttm-cleanup-branch merge
Product: DRI Reporter: Kshitij Kulshreshtha <kshitij_kulshres>
Component: DRM/otherAssignee: Default DRI bug account <dri-devel>
Status: RESOLVED NOTABUG QA Contact:
Severity: critical    
Priority: medium CC: sergio
Version: DRI git   
Hardware: x86 (IA32)   
OS: Linux (All)   
Whiteboard:
i915 platform: i915 features:
Attachments:
Description Flags
dmesg with debug
none
Xorg.0.log for for the above case
none
working dmesg with debug
none
Xorg.0.log for for the above
none
patch for correct libdrm version none

Description Kshitij Kulshreshtha 2007-07-23 04:55:41 UTC
I am tring to use the mesa drm i915 driver from git master
current commit 7e6d08f670a55d79ee037144aa29104e4e8fc700
with Mesa 7.0 i915tex_dri.so and xserver 1.3 and the git master
current xf86-video-intel driver compiled with the git version of
libdrm from the same above commit.

I run the xserver with xterm as the only client and run glxinfo
# glxinfo 
name of display: :0.0
libGL warning: 3D driver claims to not support visual 0x73
Failed to initialize batch pool - possible incorrect agpgart installed
Segmentation fault

I get the following in dmesg:

Linux agpgart interface v0.102 (c) Dave Jones
agpgart: Detected an Intel 915GM Chipset.
agpgart: Detected 7932K stolen memory.
agpgart: AGP aperture is 256M @ 0xc0000000
[drm] Initialized drm 1.1.0 20060810
ACPI: PCI Interrupt 0000:00:02.0[A] -> GSI 16 (level, low) -> IRQ 169
PCI: Setting latency timer of device 0000:00:02.0 to 64
[drm] Initialized i915 1.9.0 20070209 on minor 0
[drm:drm_lookup_buffer_object] *ERROR* Could not find buffer object 0x6c635f54

Using the setup described above works perfectly with git drm driver
commit bc7d6c76fab2ff4d2f11b6bd84ca8b8f124729fd

I tried to do git-bisect and it said:
6a62941ecaa7d2b8f14b30920856bfa52aee4775 is first bad commit
commit 6a62941ecaa7d2b8f14b30920856bfa52aee4775
Author: Dave Airlie <airlied@linux.ie>
Date:   Sun May 6 11:35:11 2007 +1000

    drm/ttm: cleanup most of fence ioctl split out



Following is the relevant output of lspci -vv

00:00.0 Host bridge: Intel Corporation Mobile 915GM/PM/GMS/910GML Express Processor to DRAM Controller (rev 03)
        Subsystem: Sony Corporation Unknown device 81b7
        Control: I/O- Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR+ FastB2B-
        Status: Cap+ 66MHz- UDF- FastB2B+ ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort+ >SERR- <PERR-
        Latency: 0
        Capabilities: [e0] Vendor Specific Information

00:02.0 VGA compatible controller: Intel Corporation Mobile 915GM/GMS/910GML Express Graphics Controller (rev 03) (prog-if 00 [VGA])
        Subsystem: Sony Corporation Unknown device 81b8
        Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B-
        Status: Cap+ 66MHz- UDF- FastB2B+ ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- >SERR- <PERR-
        Latency: 0
        Interrupt: pin A routed to IRQ 169
        Region 0: Memory at b0080000 (32-bit, non-prefetchable) [size=512K]
        Region 1: I/O ports at 1800 [size=8]
        Region 2: Memory at c0000000 (32-bit, prefetchable) [size=256M]
        Region 3: Memory at b0040000 (32-bit, non-prefetchable) [size=256K]
        Capabilities: [d0] Power Management version 2
                Flags: PMEClk- DSI+ D1- D2- AuxCurrent=0mA PME(D0-,D1-,D2-,D3hot-,D3cold-)
                Status: D0 PME-Enable- DSel=0 DScale=0 PME-

00:02.1 Display controller: Intel Corporation Mobile 915GM/GMS/910GML Express Graphics Controller (rev 03)
        Subsystem: Sony Corporation Unknown device 81b8
        Control: I/O- Mem- BusMaster- SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B-
        Status: Cap+ 66MHz- UDF- FastB2B+ ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- >SERR- <PERR-
        Region 0: Memory at 32000000 (32-bit, non-prefetchable) [disabled] [size=512K]
        Capabilities: [d0] Power Management version 2
                Flags: PMEClk- DSI+ D1- D2- AuxCurrent=0mA PME(D0-,D1-,D2-,D3hot-,D3cold-)
                Status: D0 PME-Enable- DSel=0 DScale=0 PME-
Comment 1 Sérgio M. Basto 2007-07-24 09:47:16 UTC
hum I tried that after and don't had problems 
Comment 2 Kshitij Kulshreshtha 2007-07-25 03:39:17 UTC
Created attachment 10878 [details]
dmesg with debug

The bug is consistently reproducible on my intel laptop. Relevant part of the dmesg with debug turned on is attached when running xserver with xterm as client and glxinfo segfaults.
Comment 3 Kshitij Kulshreshtha 2007-07-25 03:43:01 UTC
Created attachment 10879 [details]
Xorg.0.log for for the above case

The Xorg.0.log when glxinfo segfaults is attached here, corresponds to the dmesg above.
Comment 4 Kshitij Kulshreshtha 2007-07-25 04:02:58 UTC
Created attachment 10880 [details]
working dmesg with debug

The dmesg with debug turned on for the working case (drm commit id bc7d6c76fab2ff4d2f11b6bd84ca8b8f124729fd )

The output of glxinfo:
# glxinfo
name of display: :0.0
libGL warning: 3D driver claims to not support visual 0x73
display: :0  screen: 0
direct rendering: Yes
server glx vendor string: SGI
server glx version string: 1.2
server glx extensions:
    GLX_ARB_multisample, GLX_EXT_import_context, GLX_EXT_texture_from_pixmap, 
    GLX_EXT_visual_info, GLX_EXT_visual_rating, GLX_OML_swap_method, 
    GLX_SGI_make_current_read, GLX_SGI_swap_control, GLX_SGIS_multisample, 
    GLX_SGIX_fbconfig, GLX_SGIX_visual_select_group
client glx vendor string: SGI
client glx version string: 1.4
client glx extensions:
    GLX_ARB_get_proc_address, GLX_ARB_multisample, GLX_EXT_import_context, 
    GLX_EXT_visual_info, GLX_EXT_visual_rating, GLX_MESA_allocate_memory, 
    GLX_MESA_copy_sub_buffer, GLX_MESA_swap_control, 
    GLX_MESA_swap_frame_usage, GLX_OML_swap_method, GLX_OML_sync_control, 
    GLX_SGI_make_current_read, GLX_SGI_swap_control, GLX_SGI_video_sync, 
    GLX_SGIS_multisample, GLX_SGIX_fbconfig, GLX_SGIX_pbuffer, 
    GLX_SGIX_visual_select_group, GLX_EXT_texture_from_pixmap
GLX extensions:
    GLX_ARB_get_proc_address, GLX_ARB_multisample, GLX_EXT_import_context, 
    GLX_EXT_visual_info, GLX_EXT_visual_rating, GLX_MESA_swap_control, 
    GLX_MESA_swap_frame_usage, GLX_OML_swap_method, GLX_SGI_make_current_read, 
    GLX_SGI_swap_control, GLX_SGI_video_sync, GLX_SGIS_multisample, 
    GLX_SGIX_fbconfig, GLX_SGIX_visual_select_group
OpenGL vendor string: Tungsten Graphics, Inc
OpenGL renderer string: Mesa DRI Intel(R) 915GM 20061102 x86/MMX/SSE2
OpenGL version string: 1.3 Mesa 7.0
OpenGL extensions:
    GL_ARB_depth_texture, GL_ARB_fragment_program, GL_ARB_multisample, 
    GL_ARB_multitexture, GL_ARB_pixel_buffer_object, GL_ARB_point_parameters, 
    GL_ARB_shadow, GL_ARB_texture_border_clamp, GL_ARB_texture_compression, 
    GL_ARB_texture_cube_map, GL_ARB_texture_env_add, 
    GL_ARB_texture_env_combine, GL_ARB_texture_env_crossbar, 
    GL_ARB_texture_env_dot3, GL_ARB_texture_mirrored_repeat, 
    GL_ARB_texture_non_power_of_two, GL_ARB_texture_rectangle, 
    GL_ARB_transpose_matrix, GL_ARB_vertex_buffer_object, 
    GL_ARB_vertex_program, GL_ARB_window_pos, GL_EXT_abgr, GL_EXT_bgra, 
    GL_EXT_blend_color, GL_EXT_blend_equation_separate, 
    GL_EXT_blend_func_separate, GL_EXT_blend_minmax, GL_EXT_blend_subtract, 
    GL_EXT_clip_volume_hint, GL_EXT_cull_vertex, GL_EXT_compiled_vertex_array, 
    GL_EXT_copy_texture, GL_EXT_draw_range_elements, 
    GL_EXT_framebuffer_object, GL_EXT_fog_coord, GL_EXT_multi_draw_arrays, 
    GL_EXT_packed_depth_stencil, GL_EXT_packed_pixels, 
    GL_EXT_pixel_buffer_object, GL_EXT_point_parameters, 
    GL_EXT_polygon_offset, GL_EXT_rescale_normal, GL_EXT_secondary_color, 
    GL_EXT_separate_specular_color, GL_EXT_shadow_funcs, GL_EXT_stencil_wrap, 
    GL_EXT_subtexture, GL_EXT_texture, GL_EXT_texture3D, 
    GL_EXT_texture_edge_clamp, GL_EXT_texture_env_add, 
    GL_EXT_texture_env_combine, GL_EXT_texture_env_dot3, 
    GL_EXT_texture_filter_anisotropic, GL_EXT_texture_lod_bias, 
    GL_EXT_texture_object, GL_EXT_texture_rectangle, GL_EXT_vertex_array, 
    GL_3DFX_texture_compression_FXT1, GL_APPLE_client_storage, 
    GL_APPLE_packed_pixels, GL_ATI_blend_equation_separate, 
    GL_IBM_rasterpos_clip, GL_IBM_texture_mirrored_repeat, 
    GL_INGR_blend_func_separate, GL_MESA_pack_invert, GL_MESA_ycbcr_texture, 
    GL_MESA_window_pos, GL_NV_blend_square, GL_NV_light_max_exponent, 
    GL_NV_texture_rectangle, GL_NV_texgen_reflection, GL_NV_vertex_program, 
    GL_NV_vertex_program1_1, GL_OES_read_format, GL_SGIS_texture_border_clamp, 
    GL_SGIS_texture_edge_clamp, GL_SGIS_texture_lod, GL_SGIX_depth_texture, 
    GL_SUN_multi_draw_arrays
glu version: 1.3
glu extensions:
    GLU_EXT_nurbs_tessellator, GLU_EXT_object_space_tess

   visual  x  bf lv rg d st colorbuffer ax dp st accumbuffer  ms  cav
 id dep cl sp sz l  ci b ro  r  g  b  a bf th cl  r  g  b  a ns b eat
----------------------------------------------------------------------
0x23 24 tc  0 32  0 r  y  .  8  8  8  8  0  0  0  0  0  0  0  0 0 None
0x24 24 tc  0 32  0 r  .  .  8  8  8  8  0  0  0  0  0  0  0  0 0 None
0x25 24 tc  0 32  0 r  y  .  8  8  8  8  0 24  8  0  0  0  0  0 0 None
0x26 24 tc  0 32  0 r  .  .  8  8  8  8  0 24  8  0  0  0  0  0 0 None
0x27 24 tc  0 32  0 r  y  .  8  8  8  8  0  0  0 16 16 16 16  0 0 Slow
0x28 24 tc  0 32  0 r  .  .  8  8  8  8  0  0  0 16 16 16 16  0 0 Slow
0x29 24 tc  0 32  0 r  y  .  8  8  8  8  0 24  8 16 16 16 16  0 0 Slow
0x2a 24 tc  0 32  0 r  .  .  8  8  8  8  0 24  8 16 16 16 16  0 0 Slow
0x2b 24 dc  0 32  0 r  y  .  8  8  8  8  0  0  0  0  0  0  0  0 0 None
0x2c 24 dc  0 32  0 r  .  .  8  8  8  8  0  0  0  0  0  0  0  0 0 None
0x2d 24 dc  0 32  0 r  y  .  8  8  8  8  0 24  8  0  0  0  0  0 0 None
0x2e 24 dc  0 32  0 r  .  .  8  8  8  8  0 24  8  0  0  0  0  0 0 None
0x2f 24 dc  0 32  0 r  y  .  8  8  8  8  0  0  0 16 16 16 16  0 0 Slow
0x30 24 dc  0 32  0 r  .  .  8  8  8  8  0  0  0 16 16 16 16  0 0 Slow
0x31 24 dc  0 32  0 r  y  .  8  8  8  8  0 24  8 16 16 16 16  0 0 Slow
0x32 24 dc  0 32  0 r  .  .  8  8  8  8  0 24  8 16 16 16 16  0 0 Slow
0x73 32 tc  0 32  0 r  .  .  8  8  8  8  0  0  0  0  0  0  0  0 0 Ncon
Comment 5 Kshitij Kulshreshtha 2007-07-25 04:04:04 UTC
Created attachment 10881 [details]
Xorg.0.log for for the above

The Xorg.0.log in the above working case is attached.
Comment 6 Sérgio M. Basto 2007-07-25 06:43:41 UTC
Hi, can't help you, 
but can you say what Intel drive version and Mesa version do you use ? 
Comment 7 Kshitij Kulshreshtha 2007-07-25 06:54:44 UTC
Mesa version 7.0 release. Intel driver xf86-video-intel git master commit id 45962eed51120ff77326c29d72cf8b6cd8a934b5
Comment 8 Sérgio M. Basto 2007-07-26 07:22:48 UTC
just cheking add you install 
linux-agp-compat, it is needed for new i915tex_dri 

http://gitweb.freedesktop.org/?p=mesa/linux-agp-compat.git;a=summary
Comment 9 Kshitij Kulshreshtha 2007-07-26 08:29:31 UTC
Yes the linux-agp-compat is installed. The working logs attached above use the same agpgart and intel-agp as the crashing one.
Comment 10 Sérgio M. Basto 2007-07-28 11:31:13 UTC
with 
git reset bc7d6c76fab2ff4d2f11b6bd84ca8b8f124729fd 

git log 
commit bc7d6c76fab2ff4d2f11b6bd84ca8b8f124729fd
Author: Patrice Mandin <patrice@manoir.racoon.city>
Date:   Sat Jul 14 18:32:11 2007 +0200

    nouveau: nv10 and nv11/15 are different

I could enable i915tex without problems with xf86-video-intel 2.0.0-4
but with git head I couldn't have i915tex 
 
with git of xf86-video-intel I had other problem too 
Comment 11 Kshitij Kulshreshtha 2007-07-30 03:04:21 UTC
Could you describe what happens if you try to use the drm git head with i915tex (kernel log, Xorg.0.log)?
Comment 12 Sérgio M. Basto 2007-07-31 00:55:12 UTC
To use git drm head , we need also update libdrm else fails to init DRM memory manager.

(In reply to comment #10)
> with 
> git reset bc7d6c76fab2ff4d2f11b6bd84ca8b8f124729fd 

Correction here is:
git checkout bc7d6c76fab2ff4d2f11b6bd84ca8b8f124729fd
Comment 13 Kshitij Kulshreshtha 2007-07-31 01:05:35 UTC
In the above described problem I have used the libdrm for each case from the same commit as the kernel modules and compiled Mesa xorg-server and xf86-video-intel with it. 
The only components changed between the working case and the non-working case are libdrm and drm kernel modules, the rest is just recompiled.
Comment 14 Kshitij Kulshreshtha 2007-07-31 01:28:01 UTC
Created attachment 10923 [details] [review]
patch for correct libdrm version

I do apply the attached patch for compiling libdrm though.
Comment 15 Dave Airlie 2007-07-31 01:30:42 UTC
where are you getting a libdrm 2.3.0 from? just compile the drm tree in git for 2.3.1 hacking the version number s crazy.

Comment 16 Kshitij Kulshreshtha 2007-07-31 02:06:21 UTC
I am using the git tree. The configure.ac in the tree shows package version 2.3.1.
If I don't use the patch, the library libdrm.so.2.3.0 is created but the libdrm.pc still contains 2.3.1 as the version number.
Comment 17 Kshitij Kulshreshtha 2007-07-31 02:12:23 UTC
For pkg-config checks in during configure (e.g. in xorg-server and xf86-video-intel) the suffix of the library does not matter, what matters is the version is the .pc file. Even if I don't use the version patch, they still see the version of the libdrm as 2.3.1.
Comment 18 Kshitij Kulshreshtha 2007-07-31 02:15:47 UTC
Of course that still does not explain why I get the segfault if glxinfo if I use drm git commit id 7e6d08f670a55d79ee037144aa29104e4e8fc700 but not when I use commit id bc7d6c76fab2ff4d2f11b6bd84ca8b8f124729fd.
Comment 19 Daniel Stone 2007-07-31 02:40:44 UTC
(In reply to comment #16)
> If I don't use the patch, the library libdrm.so.2.3.0 is created but the
> libdrm.pc still contains 2.3.1 as the version number.

the library version and package version are different things, and do not have to be equal.
Comment 20 Sérgio M. Basto 2007-07-31 02:52:06 UTC
(In reply to comment #18)
> Of course that still does not explain why I get the segfault if glxinfo if I
> use drm git commit id 7e6d08f670a55d79ee037144aa29104e4e8fc700 but not when I
> use commit id bc7d6c76fab2ff4d2f11b6bd84ca8b8f124729fd.
> 

I had glxinfo segfault after after a new libdrm , you will need recompile mesa or at least glxinfo, and will wok again .
My guess about this behavior is because glxinfo depends on libdrm.so.2

see ldd `which glxinfo`
Comment 21 Kshitij Kulshreshtha 2007-07-31 02:55:38 UTC
Comment on attachment 10923 [details] [review]
patch for correct libdrm version

Alright, so I will not use the patch anymore.

 The main problem is the segfault however. Do you think that will go away if I get rid of the patch? 

I'll recompile everything and try again.
Comment 22 Kshitij Kulshreshtha 2007-07-31 04:58:15 UTC
Ok, I recompiled everything after checking out the current drm git head commit id 283eaa25594347267df4e6e5eedbb9d17bb3682c

I compiled libdrm this time without my patch, recompiled Mesa, recompiled xorg-server and xf86-video-intel. This time I did not get any segfault. The only difference this time from the last try was not using the version patch. Strange that the library version patchlevel change would make such a difference.

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.