The display list headers are filled using information from the display
list only. Lower the display list manager spinlock contention by filling
the headers without holding the lock.
Signed-off-by: Laurent Pinchart <[email protected]>
Reviewed-by: Kieran Bingham <[email protected]>
Acked-by: Mauro Carvalho Chehab <[email protected]>
unsigned long flags;
bool update;
- spin_lock_irqsave(&dlm->lock, flags);
-
if (dl->dlm->mode == VSP1_DL_MODE_HEADER) {
struct vsp1_dl_list *dl_child;
vsp1_dl_list_fill_header(dl_child, last);
}
+ }
+ spin_lock_irqsave(&dlm->lock, flags);
+
+ if (dl->dlm->mode == VSP1_DL_MODE_HEADER) {
/*
* Commit the head display list to hardware. Chained headers
* will auto-start.