diff options
author | Felix Fietkau <nbd@openwrt.org> | 2016-01-17 10:42:23 +0000 |
---|---|---|
committer | Felix Fietkau <nbd@openwrt.org> | 2016-01-17 10:42:23 +0000 |
commit | 4224b52c3acc7203e7c2535d6806f30432dae5e3 (patch) | |
tree | 7a847d3e84dfc3608555587c3b9958474fc17d72 /target/linux/brcm2708/patches-4.4/0096-drm-vc4-Drop-struct_mutex-around-CL-validation.patch | |
parent | cad399c87b7739c4b8eeb4119706860818f7d84f (diff) | |
download | upstream-4224b52c3acc7203e7c2535d6806f30432dae5e3.tar.gz upstream-4224b52c3acc7203e7c2535d6806f30432dae5e3.tar.bz2 upstream-4224b52c3acc7203e7c2535d6806f30432dae5e3.zip |
brcm2708: add linux 4.4 support
- random-bcm2708 and spi-bcm2708 have been removed.
- sound-soc-bcm2708-i2s has been upstreamed as sound-soc-bcm2835-i2s.
Let's keep linux 4.1 for a while, since linux 4.4 appears to have some issues
with multicast traffic on RPi ethernet:
https://gist.github.com/Noltari/5b1cfdecce5ed4bc08fd
Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com>
SVN-Revision: 48266
Diffstat (limited to 'target/linux/brcm2708/patches-4.4/0096-drm-vc4-Drop-struct_mutex-around-CL-validation.patch')
-rw-r--r-- | target/linux/brcm2708/patches-4.4/0096-drm-vc4-Drop-struct_mutex-around-CL-validation.patch | 63 |
1 files changed, 63 insertions, 0 deletions
diff --git a/target/linux/brcm2708/patches-4.4/0096-drm-vc4-Drop-struct_mutex-around-CL-validation.patch b/target/linux/brcm2708/patches-4.4/0096-drm-vc4-Drop-struct_mutex-around-CL-validation.patch new file mode 100644 index 0000000000..7796399453 --- /dev/null +++ b/target/linux/brcm2708/patches-4.4/0096-drm-vc4-Drop-struct_mutex-around-CL-validation.patch @@ -0,0 +1,63 @@ +From 6a9940a2bde49eda470e58f19a6bde3ded87d7fb Mon Sep 17 00:00:00 2001 +From: Eric Anholt <eric@anholt.net> +Date: Mon, 19 Oct 2015 08:44:35 -0700 +Subject: [PATCH 096/127] drm/vc4: Drop struct_mutex around CL validation. + +We were using it so that we could make sure that shader validation +state didn't change while we were validating, but now shader +validation state is immutable. The bcl/rcl generation doesn't do any +other BO dereferencing, and seems to have no other global state +dependency not covered by job_lock / bo_lock. + +Fixes a lock order reversal between mmap_sem and struct_mutex. + +Signed-off-by: Eric Anholt <eric@anholt.net> +--- + drivers/gpu/drm/vc4/vc4_gem.c | 12 ++++-------- + 1 file changed, 4 insertions(+), 8 deletions(-) + +--- a/drivers/gpu/drm/vc4/vc4_gem.c ++++ b/drivers/gpu/drm/vc4/vc4_gem.c +@@ -244,13 +244,15 @@ static void + vc4_queue_submit(struct drm_device *dev, struct vc4_exec_info *exec) + { + struct vc4_dev *vc4 = to_vc4_dev(dev); +- uint64_t seqno = ++vc4->emit_seqno; ++ uint64_t seqno; + unsigned long irqflags; + ++ spin_lock_irqsave(&vc4->job_lock, irqflags); ++ ++ seqno = ++vc4->emit_seqno; + exec->seqno = seqno; + vc4_update_bo_seqnos(exec, seqno); + +- spin_lock_irqsave(&vc4->job_lock, irqflags); + list_add_tail(&exec->head, &vc4->job_list); + + /* If no job was executing, kick ours off. Otherwise, it'll +@@ -608,8 +610,6 @@ vc4_submit_cl_ioctl(struct drm_device *d + exec->args = args; + INIT_LIST_HEAD(&exec->unref_list); + +- mutex_lock(&dev->struct_mutex); +- + ret = vc4_cl_lookup_bos(dev, file_priv, exec); + if (ret) + goto fail; +@@ -636,15 +636,11 @@ vc4_submit_cl_ioctl(struct drm_device *d + /* Return the seqno for our job. */ + args->seqno = vc4->emit_seqno; + +- mutex_unlock(&dev->struct_mutex); +- + return 0; + + fail: + vc4_complete_exec(exec); + +- mutex_unlock(&dev->struct_mutex); +- + return ret; + } + |