diff options
author | Álvaro Fernández Rojas <noltari@gmail.com> | 2016-06-20 14:50:04 +0200 |
---|---|---|
committer | Zoltan HERPAI <wigyori@uid0.hu> | 2016-06-20 14:50:38 +0200 |
commit | 602bafecdbbbcb171dccae5ce07178e2c5a920d0 (patch) | |
tree | 3c4b40212dd90e6680be82ca323bb20c844bc16f /target/linux/brcm2708/patches-4.4/0094-drm-vc4-Use-job_lock-to-protect-seqno_cb_list.patch | |
parent | d7863315dd05777620fd133bb6880674fd3a00bd (diff) | |
download | master-187ad058-602bafecdbbbcb171dccae5ce07178e2c5a920d0.tar.gz master-187ad058-602bafecdbbbcb171dccae5ce07178e2c5a920d0.tar.bz2 master-187ad058-602bafecdbbbcb171dccae5ce07178e2c5a920d0.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; + } |