diff --git a/.gitignore b/.gitignore
index 7d5f47c..7150d62 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1 +1 @@
-SOURCES/mesa-21.3.0.tar.xz
+SOURCES/mesa-21.3.4.tar.xz
diff --git a/.mesa.metadata b/.mesa.metadata
index 21690b8..3b1dfce 100644
--- a/.mesa.metadata
+++ b/.mesa.metadata
@@ -1 +1 @@
-036c47505c16b627c87807a89a362622bbba1a19 SOURCES/mesa-21.3.0.tar.xz
+c18255897b353f259c64e7a864d8505d8b5bf024 SOURCES/mesa-21.3.4.tar.xz
diff --git a/SOURCES/0001-iris-implement-inter-context-busy-tracking.patch b/SOURCES/0001-iris-implement-inter-context-busy-tracking.patch
new file mode 100644
index 0000000..cc50a4b
--- /dev/null
+++ b/SOURCES/0001-iris-implement-inter-context-busy-tracking.patch
@@ -0,0 +1,58 @@
+From 07dc3d4238e57901ccf98e0b506d9aad2c86b9d9 Mon Sep 17 00:00:00 2001
+From: Paulo Zanoni <paulo.r.zanoni@intel.com>
+Date: Mon, 10 Jan 2022 17:18:05 -0800
+Subject: [PATCH] iris: implement inter-context busy-tracking
+
+Previously, no buffers were ever marked as EXEC_OBJECT_ASYNC so the
+Kernel would ensure dependency tracking for us. After we implemented
+explicit busy tracking in commit 89a34cb8450a, only the external
+objects kept relying on the Kernel's implicit tracking and Iris did
+inter-batch busy tracking, meaning we lost inter-screen and
+inter-context synchronization. This seemed fine to me since, as far as
+I understood, it is the duty of the application to synchronize itself
+against multiple screens and contexts.
+
+The problem here is that applications were actually relying on the old
+behavior where the Kernel guarantees synchronization, so 89a34cb8450a
+can be seen as a regression. This commit addresses the inter-context
+synchronization case.
+
+Cc: mesa-stable
+Closes: https://gitlab.freedesktop.org/mesa/mesa/-/issues/5731
+Closes: https://gitlab.freedesktop.org/mesa/mesa/-/issues/5812
+Fixes: 89a34cb8450a ("iris: switch to explicit busy tracking")
+Tested-by: Konstantin Kharlamov <hi-angel@yandex.ru>
+Signed-off-by: Paulo Zanoni <paulo.r.zanoni@intel.com>
+---
+ src/gallium/drivers/iris/iris_batch.c | 8 ++++++++
+ 1 file changed, 8 insertions(+)
+
+diff --git a/src/gallium/drivers/iris/iris_batch.c b/src/gallium/drivers/iris/iris_batch.c
+index b7bde60aae7..1b0c5896d4f 100644
+--- a/src/gallium/drivers/iris/iris_batch.c
++++ b/src/gallium/drivers/iris/iris_batch.c
+@@ -835,6 +835,12 @@ update_bo_syncobjs(struct iris_batch *batch, struct iris_bo *bo, bool write)
+       move_syncobj_to_batch(batch, &deps->write_syncobjs[other_batch_idx],
+                             I915_EXEC_FENCE_WAIT);
+ 
++   /* If it's being written by our screen, wait on it too. This is relevant
++    * when there are multiple contexts on the same screen. */
++   if (deps->write_syncobjs[batch_idx])
++      move_syncobj_to_batch(batch, &deps->write_syncobjs[batch_idx],
++                            I915_EXEC_FENCE_WAIT);
++
+    struct iris_syncobj *batch_syncobj = iris_batch_get_signal_syncobj(batch);
+ 
+    if (write) {
+@@ -847,6 +853,8 @@ update_bo_syncobjs(struct iris_batch *batch, struct iris_bo *bo, bool write)
+ 
+       move_syncobj_to_batch(batch, &deps->read_syncobjs[other_batch_idx],
+                            I915_EXEC_FENCE_WAIT);
++      move_syncobj_to_batch(batch, &deps->read_syncobjs[batch_idx],
++                           I915_EXEC_FENCE_WAIT);
+ 
+    } else {
+       /* If we're reading, replace the other read from our batch index. */
+-- 
+GitLab
+
diff --git a/SOURCES/Makefile b/SOURCES/Makefile
index c48e5d8..2ff7214 100644
--- a/SOURCES/Makefile
+++ b/SOURCES/Makefile
@@ -1,4 +1,4 @@
-VERSION ?= 21.3.0
+VERSION ?= 21.3.4
 SANITIZE ?= 1
 
 DIRNAME = mesa-${VERSION}
diff --git a/SPECS/mesa.spec b/SPECS/mesa.spec
index ba8f924..2d3a68f 100644
--- a/SPECS/mesa.spec
+++ b/SPECS/mesa.spec
@@ -39,7 +39,7 @@
 
 Name:           mesa
 Summary:        Mesa graphics libraries
-Version:        21.3.0
+Version:        21.3.4
 Release:        1%{?rctag:.%{rctag}}%{?dist}
 
 License:        MIT
@@ -56,6 +56,12 @@ Source4:        Mesa-MLAA-License-Clarification-Email.txt
 
 Patch0:	lavapipe-disable-env-var.patch
 
+# Patches to fix Intel blinking, see:
+# https://gitlab.freedesktop.org/pzanoni/mesa/-/commit/07dc3d4238e57901ccf98e0b506d9aad2c86b9d9
+# https://bugzilla.redhat.com/show_bug.cgi?id=2036600
+# https://bugzilla.redhat.com/show_bug.cgi?id=2040771
+Patch0001: 0001-iris-implement-inter-context-busy-tracking.patch
+
 BuildRequires:  gcc
 BuildRequires:  gcc-c++
 
@@ -546,6 +552,9 @@ done
 %endif
 
 %changelog
+* Tue Jan 25 2022 Dave Airlie <airlied@redhat.com> - 21.3.4-1
+- Update to 23.1.4 for gbm and leak fixes, add iris regression fix
+
 * Thu Nov 18 2021 Dave Airlie <airlied@redhat.com> - 21.3.0-1
 - rebase to 23.1.0