mailarchive of the ptxdist mailing list
 help / color / mirror / Atom feed
From: Ladislav Michl <ladis@linux-mips.org>
To: ptxdist@pengutronix.de
Subject: Re: [ptxdist] [PATCH v2 1/3] cryptodev: new package
Date: Tue, 13 Aug 2019 10:00:49 +0200	[thread overview]
Message-ID: <20190813080049.GA29489@lenoch> (raw)
In-Reply-To: <20190813073333.5lkngse42acqajto@pengutronix.de>

On Tue, Aug 13, 2019 at 09:33:33AM +0200, Michael Olbrich wrote:
> On Mon, Aug 12, 2019 at 03:19:52PM +0200, Ladislav Michl wrote:
> > Cryptodev-linux is a device that allows access to Linux kernel
> > cryptographic drivers; thus allowing of userspace applications
> > to take advantage of hardware accelerators. Cryptodev-linux is
> > implemented as a standalone module that requires no dependencies
> > other than a stock linux kernel. Its API is compatible with
> > OpenBSD's cryptodev userspace API (/dev/crypto).
> > 
> > Signed-off-by: Ladislav Michl <ladis@linux-mips.org>
> 
> Please update to the latest kernel module template.

One more question. Header required by openssl and gnutls is copied
during targetinstall stage. Shall we do it manually inside install stage
to satisfy dependencies?

From: Ladislav Michl <ladis@linux-mips.org>
Date: Thu, 22 Jun 2017 23:01:10 +0200
Subject: [PATCH v3 1/3] cryptodev: new package

Cryptodev-linux is a device that allows access to Linux kernel
cryptographic drivers; thus allowing of userspace applications
to take advantage of hardware accelerators. Cryptodev-linux is
implemented as a standalone module that requires no dependencies
other than a stock linux kernel. Its API is compatible with
OpenBSD's cryptodev userspace API (/dev/crypto).

Signed-off-by: Ladislav Michl <ladis@linux-mips.org>
---
 Changes:
 - v2: update to 1.10, add upstream git patch.
 - v3: updated to the latest module template

 ...x-module-loading-with-Linux-v5.0-rc5.patch | 58 +++++++++++++++
 patches/cryptodev-linux-1.10/series           |  1 +
 rules/cryptodev.in                            | 11 +++
 rules/cryptodev.make                          | 74 +++++++++++++++++++
 4 files changed, 144 insertions(+)
 create mode 100644 patches/cryptodev-linux-1.10/0001-Fix-module-loading-with-Linux-v5.0-rc5.patch
 create mode 100644 patches/cryptodev-linux-1.10/series
 create mode 100644 rules/cryptodev.in
 create mode 100644 rules/cryptodev.make

diff --git a/patches/cryptodev-linux-1.10/0001-Fix-module-loading-with-Linux-v5.0-rc5.patch b/patches/cryptodev-linux-1.10/0001-Fix-module-loading-with-Linux-v5.0-rc5.patch
new file mode 100644
index 000000000..a201d0290
--- /dev/null
+++ b/patches/cryptodev-linux-1.10/0001-Fix-module-loading-with-Linux-v5.0-rc5.patch
@@ -0,0 +1,58 @@
+Upstream-Status: Backport [https://github.com/cryptodev-linux/cryptodev-linux/commit/f971e0c]
+
+Backport patch from upstream to fix module cryptodev loading error.
+
+Signed-off-by: Kai Kang <kai.kang@windriver.com>
+
+From f971e0cd4a0ebe59fb2e8e17240399bf6901b09b Mon Sep 17 00:00:00 2001
+From: "Derald D. Woods" <woods.technical@gmail.com>
+Date: Sun, 10 Feb 2019 13:22:19 -0600
+Subject: [PATCH] Fix module loading with Linux v5.0-rc5
+
+This commit fixes this module load error:
+[...]
+[   29.112091] cryptodev: loading out-of-tree module taints kernel.
+[   29.128906] cryptodev: Unknown symbol crypto_givcipher_type (err -2)
+[   29.188842] cryptodev: Unknown symbol crypto_givcipher_type (err -2)
+modprobe: can't load module cryptodev (extra/cryptodev.ko): unknown symbol in module, or unknown parameter
+[...]
+
+Upstream Linux support for unused GIVCIPHER, and others, was dropped here:
+
+c79b411eaa72 (crypto: skcipher - remove remnants of internal IV generators)
+
+Signed-off-by: Derald D. Woods <woods.technical@gmail.com>
+---
+ cryptlib.c | 9 +++++++--
+ 1 file changed, 7 insertions(+), 2 deletions(-)
+
+diff --git a/cryptlib.c b/cryptlib.c
+index 6e66698..4a87037 100644
+--- a/cryptlib.c
++++ b/cryptlib.c
+@@ -38,7 +38,9 @@
+ #include "cryptodev_int.h"
+ #include "cipherapi.h"
+ 
++#if (LINUX_VERSION_CODE < KERNEL_VERSION(5, 0, 0))
+ extern const struct crypto_type crypto_givcipher_type;
++#endif
+ 
+ static void cryptodev_complete(struct crypto_async_request *req, int err)
+ {
+@@ -157,8 +159,11 @@ int cryptodev_cipher_init(struct cipher_data *out, const char *alg_name,
+ 
+ #if (LINUX_VERSION_CODE >= KERNEL_VERSION(4, 8, 0))
+ 		tfm = crypto_skcipher_tfm(out->async.s);
+-		if ((tfm->__crt_alg->cra_type == &crypto_ablkcipher_type) ||
+-		    (tfm->__crt_alg->cra_type == &crypto_givcipher_type)) {
++		if ((tfm->__crt_alg->cra_type == &crypto_ablkcipher_type)
++#if (LINUX_VERSION_CODE < KERNEL_VERSION(5, 0, 0))
++		    || (tfm->__crt_alg->cra_type == &crypto_givcipher_type)
++#endif
++							) {
+ 			struct ablkcipher_alg *alg;
+ 
+ 			alg = &tfm->__crt_alg->cra_ablkcipher;
+-- 
+2.20.0
diff --git a/patches/cryptodev-linux-1.10/series b/patches/cryptodev-linux-1.10/series
new file mode 100644
index 000000000..fa320b645
--- /dev/null
+++ b/patches/cryptodev-linux-1.10/series
@@ -0,0 +1 @@
+0001-Fix-module-loading-with-Linux-v5.0-rc5.patch
diff --git a/rules/cryptodev.in b/rules/cryptodev.in
new file mode 100644
index 000000000..7a231340e
--- /dev/null
+++ b/rules/cryptodev.in
@@ -0,0 +1,11 @@
+## SECTION=core
+
+config CRYPTODEV
+	tristate
+	select KERNEL
+	prompt "cryptodev"
+	help
+	  Cryptodev-linux is a device that allows access to Linux kernel
+	  cryptographic drivers; thus allowing of userspace applications
+	  to take advantage of hardware accelerators. Its API is
+	  compatible with OpenBSD's cryptodev userspace API (/dev/crypto). 
diff --git a/rules/cryptodev.make b/rules/cryptodev.make
new file mode 100644
index 000000000..132f924e2
--- /dev/null
+++ b/rules/cryptodev.make
@@ -0,0 +1,74 @@
+# -*-makefile-*-
+#
+# Copyright (C) 2017, 2019 by Ladislav Michl <ladis@linux-mips.org>
+#
+# See CREDITS for details about who has contributed to this project.
+#
+# For further information about the PTXdist project and license conditions
+# see the README file.
+#
+
+#
+# We provide this package
+#
+PACKAGES-$(PTXCONF_CRYPTODEV) += cryptodev
+
+#
+# Paths and names and versions
+#
+CRYPTODEV_VERSION	:= 1.10
+CRYPTODEV_MD5		:= 53403fbb99cd88a48bc899dbe9158e1c
+CRYPTODEV		:= cryptodev-linux-$(CRYPTODEV_VERSION)
+CRYPTODEV_SUFFIX	:= tar.gz
+CRYPTODEV_URL		:= \
+	https://github.com/cryptodev-linux/cryptodev-linux/archive/$(CRYPTODEV).$(CRYPTODEV_SUFFIX)
+CRYPTODEV_SOURCE	:= $(SRCDIR)/$(CRYPTODEV).$(CRYPTODEV_SUFFIX)
+CRYPTODEV_DIR		:= $(BUILDDIR)/$(CRYPTODEV)
+CRYPTODEV_LICENSE	:= GPL-2.0
+
+ifdef PTXCONF_CRYPTODEV
+$(STATEDIR)/kernel.targetinstall.post: $(STATEDIR)/cryptodev.targetinstall
+endif
+
+# ----------------------------------------------------------------------------
+# Prepare
+# ----------------------------------------------------------------------------
+
+CRYPTODEV_WRAPPER_BLACKLIST = $(KERNEL_WRAPPER_BLACKLIST)
+
+CRYPTODEV_CONF_TOOL := NO
+
+# ----------------------------------------------------------------------------
+# Compile
+# ----------------------------------------------------------------------------
+
+$(STATEDIR)/cryptodev.compile:
+	@$(call targetinfo)
+	$(KERNEL_PATH) $(KERNEL_ENV) $(MAKE) $(KERNEL_MAKE_OPT) \
+		KERNEL_DIR=$(KERNEL_DIR) \
+		-C $(CRYPTODEV_DIR)
+	@$(call touch)
+
+# ----------------------------------------------------------------------------
+# Install
+# ----------------------------------------------------------------------------
+
+$(STATEDIR)/cryptodev.install:
+	@$(call targetinfo)
+	@$(call touch)
+
+# ----------------------------------------------------------------------------
+# Target-Install
+# ----------------------------------------------------------------------------
+
+$(STATEDIR)/cryptodev.targetinstall:
+	@$(call targetinfo)
+	$(KERNEL_PATH) $(KERNEL_ENV) $(MAKE) $(KERNEL_MAKE_OPT) \
+		KERNEL_DIR=$(KERNEL_DIR) \
+		DESTDIR=$(SYSROOT) \
+		prefix=/usr \
+		-C $(CRYPTODEV_DIR) \
+		install
+	@$(call touch)
+
+# vim: syntax=make
-- 
2.22.0


_______________________________________________
ptxdist mailing list
ptxdist@pengutronix.de

  reply	other threads:[~2019-08-13  8:00 UTC|newest]

Thread overview: 8+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-08-12 13:19 [ptxdist] [PATCH v2 0/3] cryptodev Ladislav Michl
2019-08-12 13:19 ` [ptxdist] [PATCH v2 1/3] cryptodev: new package Ladislav Michl
2019-08-13  7:33   ` Michael Olbrich
2019-08-13  8:00     ` Ladislav Michl [this message]
2019-08-13  8:10       ` Ladislav Michl
2019-08-13 10:31       ` Michael Olbrich
2019-08-12 13:20 ` [ptxdist] [PATCH v2 2/3] gnutls: add cryptodev support Ladislav Michl
2019-08-12 13:21 ` [ptxdist] [PATCH v2 3/3] openssl: " Ladislav Michl

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=20190813080049.GA29489@lenoch \
    --to=ladis@linux-mips.org \
    --cc=ptxdist@pengutronix.de \
    /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