svn commit: r306751 - in head/sys/boot: efi/boot1 efi/loader i386/gptzfsboot i386/zfsboot userboot/zfs zfs

Allan Jude allanjude at FreeBSD.org
Thu Oct 6 03:32:31 UTC 2016


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\"


More information about the svn-src-all mailing list