diff options
author | Laurent Pinchart <[email protected]> | 2017-05-30 03:40:35 +0300 |
---|---|---|
committer | Laurent Pinchart <[email protected]> | 2017-07-29 23:46:55 +0300 |
commit | 1dd48e4876daef834f473e174f80b62938e00c9b (patch) | |
tree | db9f208e72137c937e819a1a2e754fe273a1ff0c | |
parent | e6742e1021a5cec55fab50a0b115c65217488eda (diff) |
v4l: vsp1: Fill display list headers without holding dlm spinlock
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]>
-rw-r--r-- | drivers/media/platform/vsp1/vsp1_dl.c | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/drivers/media/platform/vsp1/vsp1_dl.c b/drivers/media/platform/vsp1/vsp1_dl.c index aaf17b13fd78..dc47e236c780 100644 --- a/drivers/media/platform/vsp1/vsp1_dl.c +++ b/drivers/media/platform/vsp1/vsp1_dl.c @@ -483,8 +483,6 @@ void vsp1_dl_list_commit(struct vsp1_dl_list *dl) 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; @@ -501,7 +499,11 @@ void vsp1_dl_list_commit(struct vsp1_dl_list *dl) 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. |