diff --git a/Mesa.changes b/Mesa.changes index 5c7f949..d23c3c3 100644 --- a/Mesa.changes +++ b/Mesa.changes @@ -1,3 +1,10 @@ +------------------------------------------------------------------- +Wed Jun 1 14:48:38 UTC 2016 - eich@suse.com + +- U_gallivm-disable-avx512-features.patch: + Fix crashes on some Skykake CPUs by disabling avx512 features + (bsc#980557, bsc#981532). + ------------------------------------------------------------------- Wed May 25 11:39:12 UTC 2016 - dmueller@suse.com diff --git a/Mesa.spec b/Mesa.spec index b7e9965..5dce398 100644 --- a/Mesa.spec +++ b/Mesa.spec @@ -70,6 +70,7 @@ Patch18: n_VDPAU-XVMC-libs-Replace-hardlinks-with-copies.patch # Already upstream Patch21: n_Define-GLAPIVAR-separate-from-GLAPI.patch Patch22: u_glxcmds-glXGetFBConfigs-fix-screen-bounds.patch +Patch23: U_gallivm-disable-avx512-features.patch BuildRequires: autoconf >= 2.60 BuildRequires: automake @@ -564,6 +565,7 @@ rm -rf docs/README.{VMS,WIN32,OS2} %patch18 -p1 %patch21 -p1 %patch22 -p1 +%patch23 -p1 %build %if 0%{?suse_version} >= 1310 diff --git a/U_gallivm-disable-avx512-features.patch b/U_gallivm-disable-avx512-features.patch new file mode 100644 index 0000000..a461b17 --- /dev/null +++ b/U_gallivm-disable-avx512-features.patch @@ -0,0 +1,48 @@ +From: Roland Scheidegger +Date: Sun May 8 00:40:07 2016 +0200 +Subject: [PATCH]gallivm: disable avx512 features +Patch-mainline: Upstream +Git-repo: git://anongit.freedesktop.org/git/mesa/mesa +Git-commit: 8b66e2647d5e36e318177a460e6e586d6ca8c36b +References: bsc#980557 +Signed-off-by: Egbert Eich + +We don't target this yet, and some llvm versions incorrectly enable it based +on cpu string, causing crashes. +(Albeit this is a losing battle, it is pretty much guaranteed when the next +new feature comes along llvm will mistakenly enable it on some future cpu, +thus we would have to proactively disable all new features as llvm adds them.) + +This should fix https://bugs.freedesktop.org/show_bug.cgi?id=94291 (untested) + +Tested-by: Timo Aaltonen +Reviewed-by: Jose Fonseca +--- + src/gallium/auxiliary/gallivm/lp_bld_misc.cpp | 12 ++++++++++++ + 1 file changed, 12 insertions(+) + +diff --git a/src/gallium/auxiliary/gallivm/lp_bld_misc.cpp b/src/gallium/auxiliary/gallivm/lp_bld_misc.cpp +index bb08892..42a53ec 100644 +--- a/src/gallium/auxiliary/gallivm/lp_bld_misc.cpp ++++ b/src/gallium/auxiliary/gallivm/lp_bld_misc.cpp +@@ -571,6 +571,18 @@ lp_build_create_jit_compiler_for_module(LLVMExecutionEngineRef *OutJIT, + MAttrs.push_back(util_cpu_caps.has_avx ? "+avx" : "-avx"); + MAttrs.push_back(util_cpu_caps.has_f16c ? "+f16c" : "-f16c"); + MAttrs.push_back(util_cpu_caps.has_avx2 ? "+avx2" : "-avx2"); ++ /* disable avx512 and all subvariants */ ++#if HAVE_LLVM >= 0x0304 ++ MAttrs.push_back("-avx512cd"); ++ MAttrs.push_back("-avx512er"); ++ MAttrs.push_back("-avx512f"); ++ MAttrs.push_back("-avx512pf"); ++#endif ++#if HAVE_LLVM >= 0x0305 ++ MAttrs.push_back("-avx512bw"); ++ MAttrs.push_back("-avx512dq"); ++ MAttrs.push_back("-avx512vl"); ++#endif + #endif + + #if defined(PIPE_ARCH_PPC)