? Makefile
Index: drm_dma.h
===================================================================
RCS file: /cvsroot/xvmc/XFree86/xc/programs/Xserver/hw/xfree86/os-support/linux/drm/kernel/drm_dma.h,v
retrieving revision 1.1.1.1
diff -c -r1.1.1.1 drm_dma.h
*** drm_dma.h	2001/03/28 18:22:28	1.1.1.1
--- drm_dma.h	2001/06/15 06:24:38
***************
*** 40,46 ****
--- 40,56 ----
  #ifndef __HAVE_DMA_RECLAIM
  #define __HAVE_DMA_RECLAIM	0
  #endif
+ #ifndef __HAVE_SHARED_IRQ
+ #define __HAVE_SHARED_IRQ	0
+ #endif
+ 
  
+ #if __HAVE_SHARED_IRQ
+ #define DRM_IRQ_TYPE SA_SHIRQ
+ #else
+ #define DRM_IRQ_TYPE 0
+ #endif
+  
  #if __HAVE_DMA
  
  int DRM(dma_setup)( drm_device_t *dev )
***************
*** 534,540 ****
  
  				/* Install handler */
  	ret = request_irq( dev->irq, DRM(dma_service),
! 			   0, dev->devname, dev );
  	if ( ret < 0 ) {
  		down( &dev->struct_sem );
  		dev->irq = 0;
--- 544,550 ----
  
  				/* Install handler */
  	ret = request_irq( dev->irq, DRM(dma_service),
! 			   DRM_IRQ_TYPE, dev->devname, dev );
  	if ( ret < 0 ) {
  		down( &dev->struct_sem );
  		dev->irq = 0;
Index: i810.h
===================================================================
RCS file: /cvsroot/xvmc/XFree86/xc/programs/Xserver/hw/xfree86/os-support/linux/drm/kernel/i810.h,v
retrieving revision 1.1.1.1
diff -c -r1.1.1.1 i810.h
*** i810.h	2001/03/28 18:22:28	1.1.1.1
--- i810.h	2001/06/15 06:24:38
***************
*** 62,67 ****
--- 62,68 ----
  
  #define __HAVE_DMA_IRQ		1
  #define __HAVE_DMA_IRQ_BH	1
+ #define __HAVE_SHARED_IRQ       1
  #define DRIVER_PREINSTALL() do {					\
  	drm_i810_private_t *dev_priv =					\
  				(drm_i810_private_t *)dev->dev_private;	\
***************
*** 92,104 ****
  	drm_i810_private_t *dev_priv =					\
  				(drm_i810_private_t *)dev->dev_private;	\
  	u16 tmp;							\
!    	tmp = I810_READ16( I810REG_INT_IDENTITY_R );			\
!    	tmp = tmp & ~(0x6000);		/* Clear all interrupts */	\
!    	if ( tmp != 0 ) I810_WRITE16( I810REG_INT_IDENTITY_R, tmp );	\
  									\
!    	tmp = I810_READ16( I810REG_INT_ENABLE_R );			\
!    	tmp = tmp & 0x6000;		/* Disable all interrupts */	\
!    	I810_WRITE16( I810REG_INT_ENABLE_R, tmp );			\
  } while (0)
  
  /* Buffer customization:
--- 93,107 ----
  	drm_i810_private_t *dev_priv =					\
  				(drm_i810_private_t *)dev->dev_private;	\
  	u16 tmp;							\
!         if(dev->dev_private) {                                          \
! 	   	tmp = I810_READ16( I810REG_INT_IDENTITY_R );		\
! 	   	tmp = tmp & ~(0x6000);	/* Clear all interrupts */	\
! 	   	if ( tmp != 0 ) I810_WRITE16( I810REG_INT_IDENTITY_R, tmp );\
  									\
! 	   	tmp = I810_READ16( I810REG_INT_ENABLE_R );		\
! 	   	tmp = tmp & 0x6000;	/* Disable all interrupts */	\
! 	   	I810_WRITE16( I810REG_INT_ENABLE_R, tmp );		\
!         }                                                               \
  } while (0)
  
  /* Buffer customization:
Index: i810_dma.c
===================================================================
RCS file: /cvsroot/xvmc/XFree86/xc/programs/Xserver/hw/xfree86/os-support/linux/drm/kernel/i810_dma.c,v
retrieving revision 1.8
diff -c -r1.8 i810_dma.c
*** i810_dma.c	2001/06/14 21:57:35	1.8
--- i810_dma.c	2001/06/15 06:24:38
***************
*** 1127,1132 ****
--- 1127,1137 ----
  		return -EINVAL;
  	}
  
+ 	/* OOPS */
+ 	if(!dev->dev_private) {
+ 		return -EINVAL;
+ 	}
+ 
  	i810_dma_dispatch_clear( dev, clear.flags,
  				 clear.clear_color,
  				 clear.clear_depth );
