summaryrefslogtreecommitdiff
path: root/linux-core
diff options
context:
space:
mode:
Diffstat (limited to 'linux-core')
-rw-r--r--linux-core/drm_dma.c11
-rw-r--r--linux-core/i810_dma.c5
2 files changed, 15 insertions, 1 deletions
diff --git a/linux-core/drm_dma.c b/linux-core/drm_dma.c
index e715bd41..85fa1472 100644
--- a/linux-core/drm_dma.c
+++ b/linux-core/drm_dma.c
@@ -40,6 +40,15 @@
#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
@@ -534,7 +543,7 @@ int DRM(irq_install)( drm_device_t *dev, int irq )
/* Install handler */
ret = request_irq( dev->irq, DRM(dma_service),
- 0, dev->devname, dev );
+ DRM_IRQ_TYPE, dev->devname, dev );
if ( ret < 0 ) {
down( &dev->struct_sem );
dev->irq = 0;
diff --git a/linux-core/i810_dma.c b/linux-core/i810_dma.c
index 8a5503ea..25caca6b 100644
--- a/linux-core/i810_dma.c
+++ b/linux-core/i810_dma.c
@@ -1123,6 +1123,11 @@ int i810_clear_bufs(struct inode *inode, struct file *filp,
return -EINVAL;
}
+ /* GH: Someone's doing nasty things... */
+ if (!dev->dev_private) {
+ return -EINVAL;
+ }
+
i810_dma_dispatch_clear( dev, clear.flags,
clear.clear_color,
clear.clear_depth );