mirror of
https://github.com/FEX-Emu/linux.git
synced 2024-12-23 09:56:00 +00:00
drm: Make locked tasklet handling more robust.
Initialize the spinlock unconditionally when struct drm_device is filled in, and return early in drm_locked_tasklet() if the driver doesn't support IRQs. Signed-off-by: Dave Airlie <airlied@linux.ie>
This commit is contained in:
parent
507c0185a7
commit
8163e418f7
@ -119,7 +119,6 @@ static int drm_irq_install(drm_device_t * dev)
|
|||||||
init_waitqueue_head(&dev->vbl_queue);
|
init_waitqueue_head(&dev->vbl_queue);
|
||||||
|
|
||||||
spin_lock_init(&dev->vbl_lock);
|
spin_lock_init(&dev->vbl_lock);
|
||||||
spin_lock_init(&dev->tasklet_lock);
|
|
||||||
|
|
||||||
INIT_LIST_HEAD(&dev->vbl_sigs.head);
|
INIT_LIST_HEAD(&dev->vbl_sigs.head);
|
||||||
INIT_LIST_HEAD(&dev->vbl_sigs2.head);
|
INIT_LIST_HEAD(&dev->vbl_sigs2.head);
|
||||||
@ -456,7 +455,8 @@ void drm_locked_tasklet(drm_device_t *dev, void (*func)(drm_device_t*))
|
|||||||
unsigned long irqflags;
|
unsigned long irqflags;
|
||||||
static DECLARE_TASKLET(drm_tasklet, drm_locked_tasklet_func, 0);
|
static DECLARE_TASKLET(drm_tasklet, drm_locked_tasklet_func, 0);
|
||||||
|
|
||||||
if (test_bit(TASKLET_STATE_SCHED, &drm_tasklet.state))
|
if (!drm_core_check_feature(dev, DRIVER_HAVE_IRQ) ||
|
||||||
|
test_bit(TASKLET_STATE_SCHED, &drm_tasklet.state))
|
||||||
return;
|
return;
|
||||||
|
|
||||||
spin_lock_irqsave(&dev->tasklet_lock, irqflags);
|
spin_lock_irqsave(&dev->tasklet_lock, irqflags);
|
||||||
|
@ -61,6 +61,7 @@ static int drm_fill_in_dev(drm_device_t * dev, struct pci_dev *pdev,
|
|||||||
|
|
||||||
spin_lock_init(&dev->count_lock);
|
spin_lock_init(&dev->count_lock);
|
||||||
spin_lock_init(&dev->drw_lock);
|
spin_lock_init(&dev->drw_lock);
|
||||||
|
spin_lock_init(&dev->tasklet_lock);
|
||||||
init_timer(&dev->timer);
|
init_timer(&dev->timer);
|
||||||
mutex_init(&dev->struct_mutex);
|
mutex_init(&dev->struct_mutex);
|
||||||
mutex_init(&dev->ctxlist_mutex);
|
mutex_init(&dev->ctxlist_mutex);
|
||||||
|
Loading…
Reference in New Issue
Block a user