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)