diff --git a/valgrind-3.15.0-z15.patch b/valgrind-3.15.0-z15.patch
new file mode 100644
index 0000000..b456ced
--- /dev/null
+++ b/valgrind-3.15.0-z15.patch
@@ -0,0 +1,126 @@
+commit 3a2711c659ac839934f13e0529e14d6c15325383
+Author: Andreas Arnez <arnez@linux.ibm.com>
+Date:   Thu Feb 27 15:52:53 2020 +0100
+
+    s390x: Add CPU model for z15
+    
+    Make the z15 CPU models known to Valgrind.  Add test case output for z15
+    to the "ecag" test.  Also ensure that the facility bits for CPU facilities
+    unsupported by Valgrind are unset, particularly for the new
+    deflate-conversion facility.
+
+diff --git a/VEX/priv/guest_s390_helpers.c b/VEX/priv/guest_s390_helpers.c
+index 525e7000c..a470d9f8d 100644
+--- a/VEX/priv/guest_s390_helpers.c
++++ b/VEX/priv/guest_s390_helpers.c
+@@ -377,6 +377,9 @@ s390x_dirtyhelper_STFLE(VexGuestS390XState *guest_state, ULong *addr)
+    s390_set_facility_bit(addr, S390_FAC_CTREXE, 0);
+    s390_set_facility_bit(addr, S390_FAC_TREXE,  0);
+    s390_set_facility_bit(addr, S390_FAC_MSA4,   0);
++   s390_set_facility_bit(addr, S390_FAC_VXE,    0);
++   s390_set_facility_bit(addr, S390_FAC_VXE2,   0);
++   s390_set_facility_bit(addr, S390_FAC_DFLT,   0);
+ 
+    return cc;
+ }
+diff --git a/VEX/pub/libvex.h b/VEX/pub/libvex.h
+index 359d10809..6da26dcb5 100644
+--- a/VEX/pub/libvex.h
++++ b/VEX/pub/libvex.h
+@@ -147,7 +147,8 @@ typedef
+ #define VEX_S390X_MODEL_Z13S     13
+ #define VEX_S390X_MODEL_Z14      14
+ #define VEX_S390X_MODEL_Z14_ZR1  15
+-#define VEX_S390X_MODEL_UNKNOWN  16     /* always last in list */
++#define VEX_S390X_MODEL_Z15      16
++#define VEX_S390X_MODEL_UNKNOWN  17     /* always last in list */
+ #define VEX_S390X_MODEL_MASK     0x3F
+ 
+ #define VEX_HWCAPS_S390X_LDISP (1<<6)   /* Long-displacement facility */
+diff --git a/VEX/pub/libvex_s390x_common.h b/VEX/pub/libvex_s390x_common.h
+index d945a4472..289421677 100644
+--- a/VEX/pub/libvex_s390x_common.h
++++ b/VEX/pub/libvex_s390x_common.h
+@@ -103,6 +103,9 @@
+ #define S390_FAC_TREXE   73  // transactional execution
+ #define S390_FAC_MSA4    77  // message-security-assist 4
+ #define S390_FAC_VX      129 // vector facility
++#define S390_FAC_VXE     135 // vector enhancements facility 1
++#define S390_FAC_VXE2    148 // vector enhancements facility 2
++#define S390_FAC_DFLT    151 // deflate-conversion facility
+ 
+ 
+ /*--------------------------------------------------------------*/
+diff --git a/coregrind/m_machine.c b/coregrind/m_machine.c
+index 672a02124..0fd1d21c7 100644
+--- a/coregrind/m_machine.c
++++ b/coregrind/m_machine.c
+@@ -581,6 +581,8 @@ static UInt VG_(get_machine_model)(void)
+       { "2965", VEX_S390X_MODEL_Z13S },
+       { "3906", VEX_S390X_MODEL_Z14 },
+       { "3907", VEX_S390X_MODEL_Z14_ZR1 },
++      { "8561", VEX_S390X_MODEL_Z15 },
++      { "8562", VEX_S390X_MODEL_Z15 },
+    };
+ 
+    Int    model, n, fh;
+diff --git a/none/tests/s390x/Makefile.am b/none/tests/s390x/Makefile.am
+index c5b07f7a2..a0fb92ef5 100644
+--- a/none/tests/s390x/Makefile.am
++++ b/none/tests/s390x/Makefile.am
+@@ -39,7 +39,7 @@ EXTRA_DIST = \
+ 	$(addsuffix .stdout.exp,$(INSN_TESTS)) \
+ 	$(addsuffix .vgtest,$(INSN_TESTS)) \
+ 	ecag.stdout.exp-z10ec ecag.stdout.exp-z196 ecag.stdout.exp-zec12 \
+-	ecag.stdout.exp-z13 ecag.stdout.exp-z14 \
++	ecag.stdout.exp-z13 ecag.stdout.exp-z14 ecag.stdout.exp-z15 \
+ 	op00.stderr.exp1 op00.stderr.exp2 op00.vgtest \
+ 	fixbr.vgtest fixbr.stderr.exp fixbr.stdout.exp \
+ 	fpext.vgtest fpext.stderr.exp fpext.stdout.exp \
+diff --git a/none/tests/s390x/ecag.stdout.exp-z15 b/none/tests/s390x/ecag.stdout.exp-z15
+new file mode 100644
+index 000000000..b98d81b78
+--- /dev/null
++++ b/none/tests/s390x/ecag.stdout.exp-z15
+@@ -0,0 +1,28 @@
++L1 topology: separate data and instruction; private
++L1 cache line size data: 256
++L1 cache line size insn: 256
++L1 total cachesize data: 131072
++L1 total cachesize insn: 131072
++L1 set. assoc.     data: 8
++L1 set. assoc.     insn: 8
++L2 topology: separate data and instruction; private
++L2 cache line size data: 256
++L2 cache line size insn: 256
++L2 total cachesize data: 4194304
++L2 total cachesize insn: 4194304
++L2 set. assoc.     data: 8
++L2 set. assoc.     insn: 8
++L3 topology: unified data and instruction; shared
++L3 cache line size data: 256
++L3 cache line size insn: 256
++L3 total cachesize data: 268435456
++L3 total cachesize insn: 268435456
++L3 set. assoc.     data: 32
++L3 set. assoc.     insn: 32
++L4 topology: unified data and instruction; shared
++L4 cache line size data: 256
++L4 cache line size insn: 256
++L4 total cachesize data: 1006632960
++L4 total cachesize insn: 1006632960
++L4 set. assoc.     data: 60
++L4 set. assoc.     insn: 60
+diff --git a/tests/s390x_features.c b/tests/s390x_features.c
+index baa349311..25b98f3a3 100644
+--- a/tests/s390x_features.c
++++ b/tests/s390x_features.c
+@@ -116,6 +116,8 @@ model_info models[] = {
+    { "2965", "z13s"   },
+    { "3906", "z14"    },
+    { "3907", "z14 ZR1"},
++   { "8561", "z15"    },
++   { "8562", "z15"    },
+ };
+ 
+ 
diff --git a/valgrind.spec b/valgrind.spec
index bf474d8..0d803c4 100644
--- a/valgrind.spec
+++ b/valgrind.spec
@@ -3,7 +3,7 @@
 Summary: Tool for finding memory management bugs in programs
 Name: %{?scl_prefix}valgrind
 Version: 3.15.0
-Release: 19%{?dist}
+Release: 20%{?dist}
 Epoch: 1
 License: GPLv2+
 URL: http://www.valgrind.org/
@@ -171,6 +171,9 @@ Patch30: valgrind-3.15.0-avx_estimate_insn-test.patch
 # Upstream commit fe6805efc1b6db0cfa5f1cd5fb1854775cbfa31a
 Patch31: valgrind-3.15.0-gcc-10-x86-amd64-asm-test.patch
 
+# Upstream commit 3a2711c659ac839934f13e0529e14d6c15325383
+Patch32: valgrind-3.15.0-z15.patch
+
 BuildRequires: glibc-devel
 
 %if %{build_openmpi}
@@ -338,6 +341,7 @@ Valgrind User Manual for details.
 %patch29 -p1
 %patch30 -p1
 %patch31 -p1
+%patch32 -p1
 
 %build
 
@@ -558,6 +562,9 @@ fi
 %endif
 
 %changelog
+* Wed Mar  4 2020 Mark Wielaard <mjw@fedoraproject.org> - 3.15.0-20
+- Add valgrind-3.15.0-z15.patch
+
 * Fri Feb 28 2020 Mark Wielaard <mjw@fedoraproject.org> - 3.15.0-19
 - Add valgrind-3.15.0-time64.patch
 - Add valgrind-3.15.0-arm-preadv2-pwritev2.patch