Start with a clean slate before dealing with bit 16 (pointer size)
of Master Configuration Register.
This fixes the case of AArch64 boot loader + AArch32 kernel, when
the boot loader might set MCFGR[PS] and kernel would fail to clear it.
Cc: <[email protected]>
Reported-by: Alison Wang <[email protected]>
Signed-off-by: Horia Geantă <[email protected]>
---
drivers/crypto/caam/ctrl.c | 5 +++--
1 file changed, 3 insertions(+), 2 deletions(-)
diff --git a/drivers/crypto/caam/ctrl.c b/drivers/crypto/caam/ctrl.c
index be62a7f482ac..0a6ca3919270 100644
--- a/drivers/crypto/caam/ctrl.c
+++ b/drivers/crypto/caam/ctrl.c
@@ -556,8 +556,9 @@ static int caam_probe(struct platform_device *pdev)
* Enable DECO watchdogs and, if this is a PHYS_ADDR_T_64BIT kernel,
* long pointers in master configuration register
*/
- clrsetbits_32(&ctrl->mcr, MCFGR_AWCACHE_MASK, MCFGR_AWCACHE_CACH |
- MCFGR_AWCACHE_BUFF | MCFGR_WDENABLE | MCFGR_LARGE_BURST |
+ clrsetbits_32(&ctrl->mcr, MCFGR_AWCACHE_MASK | MCFGR_LONG_PTR,
+ MCFGR_AWCACHE_CACH | MCFGR_AWCACHE_BUFF |
+ MCFGR_WDENABLE | MCFGR_LARGE_BURST |
(sizeof(dma_addr_t) == sizeof(u64) ? MCFGR_LONG_PTR : 0));
/*
--
2.4.4
> -----Original Message-----
> From: Horia Geantă [mailto:[email protected]]
> Sent: Monday, December 05, 2016 5:07 PM
> To: Herbert Xu <[email protected]>
> Cc: David S. Miller <[email protected]>; [email protected];
> Dan Douglass <[email protected]>; Alison Wang <[email protected]>
> Subject: [PATCH] crypto: caam - fix pointer size for AArch64 boot
> loader, AArch32 kernel
>
> Start with a clean slate before dealing with bit 16 (pointer size) of
> Master Configuration Register.
> This fixes the case of AArch64 boot loader + AArch32 kernel, when the
> boot loader might set MCFGR[PS] and kernel would fail to clear it.
>
> Cc: <[email protected]>
> Reported-by: Alison Wang <[email protected]>
> Signed-off-by: Horia Geantă <[email protected]>
> ---
> drivers/crypto/caam/ctrl.c | 5 +++--
> 1 file changed, 3 insertions(+), 2 deletions(-)
>
> diff --git a/drivers/crypto/caam/ctrl.c b/drivers/crypto/caam/ctrl.c
> index be62a7f482ac..0a6ca3919270 100644
> --- a/drivers/crypto/caam/ctrl.c
> +++ b/drivers/crypto/caam/ctrl.c
> @@ -556,8 +556,9 @@ static int caam_probe(struct platform_device *pdev)
> * Enable DECO watchdogs and, if this is a PHYS_ADDR_T_64BIT
> kernel,
> * long pointers in master configuration register
> */
> - clrsetbits_32(&ctrl->mcr, MCFGR_AWCACHE_MASK, MCFGR_AWCACHE_CACH
> |
> - MCFGR_AWCACHE_BUFF | MCFGR_WDENABLE |
> MCFGR_LARGE_BURST |
> + clrsetbits_32(&ctrl->mcr, MCFGR_AWCACHE_MASK | MCFGR_LONG_PTR,
> + MCFGR_AWCACHE_CACH | MCFGR_AWCACHE_BUFF |
> + MCFGR_WDENABLE | MCFGR_LARGE_BURST |
> (sizeof(dma_addr_t) == sizeof(u64) ? MCFGR_LONG_PTR :
> 0));
>
> /*
>
Reviewed-By: Alison Wang <[email protected]>
Best Regards,
Alison Wang
On Mon, Dec 05, 2016 at 11:06:58AM +0200, Horia Geantă wrote:
> Start with a clean slate before dealing with bit 16 (pointer size)
> of Master Configuration Register.
> This fixes the case of AArch64 boot loader + AArch32 kernel, when
> the boot loader might set MCFGR[PS] and kernel would fail to clear it.
>
> Cc: <[email protected]>
> Reported-by: Alison Wang <[email protected]>
> Signed-off-by: Horia Geantă <[email protected]>
Patch applied. Thanks.
--
Email: Herbert Xu <[email protected]>
Home Page: http://gondor.apana.org.au/~herbert/
PGP Key: http://gondor.apana.org.au/~herbert/pubkey.txt