|
@@ -329,14 +329,15 @@ void amdgpu_dm_irq_fini(struct amdgpu_device *adev)
|
|
|
{
|
|
|
int src;
|
|
|
struct irq_list_head *lh;
|
|
|
+ unsigned long irq_table_flags;
|
|
|
DRM_DEBUG_KMS("DM_IRQ: releasing resources.\n");
|
|
|
-
|
|
|
for (src = 0; src < DAL_IRQ_SOURCES_NUMBER; src++) {
|
|
|
-
|
|
|
+ DM_IRQ_TABLE_LOCK(adev, irq_table_flags);
|
|
|
/* The handler was removed from the table,
|
|
|
* it means it is safe to flush all the 'work'
|
|
|
* (because no code can schedule a new one). */
|
|
|
lh = &adev->dm.irq_handler_list_low_tab[src];
|
|
|
+ DM_IRQ_TABLE_UNLOCK(adev, irq_table_flags);
|
|
|
flush_work(&lh->work);
|
|
|
}
|
|
|
}
|