diff options
author | Michel Daenzer <michel@daenzer.net> | 2002-12-03 00:43:47 +0000 |
---|---|---|
committer | Michel Daenzer <michel@daenzer.net> | 2002-12-03 00:43:47 +0000 |
commit | 4acba63bb7045e6bf665580cf6cea111f0786f77 (patch) | |
tree | a45078534bae7643c6aca60c58a6c5054e0cf8d4 /shared-core | |
parent | 40891ac190fb74f389ea1a9758249a2f642fd99b (diff) |
vertical blank interrupt cleanups: use spinlock instead of semaphore, send
signal directly from interrupt handler instead of using a taskqueue
(based on feedback by Linus Torvalds)
Diffstat (limited to 'shared-core')
-rw-r--r-- | shared-core/mga_irq.c | 5 | ||||
-rw-r--r-- | shared-core/r128_irq.c | 5 | ||||
-rw-r--r-- | shared-core/radeon_irq.c | 5 |
3 files changed, 3 insertions, 12 deletions
diff --git a/shared-core/mga_irq.c b/shared-core/mga_irq.c index 30ee7834..66236053 100644 --- a/shared-core/mga_irq.c +++ b/shared-core/mga_irq.c @@ -50,10 +50,7 @@ void mga_dma_service( DRM_IRQ_ARGS ) MGA_WRITE( MGA_ICLEAR, MGA_VLINEICLR ); atomic_inc(&dev->vbl_received); DRM_WAKEUP(&dev->vbl_queue); - - /* kick off bottom half for signals */ - queue_task(&dev->vbl_tq, &tq_immediate); - mark_bh(IMMEDIATE_BH); + DRM(vbl_send_signals)( dev ); } } diff --git a/shared-core/r128_irq.c b/shared-core/r128_irq.c index 722f2362..8dfee07e 100644 --- a/shared-core/r128_irq.c +++ b/shared-core/r128_irq.c @@ -50,10 +50,7 @@ void r128_dma_service( DRM_IRQ_ARGS ) R128_WRITE( R128_GEN_INT_STATUS, R128_CRTC_VBLANK_INT_AK ); atomic_inc(&dev->vbl_received); DRM_WAKEUP(&dev->vbl_queue); - - /* kick off bottom half for signals */ - queue_task(&dev->vbl_tq, &tq_immediate); - mark_bh(IMMEDIATE_BH); + DRM(vbl_send_signals)( dev ); } } diff --git a/shared-core/radeon_irq.c b/shared-core/radeon_irq.c index b8f33f95..e2182ff7 100644 --- a/shared-core/radeon_irq.c +++ b/shared-core/radeon_irq.c @@ -74,10 +74,7 @@ void DRM(dma_service)( DRM_IRQ_ARGS ) if (stat & RADEON_CRTC_VBLANK_STAT) { atomic_inc(&dev->vbl_received); DRM_WAKEUP(&dev->vbl_queue); - - /* kick off bottom half for signals */ - queue_task(&dev->vbl_tq, &tq_immediate); - mark_bh(IMMEDIATE_BH); + DRM(vbl_send_signals)( dev ); } /* Acknowledge all the bits in GEN_INT_STATUS -- seem to get |