All of lore.kernel.org
 help / color / mirror / Atom feed
From: Corentin Labbe <clabbe.montjoie-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
To: Ryder Lee <ryder.lee-NuS5LvNUpcJWk0Htik3J/w@public.gmane.org>
Cc: Herbert Xu
	<herbert-lOAM2aK0SrRLBo1qDEOMRrpzq4S04n8Q@public.gmane.org>,
	"David S. Miller" <davem-fT/PcQaiUtIeIZ0/mPfg9Q@public.gmane.org>,
	Matthias Brugger
	<matthias.bgg-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>,
	devicetree-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
	linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
	Sean Wang <sean.wnag-NuS5LvNUpcJWk0Htik3J/w@public.gmane.org>,
	linux-mediatek-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r@public.gmane.org,
	linux-crypto-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
	linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r@public.gmane.org
Subject: Re: [PATCH 1/2] Add crypto driver support for some MediaTek chips
Date: Fri, 2 Dec 2016 09:18:36 +0100	[thread overview]
Message-ID: <20161202081836.GA20128@Red> (raw)
In-Reply-To: <1480649205-52695-2-git-send-email-ryder.lee-NuS5LvNUpcJWk0Htik3J/w@public.gmane.org>

Hello

I have some minor comment inline

On Fri, Dec 02, 2016 at 11:26:44AM +0800, Ryder Lee wrote:
> This adds support for the MediaTek hardware accelerator on
> mt7623/mt2701/mt8521p SoC.
> 
> This driver currently implement:
> - SHA1 and SHA2 family(HMAC) hash alogrithms.
> - AES block cipher in CBC/ECB mode with 128/196/256 bits keys.

I see also a PRNG but is seems not really used.

> 
> Signed-off-by: Ryder Lee <ryder.lee-NuS5LvNUpcJWk0Htik3J/w@public.gmane.org>
> ---
>  drivers/crypto/Kconfig                 |   17 +
>  drivers/crypto/Makefile                |    1 +
>  drivers/crypto/mediatek/Makefile       |    2 +
>  drivers/crypto/mediatek/mtk-aes.c      |  734 +++++++++++++++++
>  drivers/crypto/mediatek/mtk-platform.c |  575 +++++++++++++
>  drivers/crypto/mediatek/mtk-platform.h |  230 ++++++
>  drivers/crypto/mediatek/mtk-regs.h     |  194 +++++
>  drivers/crypto/mediatek/mtk-sha.c      | 1384 ++++++++++++++++++++++++++++++++
>  8 files changed, 3137 insertions(+)
>  create mode 100644 drivers/crypto/mediatek/Makefile
>  create mode 100644 drivers/crypto/mediatek/mtk-aes.c
>  create mode 100644 drivers/crypto/mediatek/mtk-platform.c
>  create mode 100644 drivers/crypto/mediatek/mtk-platform.h
>  create mode 100644 drivers/crypto/mediatek/mtk-regs.h
>  create mode 100644 drivers/crypto/mediatek/mtk-sha.c
> 
> diff --git a/drivers/crypto/Kconfig b/drivers/crypto/Kconfig
> index 4d2b81f..5d9c803 100644
> --- a/drivers/crypto/Kconfig
> +++ b/drivers/crypto/Kconfig
> @@ -553,6 +553,23 @@ config CRYPTO_DEV_ROCKCHIP
>  	  This driver interfaces with the hardware crypto accelerator.
>  	  Supporting cbc/ecb chainmode, and aes/des/des3_ede cipher mode.
>  
> +config CRYPTO_DEV_MEDIATEK
> +	tristate "MediaTek's Cryptographic Engine driver"
> +	depends on ARM && ARCH_MEDIATEK
> +	select NEON
> +	select KERNEL_MODE_NEON
> +	select ARM_CRYPTO
> +	select CRYPTO_AES
> +	select CRYPTO_BLKCIPHER
> +	select CRYPTO_SHA1_ARM_NEON
> +	select CRYPTO_SHA256_ARM
> +	select CRYPTO_SHA512_ARM
> +	select CRYPTO_HMAC

Why do you select accelerated algos ?
Adding COMPILE_TEST could be helpfull also.

[...]
> +
> +#include <linux/dma-mapping.h>
> +#include <linux/scatterlist.h>
> +#include <crypto/scatterwalk.h>
> +#include <crypto/algapi.h>
> +#include <crypto/aes.h>
> +#include "mtk-platform.h"
> +#include "mtk-regs.h"
> +

Sort headers in alphabetical order

[...]
> +
> +	mtk_aes_unregister_algs();
> +	mtk_aes_record_free(cryp);
> +}
> +EXPORT_SYMBOL(mtk_cipher_alg_release);

Why not EXPORT_SYMBOL_GPL ?
Furthermore do you really need it to be exported ?

[...]
> +
> +#include <linux/init.h>
> +#include <linux/module.h>
> +#include <linux/kernel.h>
> +#include <linux/mfd/syscon.h>
> +#include <linux/pm_runtime.h>
> +#include <linux/clk.h>
> +#include <linux/platform_device.h>
> +#include "mtk-platform.h"
> +#include "mtk-regs.h"
> +

Sort headers in alphabetical order

[...]
> +
> +static void mtk_prng_reseed(struct mtk_cryp *cryp)
> +{
> +	/* 8 words to seed the PRNG to provide IVs */
> +	void __iomem *base = cryp->base;
> +	const u32 prng_key[8] = {0x48c24cfd, 0x6c07f742,
> +				0xaee75681, 0x0f27c239,
> +				0x79947198, 0xe2991275,
> +				0x21ac3c7c, 0xd008c4b4};

Why do you seed with thoses constant ?

[...]
> +
> +static int mtk_accelerator_init(struct mtk_cryp *cryp)
> +{
> +	int i, err;
> +
> +	/* Initialize advanced interrupt controller(AIC) */
> +	for (i = 0; i < 5; i++) {

I see this 5 for interrupt away, so perhaps a define could be used

[...]

here 

> +	for (i = 0; i < 5; i++) {
> +		cryp->irq[i] = platform_get_irq(pdev, i);
> +		if (cryp->irq[i] < 0) {
> +			dev_err(cryp->dev, "no IRQ:%d resource info\n", i);
> +			return -ENXIO;
> +		}
> +	}
[...]

> +#ifndef __MTK_PLATFORM_H_
> +#define __MTK_PLATFORM_H_
> +
> +#include <linux/crypto.h>
> +#include <crypto/internal/hash.h>
> +#include <linux/interrupt.h>

Sort headers in alphabetical order

[...]
> +#define MTK_DESC_FIRST		BIT(23)
> +#define MTK_DESC_BUF_LEN(x)	((x) & 0x1ffff)
> +#define MTK_DESC_CT_LEN(x)	(((x) & 0xff) << 24)
> +
> +#define WORD(x)			((x) >> 2)

dangerous and ambigous define

[...]
> +
> +#include <linux/dma-mapping.h>
> +#include <linux/scatterlist.h>
> +#include <linux/crypto.h>
> +#include <crypto/scatterwalk.h>
> +#include <crypto/algapi.h>
> +#include <crypto/sha.h>
> +#include <crypto/internal/hash.h>

Sort headers in alphabetical order
[...]

Generally more function comment could be helpfull.

Regards
--
To unsubscribe from this list: send the line "unsubscribe devicetree" in
the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

WARNING: multiple messages have this Message-ID (diff)
From: clabbe.montjoie@gmail.com (Corentin Labbe)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH 1/2] Add crypto driver support for some MediaTek chips
Date: Fri, 2 Dec 2016 09:18:36 +0100	[thread overview]
Message-ID: <20161202081836.GA20128@Red> (raw)
In-Reply-To: <1480649205-52695-2-git-send-email-ryder.lee@mediatek.com>

Hello

I have some minor comment inline

On Fri, Dec 02, 2016 at 11:26:44AM +0800, Ryder Lee wrote:
> This adds support for the MediaTek hardware accelerator on
> mt7623/mt2701/mt8521p SoC.
> 
> This driver currently implement:
> - SHA1 and SHA2 family(HMAC) hash alogrithms.
> - AES block cipher in CBC/ECB mode with 128/196/256 bits keys.

I see also a PRNG but is seems not really used.

> 
> Signed-off-by: Ryder Lee <ryder.lee@mediatek.com>
> ---
>  drivers/crypto/Kconfig                 |   17 +
>  drivers/crypto/Makefile                |    1 +
>  drivers/crypto/mediatek/Makefile       |    2 +
>  drivers/crypto/mediatek/mtk-aes.c      |  734 +++++++++++++++++
>  drivers/crypto/mediatek/mtk-platform.c |  575 +++++++++++++
>  drivers/crypto/mediatek/mtk-platform.h |  230 ++++++
>  drivers/crypto/mediatek/mtk-regs.h     |  194 +++++
>  drivers/crypto/mediatek/mtk-sha.c      | 1384 ++++++++++++++++++++++++++++++++
>  8 files changed, 3137 insertions(+)
>  create mode 100644 drivers/crypto/mediatek/Makefile
>  create mode 100644 drivers/crypto/mediatek/mtk-aes.c
>  create mode 100644 drivers/crypto/mediatek/mtk-platform.c
>  create mode 100644 drivers/crypto/mediatek/mtk-platform.h
>  create mode 100644 drivers/crypto/mediatek/mtk-regs.h
>  create mode 100644 drivers/crypto/mediatek/mtk-sha.c
> 
> diff --git a/drivers/crypto/Kconfig b/drivers/crypto/Kconfig
> index 4d2b81f..5d9c803 100644
> --- a/drivers/crypto/Kconfig
> +++ b/drivers/crypto/Kconfig
> @@ -553,6 +553,23 @@ config CRYPTO_DEV_ROCKCHIP
>  	  This driver interfaces with the hardware crypto accelerator.
>  	  Supporting cbc/ecb chainmode, and aes/des/des3_ede cipher mode.
>  
> +config CRYPTO_DEV_MEDIATEK
> +	tristate "MediaTek's Cryptographic Engine driver"
> +	depends on ARM && ARCH_MEDIATEK
> +	select NEON
> +	select KERNEL_MODE_NEON
> +	select ARM_CRYPTO
> +	select CRYPTO_AES
> +	select CRYPTO_BLKCIPHER
> +	select CRYPTO_SHA1_ARM_NEON
> +	select CRYPTO_SHA256_ARM
> +	select CRYPTO_SHA512_ARM
> +	select CRYPTO_HMAC

Why do you select accelerated algos ?
Adding COMPILE_TEST could be helpfull also.

[...]
> +
> +#include <linux/dma-mapping.h>
> +#include <linux/scatterlist.h>
> +#include <crypto/scatterwalk.h>
> +#include <crypto/algapi.h>
> +#include <crypto/aes.h>
> +#include "mtk-platform.h"
> +#include "mtk-regs.h"
> +

Sort headers in alphabetical order

[...]
> +
> +	mtk_aes_unregister_algs();
> +	mtk_aes_record_free(cryp);
> +}
> +EXPORT_SYMBOL(mtk_cipher_alg_release);

Why not EXPORT_SYMBOL_GPL ?
Furthermore do you really need it to be exported ?

[...]
> +
> +#include <linux/init.h>
> +#include <linux/module.h>
> +#include <linux/kernel.h>
> +#include <linux/mfd/syscon.h>
> +#include <linux/pm_runtime.h>
> +#include <linux/clk.h>
> +#include <linux/platform_device.h>
> +#include "mtk-platform.h"
> +#include "mtk-regs.h"
> +

Sort headers in alphabetical order

[...]
> +
> +static void mtk_prng_reseed(struct mtk_cryp *cryp)
> +{
> +	/* 8 words to seed the PRNG to provide IVs */
> +	void __iomem *base = cryp->base;
> +	const u32 prng_key[8] = {0x48c24cfd, 0x6c07f742,
> +				0xaee75681, 0x0f27c239,
> +				0x79947198, 0xe2991275,
> +				0x21ac3c7c, 0xd008c4b4};

Why do you seed with thoses constant ?

[...]
> +
> +static int mtk_accelerator_init(struct mtk_cryp *cryp)
> +{
> +	int i, err;
> +
> +	/* Initialize advanced interrupt controller(AIC) */
> +	for (i = 0; i < 5; i++) {

I see this 5 for interrupt away, so perhaps a define could be used

[...]

here 

> +	for (i = 0; i < 5; i++) {
> +		cryp->irq[i] = platform_get_irq(pdev, i);
> +		if (cryp->irq[i] < 0) {
> +			dev_err(cryp->dev, "no IRQ:%d resource info\n", i);
> +			return -ENXIO;
> +		}
> +	}
[...]

> +#ifndef __MTK_PLATFORM_H_
> +#define __MTK_PLATFORM_H_
> +
> +#include <linux/crypto.h>
> +#include <crypto/internal/hash.h>
> +#include <linux/interrupt.h>

Sort headers in alphabetical order

[...]
> +#define MTK_DESC_FIRST		BIT(23)
> +#define MTK_DESC_BUF_LEN(x)	((x) & 0x1ffff)
> +#define MTK_DESC_CT_LEN(x)	(((x) & 0xff) << 24)
> +
> +#define WORD(x)			((x) >> 2)

dangerous and ambigous define

[...]
> +
> +#include <linux/dma-mapping.h>
> +#include <linux/scatterlist.h>
> +#include <linux/crypto.h>
> +#include <crypto/scatterwalk.h>
> +#include <crypto/algapi.h>
> +#include <crypto/sha.h>
> +#include <crypto/internal/hash.h>

Sort headers in alphabetical order
[...]

Generally more function comment could be helpfull.

Regards

WARNING: multiple messages have this Message-ID (diff)
From: Corentin Labbe <clabbe.montjoie@gmail.com>
To: Ryder Lee <ryder.lee@mediatek.com>
Cc: Herbert Xu <herbert@gondor.apana.org.au>,
	"David S. Miller" <davem@davemloft.net>,
	Matthias Brugger <matthias.bgg@gmail.com>,
	devicetree@vger.kernel.org, linux-kernel@vger.kernel.org,
	Sean Wang <sean.wnag@mediatek.com>,
	linux-mediatek@lists.infradead.org, linux-crypto@vger.kernel.org,
	linux-arm-kernel@lists.infradead.org
Subject: Re: [PATCH 1/2] Add crypto driver support for some MediaTek chips
Date: Fri, 2 Dec 2016 09:18:36 +0100	[thread overview]
Message-ID: <20161202081836.GA20128@Red> (raw)
In-Reply-To: <1480649205-52695-2-git-send-email-ryder.lee@mediatek.com>

Hello

I have some minor comment inline

On Fri, Dec 02, 2016 at 11:26:44AM +0800, Ryder Lee wrote:
> This adds support for the MediaTek hardware accelerator on
> mt7623/mt2701/mt8521p SoC.
> 
> This driver currently implement:
> - SHA1 and SHA2 family(HMAC) hash alogrithms.
> - AES block cipher in CBC/ECB mode with 128/196/256 bits keys.

I see also a PRNG but is seems not really used.

> 
> Signed-off-by: Ryder Lee <ryder.lee@mediatek.com>
> ---
>  drivers/crypto/Kconfig                 |   17 +
>  drivers/crypto/Makefile                |    1 +
>  drivers/crypto/mediatek/Makefile       |    2 +
>  drivers/crypto/mediatek/mtk-aes.c      |  734 +++++++++++++++++
>  drivers/crypto/mediatek/mtk-platform.c |  575 +++++++++++++
>  drivers/crypto/mediatek/mtk-platform.h |  230 ++++++
>  drivers/crypto/mediatek/mtk-regs.h     |  194 +++++
>  drivers/crypto/mediatek/mtk-sha.c      | 1384 ++++++++++++++++++++++++++++++++
>  8 files changed, 3137 insertions(+)
>  create mode 100644 drivers/crypto/mediatek/Makefile
>  create mode 100644 drivers/crypto/mediatek/mtk-aes.c
>  create mode 100644 drivers/crypto/mediatek/mtk-platform.c
>  create mode 100644 drivers/crypto/mediatek/mtk-platform.h
>  create mode 100644 drivers/crypto/mediatek/mtk-regs.h
>  create mode 100644 drivers/crypto/mediatek/mtk-sha.c
> 
> diff --git a/drivers/crypto/Kconfig b/drivers/crypto/Kconfig
> index 4d2b81f..5d9c803 100644
> --- a/drivers/crypto/Kconfig
> +++ b/drivers/crypto/Kconfig
> @@ -553,6 +553,23 @@ config CRYPTO_DEV_ROCKCHIP
>  	  This driver interfaces with the hardware crypto accelerator.
>  	  Supporting cbc/ecb chainmode, and aes/des/des3_ede cipher mode.
>  
> +config CRYPTO_DEV_MEDIATEK
> +	tristate "MediaTek's Cryptographic Engine driver"
> +	depends on ARM && ARCH_MEDIATEK
> +	select NEON
> +	select KERNEL_MODE_NEON
> +	select ARM_CRYPTO
> +	select CRYPTO_AES
> +	select CRYPTO_BLKCIPHER
> +	select CRYPTO_SHA1_ARM_NEON
> +	select CRYPTO_SHA256_ARM
> +	select CRYPTO_SHA512_ARM
> +	select CRYPTO_HMAC

Why do you select accelerated algos ?
Adding COMPILE_TEST could be helpfull also.

[...]
> +
> +#include <linux/dma-mapping.h>
> +#include <linux/scatterlist.h>
> +#include <crypto/scatterwalk.h>
> +#include <crypto/algapi.h>
> +#include <crypto/aes.h>
> +#include "mtk-platform.h"
> +#include "mtk-regs.h"
> +

Sort headers in alphabetical order

[...]
> +
> +	mtk_aes_unregister_algs();
> +	mtk_aes_record_free(cryp);
> +}
> +EXPORT_SYMBOL(mtk_cipher_alg_release);

Why not EXPORT_SYMBOL_GPL ?
Furthermore do you really need it to be exported ?

[...]
> +
> +#include <linux/init.h>
> +#include <linux/module.h>
> +#include <linux/kernel.h>
> +#include <linux/mfd/syscon.h>
> +#include <linux/pm_runtime.h>
> +#include <linux/clk.h>
> +#include <linux/platform_device.h>
> +#include "mtk-platform.h"
> +#include "mtk-regs.h"
> +

Sort headers in alphabetical order

[...]
> +
> +static void mtk_prng_reseed(struct mtk_cryp *cryp)
> +{
> +	/* 8 words to seed the PRNG to provide IVs */
> +	void __iomem *base = cryp->base;
> +	const u32 prng_key[8] = {0x48c24cfd, 0x6c07f742,
> +				0xaee75681, 0x0f27c239,
> +				0x79947198, 0xe2991275,
> +				0x21ac3c7c, 0xd008c4b4};

Why do you seed with thoses constant ?

[...]
> +
> +static int mtk_accelerator_init(struct mtk_cryp *cryp)
> +{
> +	int i, err;
> +
> +	/* Initialize advanced interrupt controller(AIC) */
> +	for (i = 0; i < 5; i++) {

I see this 5 for interrupt away, so perhaps a define could be used

[...]

here 

> +	for (i = 0; i < 5; i++) {
> +		cryp->irq[i] = platform_get_irq(pdev, i);
> +		if (cryp->irq[i] < 0) {
> +			dev_err(cryp->dev, "no IRQ:%d resource info\n", i);
> +			return -ENXIO;
> +		}
> +	}
[...]

> +#ifndef __MTK_PLATFORM_H_
> +#define __MTK_PLATFORM_H_
> +
> +#include <linux/crypto.h>
> +#include <crypto/internal/hash.h>
> +#include <linux/interrupt.h>

Sort headers in alphabetical order

[...]
> +#define MTK_DESC_FIRST		BIT(23)
> +#define MTK_DESC_BUF_LEN(x)	((x) & 0x1ffff)
> +#define MTK_DESC_CT_LEN(x)	(((x) & 0xff) << 24)
> +
> +#define WORD(x)			((x) >> 2)

dangerous and ambigous define

[...]
> +
> +#include <linux/dma-mapping.h>
> +#include <linux/scatterlist.h>
> +#include <linux/crypto.h>
> +#include <crypto/scatterwalk.h>
> +#include <crypto/algapi.h>
> +#include <crypto/sha.h>
> +#include <crypto/internal/hash.h>

Sort headers in alphabetical order
[...]

Generally more function comment could be helpfull.

Regards

  parent reply	other threads:[~2016-12-02  8:18 UTC|newest]

Thread overview: 20+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-12-02  3:26 [PATCH 0/2] Add MediaTek crypto acclelrator driver Ryder Lee
2016-12-02  3:26 ` Ryder Lee
2016-12-02  3:26 ` Ryder Lee
     [not found] ` <1480649205-52695-1-git-send-email-ryder.lee-NuS5LvNUpcJWk0Htik3J/w@public.gmane.org>
2016-12-02  3:26   ` [PATCH 1/2] Add crypto driver support for some MediaTek chips Ryder Lee
2016-12-02  3:26     ` Ryder Lee
2016-12-02  3:26     ` Ryder Lee
2016-12-02  3:26     ` Ryder Lee
     [not found]     ` <1480649205-52695-2-git-send-email-ryder.lee-NuS5LvNUpcJWk0Htik3J/w@public.gmane.org>
2016-12-02  8:18       ` Corentin Labbe [this message]
2016-12-02  8:18         ` Corentin Labbe
2016-12-02  8:18         ` Corentin Labbe
2016-12-02 11:39         ` mtk09577
2016-12-02 11:39           ` mtk09577
2016-12-02 11:39           ` mtk09577
2016-12-02 12:11         ` Ryder Lee
2016-12-02 12:11           ` Ryder Lee
2016-12-02 12:11           ` Ryder Lee
2016-12-02  3:26   ` [PATCH 2/2] crypto: mediatek - add DT bindings documentation Ryder Lee
2016-12-02  3:26     ` Ryder Lee
2016-12-02  3:26     ` Ryder Lee
2016-12-02  3:26     ` Ryder Lee

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=20161202081836.GA20128@Red \
    --to=clabbe.montjoie-re5jqeeqqe8avxtiumwx3w@public.gmane.org \
    --cc=davem-fT/PcQaiUtIeIZ0/mPfg9Q@public.gmane.org \
    --cc=devicetree-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
    --cc=herbert-lOAM2aK0SrRLBo1qDEOMRrpzq4S04n8Q@public.gmane.org \
    --cc=linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r@public.gmane.org \
    --cc=linux-crypto-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
    --cc=linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
    --cc=linux-mediatek-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r@public.gmane.org \
    --cc=matthias.bgg-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org \
    --cc=ryder.lee-NuS5LvNUpcJWk0Htik3J/w@public.gmane.org \
    --cc=sean.wnag-NuS5LvNUpcJWk0Htik3J/w@public.gmane.org \
    /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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.