diff options
author | Eric Anholt <anholt@freebsd.org> | 2003-11-05 08:13:52 +0000 |
---|---|---|
committer | Eric Anholt <anholt@freebsd.org> | 2003-11-05 08:13:52 +0000 |
commit | 66c9e3053f857df340a982edaa8ea57b229efeed (patch) | |
tree | f1ba7392f422b2687952f0242c6916d1ac766fea /shared | |
parent | 19ee64add26773f4436440f8fa405a1011eea4c4 (diff) |
- Tie the DRM to a specific device: setunique no longer succeeds when given
a busid that doesn't correspond to the device the DRM is attached to.
This is a breaking of backwards-compatibility only for the
multiple-DRI-head case with X Servers that don't use interface 1.1.
- Move irq_busid to drm_irq.h and make it only return the IRQ for the
current device. Retains compatibility with previous X Servers, cleans
up unnecessary code. This means no irq_busid on !__HAVE_IRQ, but can be
changed if necessary.
- Bump interface version to 1.2. This version when set signifies that the
control ioctl should ignore the irq number passed in and enable the
interrupt handler for the attached device. Otherwise it errors out when
the passed-in irq is not equal to the device's.
- Store the highest version the interface has been set to in the device.
- Fix a recursion on DRM_LOCK in irq_uninstall on FreeBSD. This leaves
irq_uninstall being done without the lock in some cases, but it was
racey anyways.
Diffstat (limited to 'shared')
-rw-r--r-- | shared/mga_dma.c | 2 | ||||
-rw-r--r-- | shared/r128_cce.c | 2 | ||||
-rw-r--r-- | shared/radeon_cp.c | 2 |
3 files changed, 3 insertions, 3 deletions
diff --git a/shared/mga_dma.c b/shared/mga_dma.c index f2d92f15..19bc9e32 100644 --- a/shared/mga_dma.c +++ b/shared/mga_dma.c @@ -644,7 +644,7 @@ int mga_do_cleanup_dma( drm_device_t *dev ) * may not have been called from userspace and after dev_private * is freed, it's too late. */ - if ( dev->irq ) DRM(irq_uninstall)(dev); + if ( dev->irq_enabled ) DRM(irq_uninstall)(dev); #endif if ( dev->dev_private ) { diff --git a/shared/r128_cce.c b/shared/r128_cce.c index fdf220bd..abf05c17 100644 --- a/shared/r128_cce.c +++ b/shared/r128_cce.c @@ -599,7 +599,7 @@ int r128_do_cleanup_cce( drm_device_t *dev ) * may not have been called from userspace and after dev_private * is freed, it's too late. */ - if ( dev->irq ) DRM(irq_uninstall)(dev); + if ( dev->irq_enabled ) DRM(irq_uninstall)(dev); #endif if ( dev->dev_private ) { diff --git a/shared/radeon_cp.c b/shared/radeon_cp.c index 87aef010..4cacef5c 100644 --- a/shared/radeon_cp.c +++ b/shared/radeon_cp.c @@ -1287,7 +1287,7 @@ int radeon_do_cleanup_cp( drm_device_t *dev ) * may not have been called from userspace and after dev_private * is freed, it's too late. */ - if ( dev->irq ) DRM(irq_uninstall)(dev); + if ( dev->irq_enabled ) DRM(irq_uninstall)(dev); #endif if ( dev->dev_private ) { |