* [PATCH v3 1/3] crypto: brcm: DT documentation for Broadcom SPU hardware
2017-01-25 16:44 [PATCH v3 0/3] Add Broadcom SPU Crypto Driver Rob Rice
@ 2017-01-25 16:44 ` Rob Rice
2017-01-30 20:18 ` Rob Herring
2017-01-25 16:44 ` [PATCH v3 3/3] arm64: dts: ns2: Add Broadcom SPU driver DT entry Rob Rice
` (2 subsequent siblings)
3 siblings, 1 reply; 7+ messages in thread
From: Rob Rice @ 2017-01-25 16:44 UTC (permalink / raw)
To: linux-arm-kernel
Device tree documentation for Broadcom Secure Processing Unit
(SPU) crypto hardware.
Signed-off-by: Steve Lin <steven.lin1@broadcom.com>
Signed-off-by: Rob Rice <rob.rice@broadcom.com>
---
.../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
^ permalink raw reply related [flat|nested] 7+ messages in thread* [PATCH v3 3/3] arm64: dts: ns2: Add Broadcom SPU driver DT entry.
2017-01-25 16:44 [PATCH v3 0/3] Add Broadcom SPU Crypto Driver Rob Rice
2017-01-25 16:44 ` [PATCH v3 1/3] crypto: brcm: DT documentation for Broadcom SPU hardware Rob Rice
@ 2017-01-25 16:44 ` Rob Rice
2017-01-30 23:35 ` [PATCH v3 0/3] Add Broadcom SPU Crypto Driver Florian Fainelli
[not found] ` <1485362689-11294-3-git-send-email-rob.rice@broadcom.com>
3 siblings, 0 replies; 7+ messages in thread
From: Rob Rice @ 2017-01-25 16:44 UTC (permalink / raw)
To: linux-arm-kernel
Add Northstar2 device tree entry for Broadcom Secure Processing
Unit (SPU) crypto hardware.
Signed-off-by: Steve Lin <steven.lin1@broadcom.com>
Signed-off-by: Rob Rice <rob.rice@broadcom.com>
---
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
^ permalink raw reply related [flat|nested] 7+ messages in thread* [PATCH v3 0/3] Add Broadcom SPU Crypto Driver
2017-01-25 16:44 [PATCH v3 0/3] Add Broadcom SPU Crypto Driver Rob Rice
2017-01-25 16:44 ` [PATCH v3 1/3] crypto: brcm: DT documentation for Broadcom SPU hardware Rob Rice
2017-01-25 16:44 ` [PATCH v3 3/3] arm64: dts: ns2: Add Broadcom SPU driver DT entry Rob Rice
@ 2017-01-30 23:35 ` Florian Fainelli
[not found] ` <1485362689-11294-3-git-send-email-rob.rice@broadcom.com>
3 siblings, 0 replies; 7+ messages in thread
From: Florian Fainelli @ 2017-01-30 23:35 UTC (permalink / raw)
To: linux-arm-kernel
On 01/25/2017 08:44 AM, Rob Rice wrote:
> 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.
Herbert, can you take patches 1-2, and I will take patch 3 through my
arm64-soc git pull requests? Thanks!!
>
> 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 | 4955 ++++++++++++++++++++
> drivers/crypto/bcm/cipher.h | 475 ++
> drivers/crypto/bcm/spu.c | 1252 +++++
> drivers/crypto/bcm/spu.h | 288 ++
> drivers/crypto/bcm/spu2.c | 1402 ++++++
> 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, 9549 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
>
--
Florian
^ permalink raw reply [flat|nested] 7+ messages in thread[parent not found: <1485362689-11294-3-git-send-email-rob.rice@broadcom.com>]
* [PATCH v3 2/3] crypto: brcm: Add Broadcom SPU driver
[not found] ` <1485362689-11294-3-git-send-email-rob.rice@broadcom.com>
@ 2017-02-02 14:05 ` Herbert Xu
2017-02-02 15:11 ` Rob Rice
0 siblings, 1 reply; 7+ messages in thread
From: Herbert Xu @ 2017-02-02 14:05 UTC (permalink / raw)
To: linux-arm-kernel
On Wed, Jan 25, 2017 at 11:44:48AM -0500, Rob Rice wrote:
>
> +static int ahash_export(struct ahash_request *req, void *out)
> +{
> + const struct iproc_reqctx_s *rctx = ahash_request_ctx(req);
> +
> + memcpy(out, rctx, offsetof(struct iproc_reqctx_s, msg_buf));
> + return 0;
> +}
The reqctx data structure seems to contain a lot of info unrelated
to the hash state. Can't we get away with just copying the hash
state (incr_hash) itself?
Cheers,
--
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
^ permalink raw reply [flat|nested] 7+ messages in thread* [PATCH v3 2/3] crypto: brcm: Add Broadcom SPU driver
2017-02-02 14:05 ` [PATCH v3 2/3] crypto: brcm: Add Broadcom SPU driver Herbert Xu
@ 2017-02-02 15:11 ` Rob Rice
0 siblings, 0 replies; 7+ messages in thread
From: Rob Rice @ 2017-02-02 15:11 UTC (permalink / raw)
To: linux-arm-kernel
Herbert,
> On Feb 2, 2017, at 9:05 AM, Herbert Xu <herbert@gondor.apana.org.au> wrote:
>
> On Wed, Jan 25, 2017 at 11:44:48AM -0500, Rob Rice wrote:
>>
>> +static int ahash_export(struct ahash_request *req, void *out)
>> +{
>> + const struct iproc_reqctx_s *rctx = ahash_request_ctx(req);
>> +
>> + memcpy(out, rctx, offsetof(struct iproc_reqctx_s, msg_buf));
>> + return 0;
>> +}
>
> The reqctx data structure seems to contain a lot of info unrelated
> to the hash state. Can't we get away with just copying the hash
> state (incr_hash) itself?
Yes, I see your point. I?ll whittle the export state down to just what?s needed for the hash.
>
> Cheers,
> --
> 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
^ permalink raw reply [flat|nested] 7+ messages in thread