summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLaurent Pinchart <laurent.pinchart+renesas@ideasonboard.com>2017-05-30 03:40:35 +0300
committerLaurent Pinchart <laurent.pinchart+renesas@ideasonboard.com>2017-07-29 23:46:55 +0300
commit1dd48e4876daef834f473e174f80b62938e00c9b (patch)
treedb9f208e72137c937e819a1a2e754fe273a1ff0c
parente6742e1021a5cec55fab50a0b115c65217488eda (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 <laurent.pinchart+renesas@ideasonboard.com> Reviewed-by: Kieran Bingham <kieran.bingham+renesas@ideasonboard.com> Acked-by: Mauro Carvalho Chehab <mchehab@s-opensource.com>
-rw-r--r--drivers/media/platform/vsp1/vsp1_dl.c6
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.