System Environment: -------------------------- --Platform: FC6 --Xf86_video_intel:5cbb4110116f6d4187fd27660a78203caa1da46b --Mesa:ffee86f69711e96c5a9ae68376aaf8a044c73dc8 --DRM:2db6400396ea5c8a5ce54fe9e211b9d01a11d506 --Kernel:2.6.22 Bug detailed description: -------------------------- with DRI enabled running 32-bit glxgears on 64-bit OS will get abort with: DRM_I830_EXECBUFFER: -14 Reproduce steps: ---------------- start X run 32-bit glxgears Current result: ---------------- glxgears abort with "DRM_I830_EXECBUFFER: -14" Expected result: ---------------- glxgears runs normally
Created attachment 13211 [details] xorg conf
Created attachment 13212 [details] xorg log
I have tested quake 3 & doom 3 on i965 (compatibility) , and I found the some problem ,abort with "DRM_I830_EXECBUFFER: -14" or abort with "DRM_I830_EXECBUFFER: -16".
Seems to run any 32 bit 3D app on 64 bit system will result in this bug. After 32 bit app exit with message: "DRM_I830_EXECBUFFER: -14", then run 64 bit's glxgears, glxgears also abort with same message. If we reboot machine, then run 64 bit glxgears, it also abort. We need boot machine after shutdown machine for a while, then run 64 bit glxgears, glxgears just can run normally.
Created attachment 13272 [details] [review] a 32 bit ioctl compatibility routine to handle execbuffer The root cause is the field 'cliprects' of drm_i915_batchbuffer is a pointer and drm_i915_exechbuffer includes drm_i915_batchbuffer field. So DRM must take account for this pointer under compatibility mode. There are two methods to fix this issue 1. redefine cliprects as 'uint64_t'. 2. provide a 32-bit ioctl compatibility routine to handle execbuffer. I prefer 2 because I'm afraid 1 impacts Mesa or others.
Hi, eric Could you review this patch?
+ struct _drm_i915_batchbuffer batch; Don't you mean struct _drm_i915_batchbuffer32? -struct drm_i915_execbuffer { +typedef struct drm_i915_execbuffer { We're not typedeffing this stuff any more. Please use struct drm_i915_execbuffer.
*** Bug 13640 has been marked as a duplicate of this bug. ***
*** Bug 13615 has been marked as a duplicate of this bug. ***
(In reply to comment #7) > + struct _drm_i915_batchbuffer batch; > > Don't you mean struct _drm_i915_batchbuffer32? > > -struct drm_i915_execbuffer { > +typedef struct drm_i915_execbuffer { > > We're not typedeffing this stuff any more. Please use struct > drm_i915_execbuffer. Thanks. I will correct it. >
fix in drm (5d8d64ad3881c10bc3cd3fd5cab1ac14268da5ce)
after update drm, glxgears abort after about 0.4 second with following output: [root@x-g965 shuang]# ./glxgears libGL warning: 3D driver claims to not support visual 0x21 libGL warning: 3D driver claims to not support visual 0x21 libGL warning: 3D driver claims to not support visual 0x21 libGL warning: 3D driver claims to not support visual 0x21 libGL warning: 3D driver claims to not support visual 0x21 libGL warning: 3D driver claims to not support visual 0x21 libGL warning: 3D driver claims to not support visual 0x22 libGL warning: 3D driver claims to not support visual 0x22 libGL warning: 3D driver claims to not support visual 0x22 libGL warning: 3D driver claims to not support visual 0x22 libGL warning: 3D driver claims to not support visual 0x22 libGL warning: 3D driver claims to not support visual 0x22 libGL warning: 3D driver claims to not support visual 0x21 libGL warning: 3D driver claims to not support visual 0x22 drmFenceUnreference failed (fence buffers): Invalid argument drmFenceUnreference failed (fence buffers): Invalid argument drmFenceUnreference failed (fence buffers): Invalid argument drmFenceUnreference failed (fence buffers): Invalid argument drmFenceUnreference failed (fence buffers): Invalid argument drmFenceUnreference failed (fence buffers): Invalid argument drmFenceUnreference failed (fence buffers): Invalid argument drmFenceUnreference failed (fence buffers): Invalid argument drmFenceUnreference failed (fence buffers): Invalid argument drmFenceUnreference failed (fence buffers): Invalid argument intel_bufmgr_ttm.c:618: Error -22 waiting for fence fence buffers. Aborted
and with INTEL_NO_TTM set, glxgears can run smoothly
fixed in drm b9417f41418321d5081547a3a3386dcccae7541f
verified
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.