linux-crypto.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH v2 0/3] crypto: sun4i-ss: fix SHA1 on A33 SecuritySystem
@ 2019-11-20 15:28 Corentin Labbe
  2019-11-20 15:28 ` [PATCH v2 1/3] dt-bindings: crypto: add new compatible for A33 SS Corentin Labbe
                   ` (3 more replies)
  0 siblings, 4 replies; 8+ messages in thread
From: Corentin Labbe @ 2019-11-20 15:28 UTC (permalink / raw)
  To: davem, herbert, mark.rutland, mripard, robh+dt, wens
  Cc: devicetree, linux-arm-kernel, linux-crypto, linux-kernel,
	linux-sunxi, Corentin Labbe

Thanks to Igor Pecovnik, I have now in my kernelCI lab, a sun8i-a33-olinuxino.
Strange behavour, crypto selftests was failling but only for SHA1 on
this A33 SoC.

This is due to the A33 SS having a difference with all other SS, it give SHA1 digest directly in BE.
This serie handle this difference.

Changes since v1:
- removed compatible fallback

Corentin Labbe (3):
  dt-bindings: crypto: add new compatible for A33 SS
  ARM: dts: sun8i: a33: add the new SS compatible
  crypto: sun4i-ss: add the A33 variant of SS

 .../crypto/allwinner,sun4i-a10-crypto.yaml    |  2 ++
 arch/arm/boot/dts/sun8i-a33.dtsi              |  2 +-
 .../crypto/allwinner/sun4i-ss/sun4i-ss-core.c | 22 ++++++++++++++++++-
 .../crypto/allwinner/sun4i-ss/sun4i-ss-hash.c |  5 ++++-
 drivers/crypto/allwinner/sun4i-ss/sun4i-ss.h  |  9 ++++++++
 5 files changed, 37 insertions(+), 3 deletions(-)

-- 
2.23.0


^ permalink raw reply	[flat|nested] 8+ messages in thread

* [PATCH v2 1/3] dt-bindings: crypto: add new compatible for A33 SS
  2019-11-20 15:28 [PATCH v2 0/3] crypto: sun4i-ss: fix SHA1 on A33 SecuritySystem Corentin Labbe
@ 2019-11-20 15:28 ` Corentin Labbe
  2019-12-04 16:18   ` Rob Herring
  2019-11-20 15:28 ` [PATCH v2 2/3] ARM: dts: sun8i: a33: add the new SS compatible Corentin Labbe
                   ` (2 subsequent siblings)
  3 siblings, 1 reply; 8+ messages in thread
From: Corentin Labbe @ 2019-11-20 15:28 UTC (permalink / raw)
  To: davem, herbert, mark.rutland, mripard, robh+dt, wens
  Cc: devicetree, linux-arm-kernel, linux-crypto, linux-kernel,
	linux-sunxi, Corentin Labbe

The A33 SS has a difference with all other SS, it give SHA1 digest
directly in BE.
This difference need to be handlded by the driver and so need a new
compatible.

Signed-off-by: Corentin Labbe <clabbe.montjoie@gmail.com>
---
 .../devicetree/bindings/crypto/allwinner,sun4i-a10-crypto.yaml  | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/Documentation/devicetree/bindings/crypto/allwinner,sun4i-a10-crypto.yaml b/Documentation/devicetree/bindings/crypto/allwinner,sun4i-a10-crypto.yaml
index 80b3e7350a73..5fc88fb3a91b 100644
--- a/Documentation/devicetree/bindings/crypto/allwinner,sun4i-a10-crypto.yaml
+++ b/Documentation/devicetree/bindings/crypto/allwinner,sun4i-a10-crypto.yaml
@@ -23,6 +23,8 @@ properties:
       - items:
         - const: allwinner,sun7i-a20-crypto
         - const: allwinner,sun4i-a10-crypto
+      - items:
+        - const: allwinner,sun8i-a33-crypto
 
   reg:
     maxItems: 1
-- 
2.23.0


^ permalink raw reply	[flat|nested] 8+ messages in thread

* [PATCH v2 2/3] ARM: dts: sun8i: a33: add the new SS compatible
  2019-11-20 15:28 [PATCH v2 0/3] crypto: sun4i-ss: fix SHA1 on A33 SecuritySystem Corentin Labbe
  2019-11-20 15:28 ` [PATCH v2 1/3] dt-bindings: crypto: add new compatible for A33 SS Corentin Labbe
@ 2019-11-20 15:28 ` Corentin Labbe
  2019-11-20 15:28 ` [PATCH v2 3/3] crypto: sun4i-ss: add the A33 variant of SS Corentin Labbe
  2020-03-12  5:39 ` [linux-sunxi] [PATCH v2 0/3] crypto: sun4i-ss: fix SHA1 on A33 SecuritySystem Chen-Yu Tsai
  3 siblings, 0 replies; 8+ messages in thread
From: Corentin Labbe @ 2019-11-20 15:28 UTC (permalink / raw)
  To: davem, herbert, mark.rutland, mripard, robh+dt, wens
  Cc: devicetree, linux-arm-kernel, linux-crypto, linux-kernel,
	linux-sunxi, Corentin Labbe

Add the new A33 SS compatible to the crypto node.

Signed-off-by: Corentin Labbe <clabbe.montjoie@gmail.com>
---
 arch/arm/boot/dts/sun8i-a33.dtsi | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/arch/arm/boot/dts/sun8i-a33.dtsi b/arch/arm/boot/dts/sun8i-a33.dtsi
index 1532a0e59af4..a2c37adacf77 100644
--- a/arch/arm/boot/dts/sun8i-a33.dtsi
+++ b/arch/arm/boot/dts/sun8i-a33.dtsi
@@ -215,7 +215,7 @@
 		};
 
 		crypto: crypto-engine@1c15000 {
-			compatible = "allwinner,sun4i-a10-crypto";
+			compatible = "allwinner,sun8i-a33-crypto";
 			reg = <0x01c15000 0x1000>;
 			interrupts = <GIC_SPI 80 IRQ_TYPE_LEVEL_HIGH>;
 			clocks = <&ccu CLK_BUS_SS>, <&ccu CLK_SS>;
-- 
2.23.0


^ permalink raw reply	[flat|nested] 8+ messages in thread

* [PATCH v2 3/3] crypto: sun4i-ss: add the A33 variant of SS
  2019-11-20 15:28 [PATCH v2 0/3] crypto: sun4i-ss: fix SHA1 on A33 SecuritySystem Corentin Labbe
  2019-11-20 15:28 ` [PATCH v2 1/3] dt-bindings: crypto: add new compatible for A33 SS Corentin Labbe
  2019-11-20 15:28 ` [PATCH v2 2/3] ARM: dts: sun8i: a33: add the new SS compatible Corentin Labbe
@ 2019-11-20 15:28 ` Corentin Labbe
  2019-11-22 12:53   ` Maxime Ripard
  2019-12-11  9:35   ` Herbert Xu
  2020-03-12  5:39 ` [linux-sunxi] [PATCH v2 0/3] crypto: sun4i-ss: fix SHA1 on A33 SecuritySystem Chen-Yu Tsai
  3 siblings, 2 replies; 8+ messages in thread
From: Corentin Labbe @ 2019-11-20 15:28 UTC (permalink / raw)
  To: davem, herbert, mark.rutland, mripard, robh+dt, wens
  Cc: devicetree, linux-arm-kernel, linux-crypto, linux-kernel,
	linux-sunxi, Corentin Labbe

The A33 SS has a difference with all other SS, it give SHA1 digest
directly in BE.
So this patch adds variant support in sun4i-ss.

Fixes: 6298e948215f ("crypto: sunxi-ss - Add Allwinner Security System crypto accelerator")
Signed-off-by: Corentin Labbe <clabbe.montjoie@gmail.com>
---
 .../crypto/allwinner/sun4i-ss/sun4i-ss-core.c | 22 ++++++++++++++++++-
 .../crypto/allwinner/sun4i-ss/sun4i-ss-hash.c |  5 ++++-
 drivers/crypto/allwinner/sun4i-ss/sun4i-ss.h  |  9 ++++++++
 3 files changed, 34 insertions(+), 2 deletions(-)

diff --git a/drivers/crypto/allwinner/sun4i-ss/sun4i-ss-core.c b/drivers/crypto/allwinner/sun4i-ss/sun4i-ss-core.c
index 814cd12149a9..d35a05843c22 100644
--- a/drivers/crypto/allwinner/sun4i-ss/sun4i-ss-core.c
+++ b/drivers/crypto/allwinner/sun4i-ss/sun4i-ss-core.c
@@ -13,6 +13,7 @@
 #include <linux/io.h>
 #include <linux/module.h>
 #include <linux/of.h>
+#include <linux/of_device.h>
 #include <linux/platform_device.h>
 #include <crypto/scatterwalk.h>
 #include <linux/scatterlist.h>
@@ -22,6 +23,14 @@
 
 #include "sun4i-ss.h"
 
+static const struct ss_variant ss_a10_variant = {
+	.sha1_in_be = false,
+};
+
+static const struct ss_variant ss_a33_variant = {
+	.sha1_in_be = true,
+};
+
 static struct sun4i_ss_alg_template ss_algs[] = {
 {       .type = CRYPTO_ALG_TYPE_AHASH,
 	.mode = SS_OP_MD5,
@@ -323,6 +332,12 @@ static int sun4i_ss_probe(struct platform_device *pdev)
 		return PTR_ERR(ss->base);
 	}
 
+	ss->variant = of_device_get_match_data(&pdev->dev);
+	if (!ss->variant) {
+		dev_err(&pdev->dev, "Missing Security System variant\n");
+		return -EINVAL;
+	}
+
 	ss->ssclk = devm_clk_get(&pdev->dev, "mod");
 	if (IS_ERR(ss->ssclk)) {
 		err = PTR_ERR(ss->ssclk);
@@ -484,7 +499,12 @@ static int sun4i_ss_remove(struct platform_device *pdev)
 }
 
 static const struct of_device_id a20ss_crypto_of_match_table[] = {
-	{ .compatible = "allwinner,sun4i-a10-crypto" },
+	{ .compatible = "allwinner,sun4i-a10-crypto",
+	  .data = &ss_a10_variant
+	},
+	{ .compatible = "allwinner,sun8i-a33-crypto",
+	  .data = &ss_a33_variant
+	},
 	{}
 };
 MODULE_DEVICE_TABLE(of, a20ss_crypto_of_match_table);
diff --git a/drivers/crypto/allwinner/sun4i-ss/sun4i-ss-hash.c b/drivers/crypto/allwinner/sun4i-ss/sun4i-ss-hash.c
index 91cf58db3845..c791d6935c65 100644
--- a/drivers/crypto/allwinner/sun4i-ss/sun4i-ss-hash.c
+++ b/drivers/crypto/allwinner/sun4i-ss/sun4i-ss-hash.c
@@ -478,7 +478,10 @@ static int sun4i_hash(struct ahash_request *areq)
 	/* Get the hash from the device */
 	if (op->mode == SS_OP_SHA1) {
 		for (i = 0; i < 5; i++) {
-			v = cpu_to_be32(readl(ss->base + SS_MD0 + i * 4));
+			if (ss->variant->sha1_in_be)
+				v = cpu_to_le32(readl(ss->base + SS_MD0 + i * 4));
+			else
+				v = cpu_to_be32(readl(ss->base + SS_MD0 + i * 4));
 			memcpy(areq->result + i * 4, &v, 4);
 		}
 	} else {
diff --git a/drivers/crypto/allwinner/sun4i-ss/sun4i-ss.h b/drivers/crypto/allwinner/sun4i-ss/sun4i-ss.h
index 60425ac75d90..2b4c6333eb67 100644
--- a/drivers/crypto/allwinner/sun4i-ss/sun4i-ss.h
+++ b/drivers/crypto/allwinner/sun4i-ss/sun4i-ss.h
@@ -131,7 +131,16 @@
 #define SS_SEED_LEN 192
 #define SS_DATA_LEN 160
 
+/*
+ * struct ss_variant - Describe SS hardware variant
+ * @sha1_in_be:		The SHA1 digest is given by SS in BE, and so need to be inverted.
+ */
+struct ss_variant {
+	bool sha1_in_be;
+};
+
 struct sun4i_ss_ctx {
+	const struct ss_variant *variant;
 	void __iomem *base;
 	int irq;
 	struct clk *busclk;
-- 
2.23.0


^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [PATCH v2 3/3] crypto: sun4i-ss: add the A33 variant of SS
  2019-11-20 15:28 ` [PATCH v2 3/3] crypto: sun4i-ss: add the A33 variant of SS Corentin Labbe
@ 2019-11-22 12:53   ` Maxime Ripard
  2019-12-11  9:35   ` Herbert Xu
  1 sibling, 0 replies; 8+ messages in thread
From: Maxime Ripard @ 2019-11-22 12:53 UTC (permalink / raw)
  To: Corentin Labbe
  Cc: davem, herbert, mark.rutland, mripard, robh+dt, wens, devicetree,
	linux-arm-kernel, linux-crypto, linux-kernel, linux-sunxi

On Wed, Nov 20, 2019 at 04:28:33PM +0100, Corentin Labbe wrote:
> The A33 SS has a difference with all other SS, it give SHA1 digest
> directly in BE.
> So this patch adds variant support in sun4i-ss.
>
> Fixes: 6298e948215f ("crypto: sunxi-ss - Add Allwinner Security System crypto accelerator")
> Signed-off-by: Corentin Labbe <clabbe.montjoie@gmail.com>

Acked-by: Maxime Ripard <mripard@kernel.org>

I'll apply the DT patches once Herbert will have merged this patch.

Thanks!
Maxime

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [PATCH v2 1/3] dt-bindings: crypto: add new compatible for A33 SS
  2019-11-20 15:28 ` [PATCH v2 1/3] dt-bindings: crypto: add new compatible for A33 SS Corentin Labbe
@ 2019-12-04 16:18   ` Rob Herring
  0 siblings, 0 replies; 8+ messages in thread
From: Rob Herring @ 2019-12-04 16:18 UTC (permalink / raw)
  To: Corentin Labbe
  Cc: davem, herbert, mark.rutland, mripard, robh+dt, wens, devicetree,
	linux-arm-kernel, linux-crypto, linux-kernel, linux-sunxi,
	Corentin Labbe

On Wed, 20 Nov 2019 16:28:31 +0100, Corentin Labbe wrote:
> The A33 SS has a difference with all other SS, it give SHA1 digest
> directly in BE.
> This difference need to be handlded by the driver and so need a new
> compatible.
> 
> Signed-off-by: Corentin Labbe <clabbe.montjoie@gmail.com>
> ---
>  .../devicetree/bindings/crypto/allwinner,sun4i-a10-crypto.yaml  | 2 ++
>  1 file changed, 2 insertions(+)
> 

Acked-by: Rob Herring <robh@kernel.org>

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [PATCH v2 3/3] crypto: sun4i-ss: add the A33 variant of SS
  2019-11-20 15:28 ` [PATCH v2 3/3] crypto: sun4i-ss: add the A33 variant of SS Corentin Labbe
  2019-11-22 12:53   ` Maxime Ripard
@ 2019-12-11  9:35   ` Herbert Xu
  1 sibling, 0 replies; 8+ messages in thread
From: Herbert Xu @ 2019-12-11  9:35 UTC (permalink / raw)
  To: Corentin Labbe
  Cc: davem, mark.rutland, mripard, robh+dt, wens, devicetree,
	linux-arm-kernel, linux-crypto, linux-kernel, linux-sunxi

On Wed, Nov 20, 2019 at 04:28:33PM +0100, Corentin Labbe wrote:
> The A33 SS has a difference with all other SS, it give SHA1 digest
> directly in BE.
> So this patch adds variant support in sun4i-ss.
> 
> Fixes: 6298e948215f ("crypto: sunxi-ss - Add Allwinner Security System crypto accelerator")
> Signed-off-by: Corentin Labbe <clabbe.montjoie@gmail.com>
> ---
>  .../crypto/allwinner/sun4i-ss/sun4i-ss-core.c | 22 ++++++++++++++++++-
>  .../crypto/allwinner/sun4i-ss/sun4i-ss-hash.c |  5 ++++-
>  drivers/crypto/allwinner/sun4i-ss/sun4i-ss.h  |  9 ++++++++
>  3 files changed, 34 insertions(+), 2 deletions(-)

Patch applied.  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

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [linux-sunxi] [PATCH v2 0/3] crypto: sun4i-ss: fix SHA1 on A33 SecuritySystem
  2019-11-20 15:28 [PATCH v2 0/3] crypto: sun4i-ss: fix SHA1 on A33 SecuritySystem Corentin Labbe
                   ` (2 preceding siblings ...)
  2019-11-20 15:28 ` [PATCH v2 3/3] crypto: sun4i-ss: add the A33 variant of SS Corentin Labbe
@ 2020-03-12  5:39 ` Chen-Yu Tsai
  3 siblings, 0 replies; 8+ messages in thread
From: Chen-Yu Tsai @ 2020-03-12  5:39 UTC (permalink / raw)
  To: LABBE Corentin
  Cc: David Miller, Herbert Xu, Mark Rutland, Maxime Ripard,
	Rob Herring, devicetree, linux-arm-kernel, linux-crypto,
	linux-kernel, linux-sunxi

On Wed, Nov 20, 2019 at 11:28 PM Corentin Labbe
<clabbe.montjoie@gmail.com> wrote:
>
> Thanks to Igor Pecovnik, I have now in my kernelCI lab, a sun8i-a33-olinuxino.
> Strange behavour, crypto selftests was failling but only for SHA1 on
> this A33 SoC.
>
> This is due to the A33 SS having a difference with all other SS, it give SHA1 digest directly in BE.
> This serie handle this difference.
>
> Changes since v1:
> - removed compatible fallback
>
> Corentin Labbe (3):
>   dt-bindings: crypto: add new compatible for A33 SS
>   ARM: dts: sun8i: a33: add the new SS compatible

Merged these two as fixes for v5.6, as the driver changes made it in v5.6-rc1.
Not sure if they will be accepted though.

ChenYu

>   crypto: sun4i-ss: add the A33 variant of SS
>
>  .../crypto/allwinner,sun4i-a10-crypto.yaml    |  2 ++
>  arch/arm/boot/dts/sun8i-a33.dtsi              |  2 +-
>  .../crypto/allwinner/sun4i-ss/sun4i-ss-core.c | 22 ++++++++++++++++++-
>  .../crypto/allwinner/sun4i-ss/sun4i-ss-hash.c |  5 ++++-
>  drivers/crypto/allwinner/sun4i-ss/sun4i-ss.h  |  9 ++++++++
>  5 files changed, 37 insertions(+), 3 deletions(-)
>
> --
> 2.23.0
>
> --
> You received this message because you are subscribed to the Google Groups "linux-sunxi" group.
> To unsubscribe from this group and stop receiving emails from it, send an email to linux-sunxi+unsubscribe@googlegroups.com.
> To view this discussion on the web, visit https://groups.google.com/d/msgid/linux-sunxi/20191120152833.20443-1-clabbe.montjoie%40gmail.com.

^ permalink raw reply	[flat|nested] 8+ messages in thread

end of thread, other threads:[~2020-03-12  5:39 UTC | newest]

Thread overview: 8+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2019-11-20 15:28 [PATCH v2 0/3] crypto: sun4i-ss: fix SHA1 on A33 SecuritySystem Corentin Labbe
2019-11-20 15:28 ` [PATCH v2 1/3] dt-bindings: crypto: add new compatible for A33 SS Corentin Labbe
2019-12-04 16:18   ` Rob Herring
2019-11-20 15:28 ` [PATCH v2 2/3] ARM: dts: sun8i: a33: add the new SS compatible Corentin Labbe
2019-11-20 15:28 ` [PATCH v2 3/3] crypto: sun4i-ss: add the A33 variant of SS Corentin Labbe
2019-11-22 12:53   ` Maxime Ripard
2019-12-11  9:35   ` Herbert Xu
2020-03-12  5:39 ` [linux-sunxi] [PATCH v2 0/3] crypto: sun4i-ss: fix SHA1 on A33 SecuritySystem Chen-Yu Tsai

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).