Disable kernel opt by default on Solaris 10 and 11
authorAndrew Deason <adeason@sinenomine.net>
Mon, 6 Feb 2012 19:23:41 +0000 (13:23 -0600)
committerDerrick Brashear <shadow@dementix.org>
Tue, 7 Feb 2012 14:42:07 +0000 (06:42 -0800)
With newer Solaris Studio (sometime in the 12.* series), cc started
adding SSE instructions to optimized x86 code, which is invalid for
kernel code and can generate panics. There appears to be no way to
turn this off currently (-xvector=%none is non-functional), so default
to not optimizing kernel code.

Change-Id: I5fdedb11219df68e0146b8e0cee9010c2eb4067e
Reviewed-on: http://gerrit.openafs.org/6671
Tested-by: BuildBot <buildbot@rampaginggeek.com>
Reviewed-by: Derrick Brashear <shadow@dementix.org>

acinclude.m4
src/cf/osconf.m4

index 433542d..92cad6f 100644 (file)
@@ -199,7 +199,7 @@ AC_ARG_ENABLE([optimize-kernel],
         [disable compilation of the kernel module with optimization (defaults
          based on platform)])],
     , 
-    [enable_optimize_kernel="yes"])
+    [enable_optimize_kernel=""])
 AC_ARG_ENABLE([debug-lwp],
     [AS_HELP_STRING([--enable-debug-lwp],
         [enable compilation of the LWP code with debugging information
index ab64a04..04ed6a7 100644 (file)
@@ -653,6 +653,20 @@ esac
 MT_CFLAGS="${MT_CFLAGS} -DAFS_PTHREAD_ENV"
 
 #
+# Defaults for --enable-optimize-kernel
+#
+if test "x$enable_optimize_kernel" = "x" ; then
+  AS_CASE([$AFS_SYSNAME],
+    [sunx86_510|sunx86_511],
+      dnl Somewhere around Solaris Studio 12.*, the compiler started adding SSE
+      dnl instructions to optimized code, without any ability to turn it off.
+      dnl So just default to not optimizing kernel code for the relevant
+      dnl platforms, until we get a better autoconf test for this.
+      [enable_optimize_kernel=no],
+    [enable_optimize_kernel=yes])
+fi
+
+#
 # Special build targets
 #
 case $AFS_SYSNAME in