* [PATCH v3 0/3] Add Broadcom SPU Crypto Driver
@ 2017-01-25 16:44 Rob Rice
2017-01-25 16:44 ` [PATCH v3 1/3] crypto: brcm: DT documentation for Broadcom SPU hardware Rob Rice
` (3 more replies)
0 siblings, 4 replies; 7+ messages in thread
From: Rob Rice @ 2017-01-25 16:44 UTC (permalink / raw)
To: linux-arm-kernel
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 | 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
--
2.1.0
^ permalink raw reply [flat|nested] 7+ messages in thread
* [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 1/3] crypto: brcm: DT documentation for Broadcom SPU hardware
2017-01-25 16:44 ` [PATCH v3 1/3] crypto: brcm: DT documentation for Broadcom SPU hardware Rob Rice
@ 2017-01-30 20:18 ` Rob Herring
0 siblings, 0 replies; 7+ messages in thread
From: Rob Herring @ 2017-01-30 20:18 UTC (permalink / raw)
To: linux-arm-kernel
On Wed, Jan 25, 2017 at 11:44:47AM -0500, Rob Rice wrote:
> 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
Acked-by: Rob Herring <robh@kernel.org>
^ permalink raw reply [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
* [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
end of thread, other threads:[~2017-02-02 15:11 UTC | newest]
Thread overview: 7+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
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-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
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>
2017-02-02 14:05 ` [PATCH v3 2/3] crypto: brcm: Add Broadcom SPU driver Herbert Xu
2017-02-02 15:11 ` Rob Rice
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).