diff options
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 |
commit | a8d4d71c41ff0158c2026cac5981e39702167da9 (patch) | |
tree | 0c54ec3eb59f5bab6aa7318d14c92ff875412202 /target/linux/brcm2708/patches-4.4/0094-drm-vc4-Use-job_lock-to-protect-seqno_cb_list.patch | |
parent | 59e0e88c22007fd77ee9c6c8e02a689889a5f597 (diff) | |
download | upstream-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.patch | 54 |
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; + } |