Found it. DRIVER_RELEASE in radeon.h has to call radeon_reclaim_buffers
as the drm_drv.h template seems to expect DRIVER_RELEASE to handle this.
DRIVER_RELEASE in i810.h does this too. The (1 line) patch is attached.

Felix

On Sat, 8 Feb 2003 17:49:15 +0100
Felix Kühling <[EMAIL PROTECTED]> wrote:

> Hi,
> 
> There were some seemingly random lockups with with my Radeon 7500. Now I
> found out that they are actually reproducable. Run for instance the
> gflux xscreensaver hack repeatedly. Short after starting it the 32nd
> time X locks up. RADEON_DEBUG_DMA=1 output indicates that this is
> another DMA buffer leak. Apperently it occurs with apps which don't
> destroy their GLX context. I set a breakpoint in radeonDestroyContext
> while running gflux. I terminated gflux with ESC and my breakpoint was
> never hit.
> 
> Obviously the kernel has to handle DMA buffer deallocation if the
> application fails to do so. If someone can point me to the right source
> files to look at I'll try to make a patch for this.
> 
> Regards,
>   Felix
               __\|/__    ___     ___     ___
__Tschüß_______\_6 6_/___/__ \___/__ \___/___\___You can do anything,___
_____Felix_______\Ä/\ \_____\ \_____\ \______U___just not everything____
  [EMAIL PROTECTED]    >o<__/   \___/   \___/        at the same time!
? radeon_release_buffers.diff
Index: radeon.h
===================================================================
RCS file: 
/cvsroot/dri/xc/xc/programs/Xserver/hw/xfree86/os-support/shared/drm/kernel/radeon.h,v
retrieving revision 1.11
diff -u -r1.11 radeon.h
--- radeon.h    3 Jan 2003 11:22:22 -0000       1.11
+++ radeon.h    8 Feb 2003 17:19:12 -0000
@@ -130,6 +130,7 @@
 #define __HAVE_RELEASE 1
 #define DRIVER_RELEASE()                       \
 do {                                           \
+        DRM(reclaim_buffers)( dev, priv->pid ); \
        if ( dev->open_count == 1)              \
                  radeon_do_release( dev );     \
 } while (0)

Reply via email to