svn commit: r255187 - in head/sys: conf crypto/aesni modules/aesni

John-Mark Gurney jmg at funkthat.com
Tue Sep 17 20:33:15 UTC 2013


Bjoern A. Zeeb wrote this message on Tue, Sep 17, 2013 at 19:26 +0000:
> On Tue, 3 Sep 2013, John-Mark Gurney wrote:
> 
> >Author: jmg
> >Date: Tue Sep  3 18:31:23 2013
> >New Revision: 255187
> >URL: http://svnweb.freebsd.org/changeset/base/255187
> >
> >Log:
> > Use the fact that the AES-NI instructions can be pipelined to improve
> > performance... Use SSE2 instructions for calculating the XTS tweek
> > factor...  Let the compiler do more work and handle register allocation
> > by using intrinsics, now only the key schedule is in assembly...
> >
> > Replace .byte hard coded instructions w/ the proper instructions now
> > that both clang and gcc support them...
> >
> > On my machine, pulling the code to userland I saw performance go from
> > ~150MB/sec to 2GB/sec in XTS mode.  GELI on GNOP saw a more modest
> > increase of about 3x due to other system overhead (geom and
> > opencrypto)...
> >
> > These changes allow almost full disk io rate w/ geli...
> >
> > Reviewed by:	-current, -security
> > Thanks to:	Mike Hamburg for the XTS tweek algorithm
> >
> >Added:
> > head/sys/crypto/aesni/aesencdec.h   (contents, props changed)
> >Deleted:
> > head/sys/crypto/aesni/aesencdec_amd64.S
> > head/sys/crypto/aesni/aesencdec_i386.S
> >Modified:
> > head/sys/conf/files.amd64
> > head/sys/conf/files.i386
> > head/sys/crypto/aesni/aeskeys_amd64.S
> > head/sys/crypto/aesni/aesni.c
> > head/sys/crypto/aesni/aesni.h
> > head/sys/crypto/aesni/aesni_wrap.c
> > head/sys/modules/aesni/Makefile
> >
> ...
> >Added: head/sys/crypto/aesni/aesencdec.h
> >==============================================================================
> >--- /dev/null	00:00:00 1970	(empty, because file is newly added)
> >+++ head/sys/crypto/aesni/aesencdec.h	Tue Sep  3 18:31:23 2013 (r255187)
> >@@ -0,0 +1,136 @@
> >+/*-
> >+ * Copyright 2013 John-Mark Gurney <jmg at FreeBSD.org>
> >+ * All rights reserved.
> >+ *
> >+ * Redistribution and use in source and binary forms, with or without
> >+ * modification, are permitted provided that the following conditions
> >+ * are met:
> >+ * 1. Redistributions of source code must retain the above copyright
> >+ *    notice, this list of conditions and the following disclaimer.
> >+ * 2. Redistributions in binary form must reproduce the above copyright
> >+ *    notice, this list of conditions and the following disclaimer in the
> >+ *    documentation and/or other materials provided with the distribution.
> >+ *
> >+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
> >+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
> >+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR 
> >PURPOSE
> >+ * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
> >+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 
> >CONSEQUENTIAL
> >+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
> >+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
> >+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, 
> >STRICT
> >+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY 
> >WAY
> >+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
> >+ * SUCH DAMAGE.
> >+ *
> >+ * $FreeBSD$
> >+ *
> >+ */
> >+
> >+#include <wmmintrin.h>
> >+
> 
> 
> This pulls in a header from user space, in fact from clang, and if
> cross-building without building clang this header file is not
> available and a buildkernel is failing.
> 
> (paths shortend)
> In file included from /sys/modules/aesni/../../crypto/aesni/aesni_wrap.c:40:
> /sys/modules/aesni/../../crypto/aesni/aesencdec.h:30:10: fatal error: 
> 'wmmintrin.h' file not found
> #include <wmmintrin.h> ^
> 1 error generated.
> --- aesni_wrap.o ---

More details please...  cross building on what to what?  I will admit
I haven't tried to build from arm or other non-x86 platform to an
x86.. but I am pretty sure I tested cross building i386 on an amd64
machine...

Are you building w/ gcc?  it isn't clear from your message...  If you
are, is your toolchain more recent than the 3rd?

Also, all I did was turn off -nostdinc, I didn't add any other paths,
which sounds like that the cross build environment isn't built
properly if it can't access userland headers...

-- 
  John-Mark Gurney				Voice: +1 415 225 5579

     "All that I will do, has been done, All that I have, has not."


More information about the svn-src-all mailing list