Author: allanjude
Date: Thu Oct  6 03:32:30 2016
New Revision: 306751
URL: https://svnweb.freebsd.org/changeset/base/306751

Log:
  Disable loop unrolling in skein for sys/boot
  
  When tsoome@ added skein support to the ZFS boot code and zfsloader, it
  resulted in an explosion in code size, running close to a number of
  limits.
  
  The default for the C version of skein is to unroll all loops for
  skein-256 and 512
  
  Disabling the loop unrolling saves 20-28kb from each binary
  boot1.efi
  gptzfsboot
  loader.efi
  userboot.so
  zfsloader
  
  Reviewed by:  emaste, tsoome
  Sponsored by: ScaleEngine Inc.
  Differential Revision:        https://reviews.freebsd.org/D7826

Modified:
  head/sys/boot/efi/boot1/Makefile
  head/sys/boot/efi/loader/Makefile
  head/sys/boot/i386/gptzfsboot/Makefile
  head/sys/boot/i386/zfsboot/Makefile
  head/sys/boot/userboot/zfs/Makefile
  head/sys/boot/zfs/Makefile

Modified: head/sys/boot/efi/boot1/Makefile
==============================================================================
--- head/sys/boot/efi/boot1/Makefile    Thu Oct  6 03:20:47 2016        
(r306750)
+++ head/sys/boot/efi/boot1/Makefile    Thu Oct  6 03:32:30 2016        
(r306751)
@@ -28,6 +28,8 @@ SRCS= boot1.c self_reloc.c start.S ufs_m
 .if ${MK_ZFS} != "no"
 SRCS+=         zfs_module.c
 SRCS+=         skein.c skein_block.c
+# Do not unroll skein loops, reduce code size
+CFLAGS+=       -DSKEIN_LOOP=111
 .PATH:         ${.CURDIR}/../../../crypto/skein
 .endif
 

Modified: head/sys/boot/efi/loader/Makefile
==============================================================================
--- head/sys/boot/efi/loader/Makefile   Thu Oct  6 03:20:47 2016        
(r306750)
+++ head/sys/boot/efi/loader/Makefile   Thu Oct  6 03:32:30 2016        
(r306751)
@@ -25,6 +25,8 @@ SRCS= autoload.c \
 SRCS+=         zfs.c
 .PATH:         ${.CURDIR}/../../zfs
 SRCS+=         skein.c skein_block.c
+# Do not unroll skein loops, reduce code size
+CFLAGS+=       -DSKEIN_LOOP=111
 .PATH:         ${.CURDIR}/../../../crypto/skein
 
 # Disable warnings that are currently incompatible with the zfs boot code

Modified: head/sys/boot/i386/gptzfsboot/Makefile
==============================================================================
--- head/sys/boot/i386/gptzfsboot/Makefile      Thu Oct  6 03:20:47 2016        
(r306750)
+++ head/sys/boot/i386/gptzfsboot/Makefile      Thu Oct  6 03:32:30 2016        
(r306751)
@@ -36,6 +36,9 @@ CFLAGS=       -DBOOTPROG=\"gptzfsboot\" \
        -Wpointer-arith -Wshadow -Wstrict-prototypes -Wwrite-strings \
        -Winline -Wno-tentative-definition-incomplete-type -Wno-pointer-sign
 
+# Do not unroll skein loops, reduce code size
+CFLAGS+=       -DSKEIN_LOOP=111
+
 .if !defined(LOADER_NO_GELI_SUPPORT)
 CFLAGS+=       -DLOADER_GELI_SUPPORT
 CFLAGS+=       -I${.CURDIR}/../../geli

Modified: head/sys/boot/i386/zfsboot/Makefile
==============================================================================
--- head/sys/boot/i386/zfsboot/Makefile Thu Oct  6 03:20:47 2016        
(r306750)
+++ head/sys/boot/i386/zfsboot/Makefile Thu Oct  6 03:32:30 2016        
(r306751)
@@ -35,6 +35,8 @@ CFLAGS=       -DBOOTPROG=\"zfsboot\" \
        -Winline
 
 CFLAGS.gcc+=   --param max-inline-insns-single=100
+# Do not unroll skein loops, reduce code size
+CFLAGS+=       -DSKEIN_LOOP=111
 
 LD_FLAGS=${LD_FLAGS_BIN}
 

Modified: head/sys/boot/userboot/zfs/Makefile
==============================================================================
--- head/sys/boot/userboot/zfs/Makefile Thu Oct  6 03:20:47 2016        
(r306750)
+++ head/sys/boot/userboot/zfs/Makefile Thu Oct  6 03:32:30 2016        
(r306751)
@@ -8,6 +8,9 @@ INTERNALLIB=
 
 SRCS+=         zfs.c skein.c skein_block.c
 
+# Do not unroll skein loops, reduce code size
+CFLAGS+=       -DSKEIN_LOOP=111
+
 CFLAGS+=       -I${.CURDIR}/../../common -I${.CURDIR}/../../.. -I.
 CFLAGS+=       -I${.CURDIR}/../../../../lib/libstand
 CFLAGS+=       -I${.CURDIR}/../../../cddl/boot/zfs

Modified: head/sys/boot/zfs/Makefile
==============================================================================
--- head/sys/boot/zfs/Makefile  Thu Oct  6 03:20:47 2016        (r306750)
+++ head/sys/boot/zfs/Makefile  Thu Oct  6 03:32:30 2016        (r306751)
@@ -6,6 +6,8 @@ INTERNALLIB=
 SRCS+=         zfs.c
 
 SRCS+=         skein.c skein_block.c
+# Do not unroll skein loops, reduce code size
+CFLAGS+=       -DSKEIN_LOOP=111
 .PATH:         ${.CURDIR}/../../crypto/skein
 
 CFLAGS+=       -DBOOTPROG=\"zfsloader\"
_______________________________________________
[email protected] mailing list
https://lists.freebsd.org/mailman/listinfo/svn-src-head
To unsubscribe, send any mail to "[email protected]"

Reply via email to