|
|
@@ -410,10 +410,7 @@ static void sdma_flush(struct sdma_engine *sde)
|
|
|
sdma_flush_descq(sde);
|
|
|
spin_lock_irqsave(&sde->flushlist_lock, flags);
|
|
|
/* copy flush list */
|
|
|
- list_for_each_entry_safe(txp, txp_next, &sde->flushlist, list) {
|
|
|
- list_del_init(&txp->list);
|
|
|
- list_add_tail(&txp->list, &flushlist);
|
|
|
- }
|
|
|
+ list_splice_init(&sde->flushlist, &flushlist);
|
|
|
spin_unlock_irqrestore(&sde->flushlist_lock, flags);
|
|
|
/* flush from flush list */
|
|
|
list_for_each_entry_safe(txp, txp_next, &flushlist, list)
|
|
|
@@ -2426,7 +2423,7 @@ unlock_noconn:
|
|
|
wait->tx_count++;
|
|
|
wait->count += tx->num_desc;
|
|
|
}
|
|
|
- schedule_work(&sde->flush_worker);
|
|
|
+ queue_work_on(sde->cpu, system_highpri_wq, &sde->flush_worker);
|
|
|
ret = -ECOMM;
|
|
|
goto unlock;
|
|
|
nodesc:
|
|
|
@@ -2526,7 +2523,7 @@ unlock_noconn:
|
|
|
}
|
|
|
}
|
|
|
spin_unlock(&sde->flushlist_lock);
|
|
|
- schedule_work(&sde->flush_worker);
|
|
|
+ queue_work_on(sde->cpu, system_highpri_wq, &sde->flush_worker);
|
|
|
ret = -ECOMM;
|
|
|
goto update_tail;
|
|
|
nodesc:
|