On Mon, Jul 07, 2003 at 09:59:15AM +0100, Keith Whitwell wrote:
Ronald Baljeu wrote:
The traditional approach would be to do a binary search to narrow down which change caused the problems -- probably using the DRI cvs tree.
Keith
Ok, after several days of searching I think I found something here.
In i810_dri.c of the Xfree CVS (I could not get into the DRI CVS) several calls are made to drmAgpAlloc(). To test whether this call was successful the returned handle is checked: if it is 0 it is assumed the call failed. Like this:
drmAgpAlloc(pI810->drmSubFD, back_size, 0, NULL, &agpHandle); if (agpHandle != 0) /* ok */ else /* error */
However I think 0 is a legal handle. Shouldn't the return value of the call be checked instead?
Looking at the kernel modules and header files I noticed how this used to work this way. The agpHandle used to be a pointer internally (in the agp_memory struct), but it has been changed to a key. It's difficult to describe what I mean. Maybe this helps:
xc/programs/Xserver/hw/xfree86/drivers/i810/i810_dri.c: call to drmAgpAlloc() as described above xc/programs/Xserver/hw/xfree86/os-support/linux/drm/xf86drm.c: body of drmAgpAlloc(), with a call to ioctl(DRM_IOCTL_AGP_ALLOC) xc/programs/Xserver/hw/xfree86/os-support/linux/drm/kernel/drm.h: #define DRM_IOCTL_AGP_ALLOC DRM_IOWR(0x34, drm_agp_buffer_t) xc/programs/Xserver/hw/xfree86/os-support/linux/drm/kernel/drm_drv.h: mapping DRM_IOCTL_AGP_ALLOC to DRM(agp_alloc) xc/programs/Xserver/hw/xfree86/os-support/linux/drm/kernel/drm_agpsupport.h: body of DRM(agp_alloc)
In the body of DRM(agp_alloc) a small change was made from: entry->handle = (unsigned long)memory->memory; to: entry->handle = (unsigned long)memory->key;
So, tracing this back from kernel to userland, this key is now passed as agpHandle in the example above, instead of the memory pointer. Now the handle can legally be 0, but the source of i810_dri.c still treats it like a pointer of which 0 indicates an error.
Could this be the source of the problem? Or am I way off ;-)
Ronald,
If you're way off, at this point it sounds like you've got a better idea than I... I'm forwarding this to dri-devel in the hope that this rings a bell with someone there.
From CVS you can tell who made the change - that might help to get a quick response...
Keith
------------------------------------------------------- This SF.Net email sponsored by: Free pre-built ASP.NET sites including Data Reports, E-commerce, Portals, and Forums are available now. Download today and enter to win an XBOX or Visual Studio .NET. http://aspnet.click-url.com/go/psa00100006ave/direct;at.asp_061203_01/01 _______________________________________________ Dri-devel mailing list [EMAIL PROTECTED] https://lists.sourceforge.net/lists/listinfo/dri-devel