From: Herbert Xu <herbert@gondor.apana.org.au>
To: Linus Torvalds <torvalds@linux-foundation.org>
Cc: "David S. Miller" <davem@davemloft.net>,
Linux Kernel Mailing List <linux-kernel@vger.kernel.org>,
Linux Crypto Mailing List <linux-crypto@vger.kernel.org>
Subject: Re: Crypto Update for 2.6.38
Date: Fri, 7 Jan 2011 11:14:59 +1100 [thread overview]
Message-ID: <20110107001459.GA32068@gondor.apana.org.au> (raw)
In-Reply-To: <AANLkTi=E3fqTos7A2fJ2PRKT=o5=sgWh+CzMv4G7P4rZ@mail.gmail.com>
On Thu, Jan 06, 2011 at 03:25:32PM -0800, Linus Torvalds wrote:
>
> Ok. So can we actually get numbers for this?
As you alluded to, we need real non-x86 hardware to get some
proper numbers. Unfortunately I'm currently a continent away
from my async hardware so all I can give you are software
numbers.
Anyway, here is a test program that does a set number (1024 * 1024)
of 4096-byte (total 4GB) encryptions with libssl and kernel crypto.
The result on my Core 2 (in a KVM VM FWIW) is:
lenny0:~# time ./test_crypto > /dev/null
real 0m30.340s
user 0m0.172s
sys 0m30.166s
lenny0:~# time ./test_crypto software > /dev/null
real 0m34.555s
user 0m34.550s
sys 0m0.004s
lenny0:~#
I'm not claiming these numbers make any sense but this is just
a ballpark figure.
Dave, can you run this program on your N2 and see what it shows?
#include <fcntl.h>
#include <openssl/aes.h>
#include <stdio.h>
#include <string.h>
#include <sys/socket.h>
#include <sys/types.h>
#include <linux/types.h>
#define AF_ALG 38
#define SOL_ALG 279
#define SPLICE_F_GIFT (0x08) /* pages passed in are a gift */
struct sockaddr_alg {
__u16 salg_family;
__u8 salg_type[14];
__u32 salg_feat;
__u32 salg_mask;
__u8 salg_name[64];
};
struct af_alg_iv {
__u32 ivlen;
__u8 iv[0];
};
/* Socket options */
#define ALG_SET_KEY 1
#define ALG_SET_IV 2
#define ALG_SET_OP 3
/* Operations */
#define ALG_OP_DECRYPT 0
#define ALG_OP_ENCRYPT 1
static char buf[4096] __attribute__((__aligned__(4096)));
static void crypt_ssl(const char *key, char *iv, int i)
{
AES_KEY akey;
AES_set_encrypt_key(key, 128, &akey);
while (i--)
AES_cbc_encrypt(buf, buf, 4096, &akey, iv, 1);
}
static void crypt_kernel(const char *key, char *oiv, int i)
{
int opfd;
int tfmfd;
struct sockaddr_alg sa = {
.salg_family = AF_ALG,
.salg_type = "skcipher",
.salg_name = "cbc(aes)"
};
struct msghdr msg = {};
struct cmsghdr *cmsg;
char cbuf[CMSG_SPACE(4) + CMSG_SPACE(20)] = {};
struct aes_iv {
__u32 len;
__u8 iv[16];
} *iv;
struct iovec iov;
int pipes[2];
pipe(pipes);
tfmfd = socket(AF_ALG, SOCK_SEQPACKET, 0);
bind(tfmfd, (struct sockaddr *)&sa, sizeof(sa));
setsockopt(tfmfd, SOL_ALG, ALG_SET_KEY, key, 16);
opfd = accept(tfmfd, NULL, 0);
msg.msg_control = cbuf;
msg.msg_controllen = sizeof(cbuf);
cmsg = CMSG_FIRSTHDR(&msg);
cmsg->cmsg_level = SOL_ALG;
cmsg->cmsg_type = ALG_SET_OP;
cmsg->cmsg_len = CMSG_LEN(4);
*(__u32 *)CMSG_DATA(cmsg) = ALG_OP_ENCRYPT;
cmsg = CMSG_NXTHDR(&msg, cmsg);
cmsg->cmsg_level = SOL_ALG;
cmsg->cmsg_type = ALG_SET_IV;
cmsg->cmsg_len = CMSG_LEN(20);
iv = (void *)CMSG_DATA(cmsg);
iv->len = 16;
memcpy(iv->iv, oiv, 16);
iov.iov_base = buf;
iov.iov_len = 4096;
msg.msg_iovlen = 0;
msg.msg_flags = MSG_MORE;
while (i--) {
sendmsg(opfd, &msg, 0);
vmsplice(pipes[1], &iov, 1, SPLICE_F_GIFT);
splice(pipes[0], NULL, opfd, NULL, 4096, 0);
read(opfd, buf, 4096);
}
close(opfd);
close(tfmfd);
close(pipes[0]);
close(pipes[1]);
}
int main(int argc, char **argv)
{
int i;
const char key[16] =
"\x06\xa9\x21\x40\x36\xb8\xa1\x5b"
"\x51\x2e\x03\xd5\x34\x12\x00\x06";
char iv[16] =
"\x3d\xaf\xba\x42\x9d\x9e\xb4\x30"
"\xb4\x22\xda\x80\x2c\x9f\xac\x41";
memcpy(buf, "Single block msg", 16);
if (argc > 1)
crypt_ssl(key, iv, 1024 * 1024);
else
crypt_kernel(key, iv, 1024 * 1024);
for (i = 0; i < 4096; i++) {
printf("%02x", (unsigned char)buf[i]);
}
printf("\n");
return 0;
}
Thanks,
--
Email: Herbert Xu <herbert@gondor.apana.org.au>
Home Page: http://gondor.apana.org.au/~herbert/
PGP Key: http://gondor.apana.org.au/~herbert/pubkey.txt
next prev parent reply other threads:[~2011-01-07 0:15 UTC|newest]
Thread overview: 246+ messages / expand[flat|nested] mbox.gz Atom feed top
2008-12-25 0:17 Crypto Update for 2.6.29 Herbert Xu
2008-12-25 0:20 ` Herbert Xu
2009-03-24 4:49 ` Crypto Update for 2.6.30 Herbert Xu
[not found] ` <20090324044932.GA18245@gondor.apana.org.au>
2009-04-02 6:14 ` Herbert Xu
2009-05-17 22:28 ` Herbert Xu
2009-05-31 13:12 ` Herbert Xu
2009-06-13 2:05 ` Crypto Update for 2.6.31 Herbert Xu
2009-06-21 14:09 ` Crypto Fixes " Herbert Xu
2009-09-02 22:03 ` Herbert Xu
2009-09-10 14:19 ` Crypto Update for 2.6.32 Herbert Xu
[not found] ` <20090910141905.GA17948@gondor.apana.org.au>
2009-10-20 6:54 ` Crypto Fixes " Herbert Xu
2009-10-20 7:26 ` Herbert Xu
2009-11-23 12:05 ` Herbert Xu
2009-12-30 2:12 ` Crypto Fixes for 2.6.33 Herbert Xu
2010-02-01 19:52 ` Herbert Xu
[not found] ` <20100201195204.GA6953@gondor.apana.org.au>
2010-03-05 7:10 ` Crypto Fixes for 2.6.34 Herbert Xu
[not found] ` <20100305071043.GA3548@gondor.apana.org.au>
2010-04-27 13:55 ` Herbert Xu
2010-06-03 10:05 ` Crypto Fixes for 2.6.35 Herbert Xu
2010-06-03 16:26 ` Linus Torvalds
2010-06-03 21:56 ` Herbert Xu
2010-07-16 2:26 ` Herbert Xu
2010-07-22 5:50 ` Herbert Xu
2010-07-23 5:17 ` Lee Nipper
2010-07-23 7:27 ` Herbert Xu
2010-07-23 13:17 ` Lee Nipper
2010-09-03 6:00 ` Herbert Xu
2010-09-03 11:07 ` Crypto Fixes for 2.6.36 Herbert Xu
2010-12-15 11:50 ` Crypto Fixes for 2.6.37 Herbert Xu
2010-12-15 20:40 ` Linus Torvalds
2010-12-16 0:49 ` Herbert Xu
2010-12-16 0:58 ` Herbert Xu
2011-02-16 5:39 ` Crypto Fixes for 2.6.38 Herbert Xu
[not found] ` <20110216053911.GA10999@gondor.apana.org.au>
2011-03-28 7:13 ` Crypto Fixes for 2.6.39 Herbert Xu
2011-06-29 23:51 ` Crypto Fixes for 3.0 Herbert Xu
2011-10-21 8:22 ` Crypto Fixes for 3.1 Herbert Xu
2011-10-21 9:41 ` David Rientjes
2011-10-21 11:35 ` Herbert Xu
2011-11-10 23:00 ` Crypto Fixes for 3.2 Herbert Xu
2011-11-26 2:34 ` Herbert Xu
2012-01-26 2:43 ` Crypto Fixes for 3.3 Herbert Xu
2012-01-26 3:35 ` Linus Torvalds
2012-01-26 4:07 ` Herbert Xu
2012-01-26 4:16 ` Linus Torvalds
2012-02-14 3:35 ` Herbert Xu
2012-02-16 5:32 ` Herbert Xu
2012-03-03 5:36 ` Herbert Xu
2012-03-22 1:20 ` Crypto Fixes for 3.4 Herbert Xu
2012-04-02 9:45 ` Herbert Xu
2012-04-20 14:16 ` Herbert Xu
2012-06-11 13:00 ` Crypto Fixes for 3.5 Herbert Xu
2012-06-18 8:24 ` Herbert Xu
2012-08-23 8:32 ` Crypto Fixes for 3.6 Herbert Xu
2012-09-11 4:10 ` Herbert Xu
2012-11-09 9:30 ` Crypto Fixes for 3.7 Herbert Xu
2013-03-28 8:28 ` Crypto Fixes for 3.9 Herbert Xu
2013-03-28 13:05 ` Chaoxing Lin
2013-03-28 13:52 ` Herbert Xu
2013-04-10 2:21 ` Herbert Xu
2013-04-22 0:34 ` Herbert Xu
2013-05-28 5:52 ` Crypto Fixes for 3.10 Herbert Xu
2013-06-10 9:05 ` Herbert Xu
2013-06-20 13:29 ` Herbert Xu
2013-06-27 13:02 ` Herbert Xu
2013-07-24 7:23 ` Crypto Fixes for 3.11 Herbert Xu
2013-09-13 11:30 ` Crypto Fixes for 3.12 Herbert Xu
2013-09-13 14:22 ` Linus Torvalds
2013-09-13 14:39 ` Herbert Xu
2013-12-03 12:41 ` Crypto Fixes for 3.13 Herbert Xu
2013-12-09 11:57 ` Herbert Xu
2014-01-01 6:10 ` Herbert Xu
2014-02-03 12:59 ` Crypto Fixes for 3.14 Herbert Xu
2014-04-13 23:34 ` Crypto Fixes for 3.15 Herbert Xu
2014-05-13 11:02 ` Herbert Xu
2014-05-21 12:22 ` Herbert Xu
2014-07-10 9:03 ` Crypto Fixes for 3.16 Herbert Xu
2014-07-18 10:57 ` Herbert Xu
2014-07-28 14:05 ` Herbert Xu
2014-07-31 13:59 ` Herbert Xu
2014-09-15 11:35 ` Crypto Fixes for 3.17 Herbert Xu
2014-09-24 13:27 ` Herbert Xu
2014-11-10 8:57 ` Crypto Fixes for 3.18 Herbert Xu
2014-12-31 3:32 ` Crypto Fixes for 3.19 Herbert Xu
2015-01-07 2:17 ` Herbert Xu
2015-01-20 0:52 ` Herbert Xu
2015-03-09 5:19 ` Crypto Fixes for 4.0 Herbert Xu
2015-03-18 5:25 ` Herbert Xu
2015-03-18 18:12 ` Linus Torvalds
2015-04-25 8:03 ` Crypto Fixes for 4.1 Herbert Xu
2015-05-05 10:06 ` Herbert Xu
2015-05-11 5:56 ` Herbert Xu
2015-05-20 6:54 ` Herbert Xu
2015-05-22 4:05 ` Herbert Xu
2015-05-22 21:29 ` Linus Torvalds
2015-05-22 21:39 ` Herbert Xu
2015-05-26 8:43 ` Herbert Xu
2015-06-18 3:43 ` Herbert Xu
2010-09-04 10:45 ` Crypto Fixes for 2.6.35 Chuck Ebbert
2010-09-04 12:22 ` Herbert Xu
2010-11-13 12:59 ` Crypto Fixes for 2.6.37 Herbert Xu
2009-12-04 13:55 ` Crypto Update for 2.6.33 Herbert Xu
2010-02-26 0:49 ` Crypto Update for 2.6.34 Herbert Xu
2010-03-01 7:50 ` tip: origin tree boot crash Ingo Molnar
2010-03-01 14:55 ` Steffen Klassert
2010-03-03 14:42 ` Herbert Xu
2010-03-04 3:00 ` Ingo Molnar
2010-03-04 5:31 ` Herbert Xu
2010-05-19 2:06 ` Crypto Update for 2.6.35 Herbert Xu
2010-05-21 10:44 ` Herbert Xu
2010-08-04 14:04 ` Crypto Update for 2.6.36 Herbert Xu
2010-10-24 6:16 ` Crypto Update for 2.6.37 Herbert Xu
[not found] ` <20101024061625.GA23715@gondor.apana.org.au>
2011-01-06 0:01 ` Crypto Update for 2.6.38 Herbert Xu
2011-01-06 18:05 ` Linus Torvalds
2011-01-06 21:16 ` Herbert Xu
2011-01-06 21:23 ` Linus Torvalds
2011-01-06 21:39 ` Herbert Xu
2011-01-06 22:13 ` Linus Torvalds
2011-01-06 22:30 ` Herbert Xu
2011-01-06 22:33 ` David Miller
2011-01-06 22:43 ` Linus Torvalds
2011-01-06 22:53 ` Herbert Xu
2011-01-06 23:25 ` Linus Torvalds
2011-01-07 0:14 ` Herbert Xu [this message]
2011-01-07 2:43 ` David Miller
2011-01-07 3:04 ` Herbert Xu
2011-01-07 2:39 ` Pavel Roskin
2011-01-07 3:03 ` Herbert Xu
2011-01-07 12:04 ` Neil Horman
2011-01-08 13:23 ` Nikos Mavrogiannopoulos
2011-01-10 12:03 ` Neil Horman
2011-01-10 19:05 ` Dag Arne Osvik
2011-01-06 21:46 ` Pavel Roskin
2011-01-06 21:49 ` Herbert Xu
2011-01-06 23:02 ` Mihai Donțu
2011-01-13 1:44 ` Herbert Xu
2011-03-15 14:59 ` Crypto Update for 2.6.39 Herbert Xu
2011-05-20 23:54 ` Crypto Update for 2.6.40 Herbert Xu
2011-07-24 1:17 ` Crypto Update for 3.1 Herbert Xu
2011-10-31 4:09 ` Crypto Update for 3.2 Herbert Xu
2011-10-31 16:42 ` Randy Dunlap
2011-10-31 17:16 ` Linus Torvalds
2011-11-01 3:48 ` Herbert Xu
2012-01-06 4:12 ` Crypto Update for 3.3 Herbert Xu
2012-01-11 22:19 ` Herbert Xu
2012-03-20 3:27 ` Herbert Xu
2012-05-23 1:35 ` Crypto Update for 3.5 Herbert Xu
2012-05-23 23:06 ` Linus Torvalds
2012-05-24 0:21 ` Herbert Xu
2012-05-24 8:36 ` Arnd Bergmann
2012-05-24 7:03 ` Linus Walleij
2012-07-25 8:41 ` Crypto Update for 3.6 Herbert Xu
2012-10-04 9:53 ` Crypto Update for 3.7 Herbert Xu
2012-12-14 10:31 ` Crypto Update for 3.8 Herbert Xu
2013-02-23 2:33 ` Crypto Update for 3.9 Herbert Xu
2013-05-02 1:47 ` Crypto Update for 3.10 Herbert Xu
2013-07-05 9:52 ` Crypto Update for 3.11 Herbert Xu
2013-09-07 3:55 ` Crypto Update for 3.12 Herbert Xu
2013-11-07 8:01 ` Crypto Update for 3.13 Herbert Xu
2013-11-12 16:41 ` Herbert Xu
2013-11-12 16:59 ` Borislav Petkov
2013-11-12 18:27 ` Herbert Xu
2013-11-19 2:21 ` [GIT] " Herbert Xu
2013-11-23 1:34 ` Herbert Xu
2013-11-23 1:40 ` Herbert Xu
2014-01-23 11:53 ` Crypto Update for 3.14 Herbert Xu
2014-04-01 10:00 ` Crypto Update for 3.15 Herbert Xu
2014-06-05 6:23 ` Crypto Update for 3.16 Herbert Xu
2014-06-08 2:56 ` Linus Torvalds
2014-06-08 4:55 ` Herbert Xu
2014-06-09 1:47 ` Steven Miao
2014-08-04 13:03 ` Crypto Update for 3.17 Herbert Xu
2014-10-07 13:18 ` Crypto Update for 3.18 Herbert Xu
2014-12-11 12:51 ` Crypto Update for 3.19 Herbert Xu
2014-12-12 11:54 ` Herbert Xu
2015-02-14 9:43 ` Crypto Update for 3.20 Herbert Xu
2015-04-15 3:39 ` Crypto Update for 4.1 Herbert Xu
2015-04-16 1:58 ` Linus Torvalds
2015-04-16 2:37 ` Linus Torvalds
2015-04-16 2:38 ` Linus Torvalds
2015-04-16 2:42 ` Herbert Xu
2015-04-16 2:49 ` Linus Torvalds
2015-04-16 3:07 ` Herbert Xu
2015-04-16 3:34 ` Linus Torvalds
2015-04-23 19:27 ` Bobby Powers
2015-04-23 20:10 ` Ard Biesheuvel
2015-04-23 21:35 ` Bobby Powers
2015-04-24 6:37 ` [PATCH] crypto: x86/sha512_ssse3 - fixup for asm function prototype change Ard Biesheuvel
2015-04-24 12:20 ` Herbert Xu
2015-06-22 8:44 ` Crypto Update for 4.2 Herbert Xu
2015-06-23 4:26 ` Linus Torvalds
2015-06-23 4:32 ` Herbert Xu
2015-06-24 2:11 ` Linus Torvalds
2015-06-24 13:29 ` Herbert Xu
2015-08-31 13:56 ` Crypto Update for 4.3 Herbert Xu
2015-11-02 8:04 ` Crypto Update for 4.4 Herbert Xu
2016-01-11 10:14 ` Crypto Update for 4.5 Herbert Xu
2016-01-22 10:18 ` Crypto Fixes " Herbert Xu
2016-02-01 8:31 ` Herbert Xu
2016-02-09 17:54 ` Herbert Xu
2016-03-23 13:09 ` Crypto Fixes for 4.6 Herbert Xu
2016-03-30 9:11 ` Herbert Xu
2016-04-14 6:25 ` Herbert Xu
2016-04-25 11:12 ` Herbert Xu
2016-04-20 9:49 ` Herbert Xu
2016-05-09 8:46 ` Herbert Xu
2016-05-13 5:59 ` Herbert Xu
2016-05-20 8:41 ` Crypto Fixes for 4.7 Herbert Xu
2016-05-30 6:31 ` Herbert Xu
2016-06-27 6:28 ` Herbert Xu
2016-08-16 8:48 ` Crypto Fixes for 4.8 Herbert Xu
2016-07-22 3:39 ` Crypto Fixes for 4.7 Herbert Xu
2016-07-23 3:10 ` Herbert Xu
2016-08-01 9:58 ` Crypto Fixes for 4.8 Herbert Xu
2016-08-23 9:51 ` Herbert Xu
2016-08-31 14:19 ` Herbert Xu
2016-09-05 9:33 ` Herbert Xu
2016-09-13 10:35 ` Herbert Xu
2016-09-19 11:21 ` Herbert Xu
2016-09-23 14:48 ` Herbert Xu
2016-10-25 2:34 ` Crypto Fixes for 4.9 Herbert Xu
2016-03-15 7:20 ` Crypto Update for 4.6 Herbert Xu
2016-05-16 7:16 ` Crypto Update for 4.7 Herbert Xu
2016-07-25 10:53 ` Crypto Update for 4.8 Herbert Xu
2016-10-10 3:34 ` Crypto Update for 4.9 Herbert Xu
2015-06-26 10:22 ` Crypto Fixes for 4.2 Herbert Xu
2015-06-26 20:07 ` Linus Torvalds
2015-06-27 6:56 ` Herbert Xu
2015-06-27 16:40 ` Linus Torvalds
2015-06-29 7:32 ` Herbert Xu
2015-06-30 13:51 ` Herbert Xu
2015-07-13 4:08 ` Herbert Xu
2015-08-03 7:16 ` Herbert Xu
2015-08-17 8:27 ` Herbert Xu
2015-09-08 9:25 ` Crypto Fixes for 4.3 Herbert Xu
2015-09-16 10:30 ` Herbert Xu
2015-09-26 20:01 ` Herbert Xu
2015-10-13 12:17 ` Herbert Xu
2015-10-13 17:23 ` Linus Torvalds
2015-10-14 1:03 ` Herbert Xu
2015-10-14 2:00 ` Linus Torvalds
2015-10-14 2:38 ` Herbert Xu
2015-10-26 11:02 ` Herbert Xu
2015-11-11 7:08 ` Crypto Fixes for 4.4 Herbert Xu
2015-11-17 9:41 ` Herbert Xu
2015-12-05 1:04 ` Herbert Xu
2015-12-14 9:29 ` Herbert Xu
2015-12-28 13:26 ` Herbert Xu
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20110107001459.GA32068@gondor.apana.org.au \
--to=herbert@gondor.apana.org.au \
--cc=davem@davemloft.net \
--cc=linux-crypto@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=torvalds@linux-foundation.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).