From 320802ebc145c0b821979dc587cd7e90b10b2d55 Mon Sep 17 00:00:00 2001 From: Keith Whitwell Date: Fri, 3 Jan 2003 11:22:23 +0000 Subject: more cleanups, free mem heap data on last client exit --- shared/radeon.h | 35 ++++++++++++----------------------- shared/radeon_cp.c | 7 ++++--- 2 files changed, 16 insertions(+), 26 deletions(-) (limited to 'shared') diff --git a/shared/radeon.h b/shared/radeon.h index d46b6d9c..2b5131a9 100644 --- a/shared/radeon.h +++ b/shared/radeon.h @@ -106,11 +106,6 @@ [DRM_IOCTL_NR(DRM_IOCTL_RADEON_IRQ_WAIT)] = { radeon_irq_wait, 1, 0 }, -#define USE_IRQS 1 -#if USE_IRQS -#define __HAVE_DMA_IRQ 1 -#define __HAVE_VBL_IRQ 1 -#define __HAVE_SHARED_IRQ 1 /* When a client dies: * - Check for and clean up flipped page state @@ -118,41 +113,35 @@ * * DRM infrastructure takes care of reclaiming dma buffers. */ -#define DRIVER_PRERELEASE() do { \ +#define DRIVER_PRERELEASE() \ +do { \ if ( dev->dev_private ) { \ drm_radeon_private_t *dev_priv = dev->dev_private; \ if ( dev_priv->page_flipping ) { \ radeon_do_cleanup_pageflip( dev ); \ } \ radeon_mem_release( dev_priv->agp_heap ); \ + radeon_mem_release( dev_priv->fb_heap ); \ } \ } while (0) +/* When the last client dies, shut down the CP and free dev->dev_priv. + */ #define __HAVE_RELEASE 1 -#define DRIVER_RELEASE() do { \ - if ( dev->open_count == 1) \ +#define DRIVER_RELEASE() \ +do { \ + if ( dev->open_count == 1) \ radeon_do_release( dev ); \ - } while (0) - -/* On unloading the module: - * - Free memory heap structure - * - Remove mappings made at startup and free dev_private. - */ -#define DRIVER_PRETAKEDOWN() do { \ - if ( dev->dev_private ) { \ - drm_radeon_private_t *dev_priv = dev->dev_private; \ - radeon_mem_takedown( &(dev_priv->agp_heap) ); \ - radeon_do_cleanup_cp( dev ); \ - } \ } while (0) -#else -#define __HAVE_DMA_IRQ 0 -#endif + /* DMA customization: */ #define __HAVE_DMA 1 +#define __HAVE_DMA_IRQ 1 +#define __HAVE_VBL_IRQ 1 +#define __HAVE_SHARED_IRQ 1 /* Buffer customization: diff --git a/shared/radeon_cp.c b/shared/radeon_cp.c index 7047a4b0..f7b99e8a 100644 --- a/shared/radeon_cp.c +++ b/shared/radeon_cp.c @@ -1398,9 +1398,10 @@ void radeon_do_release( drm_device_t *dev ) /* Disable *all* interrupts */ RADEON_WRITE( RADEON_GEN_INT_CNTL, 0 ); - - /* Destroy agp heap ??? */ -/* radeon_mem_takedown( &(dev_priv->agp_heap) ); */ + + /* Free memory heap structures */ + radeon_mem_takedown( &(dev_priv->agp_heap) ); + radeon_mem_takedown( &(dev_priv->fb_heap) ); /* deallocate kernel resources */ radeon_do_cleanup_cp( dev ); -- cgit v1.2.3