aboutsummaryrefslogtreecommitdiffstats
path: root/target/linux/brcm2708/patches-4.4/0094-drm-vc4-Use-job_lock-to-protect-seqno_cb_list.patch
diff options
context:
space:
mode:
authorÁlvaro Fernández Rojas <noltari@gmail.com>2016-04-07 21:25:10 +0200
committerÁlvaro Fernández Rojas <noltari@gmail.com>2016-04-07 21:25:10 +0200
commita8d4d71c41ff0158c2026cac5981e39702167da9 (patch)
tree0c54ec3eb59f5bab6aa7318d14c92ff875412202 /target/linux/brcm2708/patches-4.4/0094-drm-vc4-Use-job_lock-to-protect-seqno_cb_list.patch
parent59e0e88c22007fd77ee9c6c8e02a689889a5f597 (diff)
downloadupstream-a8d4d71c41ff0158c2026cac5981e39702167da9.tar.gz
upstream-a8d4d71c41ff0158c2026cac5981e39702167da9.tar.bz2
upstream-a8d4d71c41ff0158c2026cac5981e39702167da9.zip
brcm2708: update to latest version
As usual these patches were extracted from the raspberry pi repo: https://github.com/raspberrypi/linux/commits/rpi-4.4.y Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com>
Diffstat (limited to 'target/linux/brcm2708/patches-4.4/0094-drm-vc4-Use-job_lock-to-protect-seqno_cb_list.patch')
-rw-r--r--target/linux/brcm2708/patches-4.4/0094-drm-vc4-Use-job_lock-to-protect-seqno_cb_list.patch54
1 files changed, 54 insertions, 0 deletions
diff --git a/target/linux/brcm2708/patches-4.4/0094-drm-vc4-Use-job_lock-to-protect-seqno_cb_list.patch b/target/linux/brcm2708/patches-4.4/0094-drm-vc4-Use-job_lock-to-protect-seqno_cb_list.patch
new file mode 100644
index 0000000000..b86d07ec29
--- /dev/null
+++ b/target/linux/brcm2708/patches-4.4/0094-drm-vc4-Use-job_lock-to-protect-seqno_cb_list.patch
@@ -0,0 +1,54 @@
+From 1ec9d09f4b9ec69b3b0422fa3c26b3bcc82af64e Mon Sep 17 00:00:00 2001
+From: Eric Anholt <eric@anholt.net>
+Date: Mon, 19 Oct 2015 08:32:24 -0700
+Subject: [PATCH 094/232] drm/vc4: Use job_lock to protect seqno_cb_list.
+
+We're (mostly) not supposed to be using struct_mutex in drivers these
+days.
+
+Signed-off-by: Eric Anholt <eric@anholt.net>
+---
+ drivers/gpu/drm/vc4/vc4_gem.c | 8 +++++---
+ 1 file changed, 5 insertions(+), 3 deletions(-)
+
+--- a/drivers/gpu/drm/vc4/vc4_gem.c
++++ b/drivers/gpu/drm/vc4/vc4_gem.c
+@@ -474,7 +474,6 @@ vc4_job_handle_completed(struct vc4_dev
+ vc4_complete_exec(exec);
+ spin_lock_irqsave(&vc4->job_lock, irqflags);
+ }
+- spin_unlock_irqrestore(&vc4->job_lock, irqflags);
+
+ list_for_each_entry_safe(cb, cb_temp, &vc4->seqno_cb_list, work.entry) {
+ if (cb->seqno <= vc4->finished_seqno) {
+@@ -482,6 +481,8 @@ vc4_job_handle_completed(struct vc4_dev
+ schedule_work(&cb->work);
+ }
+ }
++
++ spin_unlock_irqrestore(&vc4->job_lock, irqflags);
+ }
+
+ static void vc4_seqno_cb_work(struct work_struct *work)
+@@ -496,18 +497,19 @@ int vc4_queue_seqno_cb(struct drm_device
+ {
+ struct vc4_dev *vc4 = to_vc4_dev(dev);
+ int ret = 0;
++ unsigned long irqflags;
+
+ cb->func = func;
+ INIT_WORK(&cb->work, vc4_seqno_cb_work);
+
+- mutex_lock(&dev->struct_mutex);
++ spin_lock_irqsave(&vc4->job_lock, irqflags);
+ if (seqno > vc4->finished_seqno) {
+ cb->seqno = seqno;
+ list_add_tail(&cb->work.entry, &vc4->seqno_cb_list);
+ } else {
+ schedule_work(&cb->work);
+ }
+- mutex_unlock(&dev->struct_mutex);
++ spin_unlock_irqrestore(&vc4->job_lock, irqflags);
+
+ return ret;
+ }