ACK: [PATCH Vivid/Wily/Xenial SRU] UBUNTU: SAUCE: (noup) crypto: nx-842 - Mask XERS0 bit in return value
Brad Figg
brad.figg at canonical.com
Tue Jan 5 14:21:25 UTC 2016
On Mon, Jan 04, 2016 at 05:45:33PM -0700, tim.gardner at canonical.com wrote:
> From: Haren Myneni <haren at linux.vnet.ibm.com>
>
> BugLink: http://bugs.launchpad.net/bugs/1529666
>
> NX842 coprocessor sets 3rd bit in CR register with XER[S0] which is
> nothing to do with NX request. Since this bit can be set with other
> valuable return status, mast this bit.
>
> One of other bits (INITIATED, BUSY or REJECTED) will be returned for
> any given NX request.
>
> Signed-off-by: Haren Myneni <haren at us.ibm.com>
> Signed-off-by: Herbert Xu <herbert at gondor.apana.org.au>
> (cherry picked from linux-next commit 6333ed8f26cf77311088d2e2b7cf16d8480bcbb2)
> Signed-off-by: Tim Gardner <tim.gardner at canonical.com>
> ---
> arch/powerpc/include/asm/icswx.h | 1 +
> drivers/crypto/nx/nx-842-powernv.c | 12 ++++++++----
> 2 files changed, 9 insertions(+), 4 deletions(-)
>
> diff --git a/arch/powerpc/include/asm/icswx.h b/arch/powerpc/include/asm/icswx.h
> index 9f8402b..27e588f 100644
> --- a/arch/powerpc/include/asm/icswx.h
> +++ b/arch/powerpc/include/asm/icswx.h
> @@ -164,6 +164,7 @@ struct coprocessor_request_block {
> #define ICSWX_INITIATED (0x8)
> #define ICSWX_BUSY (0x4)
> #define ICSWX_REJECTED (0x2)
> +#define ICSWX_XERS0 (0x1) /* undefined or set from XERSO. */
>
> static inline int icswx(__be32 ccw, struct coprocessor_request_block *crb)
> {
> diff --git a/drivers/crypto/nx/nx-842-powernv.c b/drivers/crypto/nx/nx-842-powernv.c
> index 33b3b0a..80d5976 100644
> --- a/drivers/crypto/nx/nx-842-powernv.c
> +++ b/drivers/crypto/nx/nx-842-powernv.c
> @@ -439,6 +439,14 @@ static int nx842_powernv_function(const unsigned char *in, unsigned int inlen,
> (unsigned int)ccw,
> (unsigned int)be32_to_cpu(crb->ccw));
>
> + /*
> + * NX842 coprocessor sets 3rd bit in CR register with XER[S0].
> + * XER[S0] is the integer summary overflow bit which is nothing
> + * to do NX. Since this bit can be set with other return values,
> + * mask this bit.
> + */
> + ret &= ~ICSWX_XERS0;
> +
> switch (ret) {
> case ICSWX_INITIATED:
> ret = wait_for_csb(wmem, csb);
> @@ -451,10 +459,6 @@ static int nx842_powernv_function(const unsigned char *in, unsigned int inlen,
> pr_err_ratelimited("ICSWX rejected\n");
> ret = -EPROTO;
> break;
> - default:
> - pr_err_ratelimited("Invalid ICSWX return code %x\n", ret);
> - ret = -EPROTO;
> - break;
> }
>
> if (!ret)
> --
> 1.9.1
>
>
> --
> kernel-team mailing list
> kernel-team at lists.ubuntu.com
> https://lists.ubuntu.com/mailman/listinfo/kernel-team
Looks good
--
Brad Figg brad.figg at canonical.com http://www.canonical.com
More information about the kernel-team
mailing list