Accepting request 399516 from X11:XOrg

- U_gallivm-disable-avx512-features.patch:
  Fix crashes on some Skykake CPUs by disabling avx512 features
  (bsc#980557, bsc#981532).

OBS-URL: https://build.opensuse.org/request/show/399516
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/Mesa?expand=0&rev=267
This commit is contained in:
Dominique Leuenberger 2016-06-03 14:35:16 +00:00 committed by Git OBS Bridge
commit 65f1088267
3 changed files with 67 additions and 5 deletions

View File

@ -1,3 +1,15 @@
-------------------------------------------------------------------
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
- enable vc4 and freedreno on aarch64 as well
-------------------------------------------------------------------
Wed May 18 17:01:35 UTC 2016 - eich@suse.com

View File

@ -25,7 +25,7 @@
%else
%define gallium_loader 0
%endif
%ifarch %ix86 x86_64 %arm ppc ppc64 ppc64le
%ifarch %ix86 x86_64 aarch64 %arm ppc ppc64 ppc64le
%define xvmc_support 1
%define vdpau_nouveau 1
%define vdpau_radeon 1
@ -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
@ -609,11 +611,11 @@ autoreconf -fvi
--enable-va \
--enable-xvmc \
%endif
%ifarch %arm ppc64 ppc64le
%ifarch aarch64 %arm ppc64 ppc64le
--enable-xa \
--enable-gallium-llvm \
--with-dri-drivers=nouveau \
%ifarch %arm
%ifarch %arm aarch64
--with-gallium-drivers=r300,r600,nouveau,swrast,svga,freedreno,vc4 \
%else
--with-gallium-drivers=r300,r600,nouveau,swrast,svga \
@ -629,7 +631,7 @@ autoreconf -fvi
--with-dri-drivers=swrast \
--with-gallium-drivers=swrast \
%endif
%ifarch aarch64 s390x
%ifarch s390x
--enable-xa \
--enable-gallium-llvm \
--with-dri-drivers=swrast \
@ -947,7 +949,7 @@ install -m 644 $RPM_SOURCE_DIR/README.updates \
%{_libdir}/libMesaOpenCL.so*
%endif
%ifnarch s390 s390x aarch64
%ifnarch s390 s390x
%files libva
%defattr(-,root,root)
%dir %{_libdir}/dri

View File

@ -0,0 +1,48 @@
From: Roland Scheidegger <sroland@vmware.com>
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 <eich@suse.com>
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 <tjaalton@ubuntu.com>
Reviewed-by: Jose Fonseca <jfonseca@vmware.com
CC: <mesa-stable@lists.freedesktop.org>
---
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)