[PATCH v4 0/3] Add Broadcom SPU Crypto Driver

STALE3478d

Revision v4 of 4 in this series.

6 messages, 4 authors, 2017-02-28 · open the first message on its own page

[PATCH v4 0/3] Add Broadcom SPU Crypto Driver

From: Rob Rice <hidden>
Date: 2017-02-03 17:56:27

Changes in v4:
- Added Rob Herring's Acked-by to patch 1/3 for bindings doc
- In response to Herbert's comment, in ahash_export() and 
  ahash_import(), only copy the hash state, not state params
  related to cipher or aead algos. 
- Noticed that hmac_offset in iproc_reqctx_s and spu_hash_params
  wasn't really used. So removed.

Changes in v3:
- rebase to 4.10-rc3 in cryptodev-2.6 tree
- in bindings doc, list all valid compatibility strings
- rename DT nodes "crypto" rather than "spu-crypto"
- include a separate DT node for each SPU hardware block. Previously,
 there was a single SPU node listing a register range for each
 hw block.
- select hash algos in Kconfig. Driver HMAC implementation uses hash
 sw algos for inner and outer hashes.
- Fix crash for AES CCM decrypt when AAD and data are both empty

Change in v2:
- select CRYPTO_DES in Kconfig

The Broadcom SPU crypto driver provides access to SPU hardware
for symmetric crypto offload. The driver supports ablkcipher,
ahash, and aead operations. The driver supports several
Broadcom SoCs with different revisions of the SPU hardware.
The driver supports SPU-M and SPU2 hardware revisions, and
a couple versions of each hw revision, each version with minor
differences.

Rob Rice (3):
  crypto: brcm: DT documentation for Broadcom SPU hardware
  crypto: brcm: Add Broadcom SPU driver
  arm64: dts: ns2: Add Broadcom SPU driver DT entry.

 .../devicetree/bindings/crypto/brcm,spu-crypto.txt |   22 +
 arch/arm64/boot/dts/broadcom/ns2.dtsi              |   24 +
 drivers/crypto/Kconfig                             |   15 +
 drivers/crypto/Makefile                            |    2 +
 drivers/crypto/bcm/Makefile                        |   15 +
 drivers/crypto/bcm/cipher.c                        | 4964 ++++++++++++++++++++
 drivers/crypto/bcm/cipher.h                        |  483 ++
 drivers/crypto/bcm/spu.c                           | 1251 +++++
 drivers/crypto/bcm/spu.h                           |  287 ++
 drivers/crypto/bcm/spu2.c                          | 1401 ++++++
 drivers/crypto/bcm/spu2.h                          |  228 +
 drivers/crypto/bcm/spum.h                          |  174 +
 drivers/crypto/bcm/util.c                          |  581 +++
 drivers/crypto/bcm/util.h                          |  116 +
 14 files changed, 9563 insertions(+)
 create mode 100644 Documentation/devicetree/bindings/crypto/brcm,spu-crypto.txt
 create mode 100644 drivers/crypto/bcm/Makefile
 create mode 100644 drivers/crypto/bcm/cipher.c
 create mode 100644 drivers/crypto/bcm/cipher.h
 create mode 100644 drivers/crypto/bcm/spu.c
 create mode 100644 drivers/crypto/bcm/spu.h
 create mode 100644 drivers/crypto/bcm/spu2.c
 create mode 100644 drivers/crypto/bcm/spu2.h
 create mode 100644 drivers/crypto/bcm/spum.h
 create mode 100644 drivers/crypto/bcm/util.c
 create mode 100644 drivers/crypto/bcm/util.h

-- 
2.1.0

[PATCH v4 1/3] crypto: brcm: DT documentation for Broadcom SPU hardware

From: Rob Rice <hidden>
Date: 2017-02-03 17:56:29

Device tree documentation for Broadcom Secure Processing Unit
(SPU) crypto hardware.

Signed-off-by: Steve Lin <redacted>
Signed-off-by: Rob Rice <redacted>
Acked-by: Rob Herring <robh@kernel.org>
---
 .../devicetree/bindings/crypto/brcm,spu-crypto.txt | 22 ++++++++++++++++++++++
 1 file changed, 22 insertions(+)
 create mode 100644 Documentation/devicetree/bindings/crypto/brcm,spu-crypto.txt
diff --git a/Documentation/devicetree/bindings/crypto/brcm,spu-crypto.txt b/Documentation/devicetree/bindings/crypto/brcm,spu-crypto.txt
new file mode 100644
index 0000000..29b6007
--- /dev/null
+++ b/Documentation/devicetree/bindings/crypto/brcm,spu-crypto.txt
@@ -0,0 +1,22 @@
+The Broadcom Secure Processing Unit (SPU) hardware supports symmetric
+cryptographic offload for Broadcom SoCs. A SoC may have multiple SPU hardware
+blocks.
+
+Required properties:
+- compatible: Should be one of the following:
+  brcm,spum-crypto - for devices with SPU-M hardware
+  brcm,spu2-crypto - for devices with SPU2 hardware
+  brcm,spu2-v2-crypto - for devices with enhanced SPU2 hardware features like SHA3
+  and Rabin Fingerprint support
+  brcm,spum-nsp-crypto - for the Northstar Plus variant of the SPU-M hardware
+
+- reg: Should contain SPU registers location and length.
+- mboxes: The mailbox channel to be used to communicate with the SPU.
+  Mailbox channels correspond to DMA rings on the device.
+
+Example:
+	crypto at 612d0000 {
+		compatible = "brcm,spum-crypto";
+		reg = <0 0x612d0000 0 0x900>;
+		mboxes = <&pdc0 0>;
+	};
-- 
2.1.0

[PATCH v4 3/3] arm64: dts: ns2: Add Broadcom SPU driver DT entry.

From: Rob Rice <hidden>
Date: 2017-02-03 17:57:34

Add Northstar2 device tree entry for Broadcom Secure Processing
Unit (SPU) crypto hardware.

Signed-off-by: Steve Lin <redacted>
Signed-off-by: Rob Rice <redacted>
---
 arch/arm64/boot/dts/broadcom/ns2.dtsi | 24 ++++++++++++++++++++++++
 1 file changed, 24 insertions(+)
diff --git a/arch/arm64/boot/dts/broadcom/ns2.dtsi b/arch/arm64/boot/dts/broadcom/ns2.dtsi
index 4fcdeca..ec1a628 100644
--- a/arch/arm64/boot/dts/broadcom/ns2.dtsi
+++ b/arch/arm64/boot/dts/broadcom/ns2.dtsi
@@ -218,6 +218,12 @@
 			brcm,use-bcm-hdr;
 		};
 
+		crypto0: crypto at 612d0000 {
+			compatible = "brcm,spum-crypto";
+			reg = <0x612d0000 0x900>;
+			mboxes = <&pdc0 0>;
+		};
+
 		pdc1: iproc-pdc1 at 612e0000 {
 			compatible = "brcm,iproc-pdc-mbox";
 			reg = <0x612e0000 0x445>;  /* PDC FS1 regs */
@@ -227,6 +233,12 @@
 			brcm,use-bcm-hdr;
 		};
 
+		crypto1: crypto at 612f0000 {
+			compatible = "brcm,spum-crypto";
+			reg = <0x612f0000 0x900>;
+			mboxes = <&pdc1 0>;
+		};
+
 		pdc2: iproc-pdc2 at 61300000 {
 			compatible = "brcm,iproc-pdc-mbox";
 			reg = <0x61300000 0x445>;  /* PDC FS2 regs */
@@ -236,6 +248,12 @@
 			brcm,use-bcm-hdr;
 		};
 
+		crypto2: crypto at 61310000 {
+			compatible = "brcm,spum-crypto";
+			reg = <0x61310000 0x900>;
+			mboxes = <&pdc2 0>;
+		};
+
 		pdc3: iproc-pdc3 at 61320000 {
 			compatible = "brcm,iproc-pdc-mbox";
 			reg = <0x61320000 0x445>;  /* PDC FS3 regs */
@@ -245,6 +263,12 @@
 			brcm,use-bcm-hdr;
 		};
 
+		crypto3: crypto at 61330000 {
+			compatible = "brcm,spum-crypto";
+			reg = <0x61330000 0x900>;
+			mboxes = <&pdc3 0>;
+		};
+
 		dma0: dma at 61360000 {
 			compatible = "arm,pl330", "arm,primecell";
 			reg = <0x61360000 0x1000>;
-- 
2.1.0

Re: [PATCH v4 0/3] Add Broadcom SPU Crypto Driver

From: Herbert Xu <herbert@gondor.apana.org.au>
Date: 2017-02-11 18:59:27

On Fri, Feb 03, 2017 at 12:55:31PM -0500, Rob Rice wrote:
Changes in v4:
- Added Rob Herring's Acked-by to patch 1/3 for bindings doc
- In response to Herbert's comment, in ahash_export() and 
  ahash_import(), only copy the hash state, not state params
  related to cipher or aead algos. 
- Noticed that hmac_offset in iproc_reqctx_s and spu_hash_params
  wasn't really used. So removed.
Patches 1-2 applied.  Thanks.
-- 
Email: Herbert Xu [off-list ref]
Home Page: http://gondor.apana.org.au/~herbert/
PGP Key: http://gondor.apana.org.au/~herbert/pubkey.txt

Re: [PATCH v4 0/3] Add Broadcom SPU Crypto Driver

From: Jon Mason <hidden>
Date: 2017-02-13 15:12:01

On Sat, Feb 11, 2017 at 5:54 AM, Herbert Xu [off-list ref] wrote:
On Fri, Feb 03, 2017 at 12:55:31PM -0500, Rob Rice wrote:
quoted
Changes in v4:
- Added Rob Herring's Acked-by to patch 1/3 for bindings doc
- In response to Herbert's comment, in ahash_export() and
  ahash_import(), only copy the hash state, not state params
  related to cipher or aead algos.
- Noticed that hmac_offset in iproc_reqctx_s and spu_hash_params
  wasn't really used. So removed.
Patches 1-2 applied.  Thanks.
Thanks Herbert!

Florian, could you please include patch #3 in your DT branch?

Thanks,
Jon
--
Email: Herbert Xu [off-list ref]
Home Page: http://gondor.apana.org.au/~herbert/
PGP Key: http://gondor.apana.org.au/~herbert/pubkey.txt

Re: [PATCH v4 0/3] Add Broadcom SPU Crypto Driver

From: Florian Fainelli <f.fainelli@gmail.com>
Date: 2017-02-28 20:26:37

On 02/13/2017 07:11 AM, Jon Mason wrote:
On Sat, Feb 11, 2017 at 5:54 AM, Herbert Xu [off-list ref] wrote:
quoted
On Fri, Feb 03, 2017 at 12:55:31PM -0500, Rob Rice wrote:
quoted
Changes in v4:
- Added Rob Herring's Acked-by to patch 1/3 for bindings doc
- In response to Herbert's comment, in ahash_export() and
  ahash_import(), only copy the hash state, not state params
  related to cipher or aead algos.
- Noticed that hmac_offset in iproc_reqctx_s and spu_hash_params
  wasn't really used. So removed.
Patches 1-2 applied.  Thanks.
Thanks Herbert!

Florian, could you please include patch #3 in your DT branch?
Applied, thanks!
-- 
Florian
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help