Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > linux.kernel > #1228777 > unrolled thread
| Started by | Haren Myneni <haren@linux.vnet.ibm.com> |
|---|---|
| First post | 2015-09-20 02:10 +0200 |
| Last post | 2015-09-21 17:30 +0200 |
| Articles | 3 — 3 participants |
Back to article view | Back to linux.kernel
[PATCH] drivers/crypto/nx: Add CRC and validation support for nx842 Haren Myneni <haren@linux.vnet.ibm.com> - 2015-09-20 02:10 +0200
Re: [PATCH] drivers/crypto/nx: Add CRC and validation support for nx842 Herbert Xu <herbert@gondor.apana.org.au> - 2015-09-21 16:30 +0200
Re: [PATCH] drivers/crypto/nx: Add CRC and validation support for nx842 Dan Streetman <ddstreet@ieee.org> - 2015-09-21 17:30 +0200
| From | Haren Myneni <haren@linux.vnet.ibm.com> |
|---|---|
| Date | 2015-09-20 02:10 +0200 |
| Subject | [PATCH] drivers/crypto/nx: Add CRC and validation support for nx842 |
| Message-ID | <qaAmC-aF-5@gated-at.bofh.it> |
Hi,
This patch allows nx842 coprocessor to add CRC for compression and
check the computed CRC value for uncompression. Please let me know
if you have any comments.
Thanks
Haren
commit d0b34d2e3ed41e7ec2afdbd654f0dd7716e4d4c0
Author: Haren Myneni <haren@us.ibm.com>
Date: Sat Sep 12 01:20:51 2015 -0700
crypto/nx842: Add CRC and validation support
This patch adds CRC generation and validation support for nx-842.
Add CRC flag so that nx842 coprocessor includes CRC during
compression and validates during uncompression.
Signed-off-by: Haren Myneni <haren@us.ibm.com>
diff --git a/drivers/crypto/nx/nx-842-powernv.c
b/drivers/crypto/nx/nx-842-powernv.c
index 3750e13..9ef51fa 100644
--- a/drivers/crypto/nx/nx-842-powernv.c
+++ b/drivers/crypto/nx/nx-842-powernv.c
@@ -491,7 +491,7 @@ static int nx842_powernv_compress(const unsigned
char *in, unsigned int inlen,
void *wmem)
{
return nx842_powernv_function(in, inlen, out, outlenp,
- wmem, CCW_FC_842_COMP_NOCRC);
+ wmem, CCW_FC_842_COMP_CRC);
}
/**
@@ -519,7 +519,7 @@ static int nx842_powernv_decompress(const unsigned
char *in, unsigned int inlen,
void *wmem)
{
return nx842_powernv_function(in, inlen, out, outlenp,
- wmem, CCW_FC_842_DECOMP_NOCRC);
+ wmem, CCW_FC_842_DECOMP_CRC);
}
static int __init nx842_powernv_probe(struct device_node *dn)
diff --git a/drivers/crypto/nx/nx-842-pseries.c
b/drivers/crypto/nx/nx-842-pseries.c
index f4cbde0..5532dab 100644
--- a/drivers/crypto/nx/nx-842-pseries.c
+++ b/drivers/crypto/nx/nx-842-pseries.c
@@ -234,6 +234,9 @@ static int nx842_validate_result(struct device *dev,
dev_dbg(dev, "%s: Out of space in output buffer\n",
__func__);
return -ENOSPC;
+ case 65: /* Calculated CRC doesn't match the passed value */
+ dev_dbg(dev, "%s: CRC mismatch for decompression\n", __func__);
+ return -EINVAL;
case 66: /* Input data contains an illegal template field */
case 67: /* Template indicates data past the end of the input stream
*/
dev_dbg(dev, "%s: Bad data for decompression (code:%d)\n",
@@ -324,7 +327,7 @@ static int nx842_pseries_compress(const unsigned
char *in, unsigned int inlen,
slout.entries = (struct nx842_slentry *)workmem->slout;
/* Init operation */
- op.flags = NX842_OP_COMPRESS;
+ op.flags = NX842_OP_COMPRESS_CRC;
csbcpb = &workmem->csbcpb;
memset(csbcpb, 0, sizeof(*csbcpb));
op.csbcpb = nx842_get_pa(csbcpb);
@@ -457,7 +460,7 @@ static int nx842_pseries_decompress(const unsigned
char *in, unsigned int inlen,
slout.entries = (struct nx842_slentry *)workmem->slout;
/* Init operation */
- op.flags = NX842_OP_DECOMPRESS;
+ op.flags = NX842_OP_DECOMPRESS_CRC;
csbcpb = &workmem->csbcpb;
memset(csbcpb, 0, sizeof(*csbcpb));
op.csbcpb = nx842_get_pa(csbcpb);
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
[toc] | [next] | [standalone]
| From | Herbert Xu <herbert@gondor.apana.org.au> |
|---|---|
| Date | 2015-09-21 16:30 +0200 |
| Subject | Re: [PATCH] drivers/crypto/nx: Add CRC and validation support for nx842 |
| Message-ID | <qbagq-O0-13@gated-at.bofh.it> |
| In reply to | #1228777 |
On Sat, Sep 19, 2015 at 05:02:42PM -0700, Haren Myneni wrote: > Hi, > > This patch allows nx842 coprocessor to add CRC for compression and > check the computed CRC value for uncompression. Please let me know > if you have any comments. > > Thanks > Haren > > commit d0b34d2e3ed41e7ec2afdbd654f0dd7716e4d4c0 > Author: Haren Myneni <haren@us.ibm.com> > Date: Sat Sep 12 01:20:51 2015 -0700 > > crypto/nx842: Add CRC and validation support > > This patch adds CRC generation and validation support for nx-842. > Add CRC flag so that nx842 coprocessor includes CRC during > compression and validates during uncompression. > > Signed-off-by: Haren Myneni <haren@us.ibm.com> In future please post the patch without all the metadata. You can use the helper git format-patch to help you prepare the patch for submission. As to the CRC itself what is the purpose of this and wouldn't it fail our test vectors if we had any? Remember that we also have a software implementation now and the hardware should produce exactly the same output as the software version. 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 -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
[toc] | [prev] | [next] | [standalone]
| From | Dan Streetman <ddstreet@ieee.org> |
|---|---|
| Date | 2015-09-21 17:30 +0200 |
| Message-ID | <qbbcv-2a3-35@gated-at.bofh.it> |
| In reply to | #1229425 |
On Mon, Sep 21, 2015 at 10:26 AM, Herbert Xu <herbert@gondor.apana.org.au> wrote: > On Sat, Sep 19, 2015 at 05:02:42PM -0700, Haren Myneni wrote: >> Hi, >> >> This patch allows nx842 coprocessor to add CRC for compression and >> check the computed CRC value for uncompression. Please let me know >> if you have any comments. >> >> Thanks >> Haren >> >> commit d0b34d2e3ed41e7ec2afdbd654f0dd7716e4d4c0 >> Author: Haren Myneni <haren@us.ibm.com> >> Date: Sat Sep 12 01:20:51 2015 -0700 >> >> crypto/nx842: Add CRC and validation support >> >> This patch adds CRC generation and validation support for nx-842. >> Add CRC flag so that nx842 coprocessor includes CRC during >> compression and validates during uncompression. >> >> Signed-off-by: Haren Myneni <haren@us.ibm.com> > > In future please post the patch without all the metadata. You > can use the helper git format-patch to help you prepare the patch > for submission. > > As to the CRC itself what is the purpose of this and wouldn't it > fail our test vectors if we had any? Remember that we also have a > software implementation now and the hardware should produce exactly > the same output as the software version. As far as the hw and sw drivers producing the exact same output, I don't think that's possible with the current hw and sw drivers, because the hw driver may have to add a header to the actual byte stream that the hw creates, depending on buffer alignment and size (the hw has specific restrictions). Currently, the sw driver doesn't understand that header that the 842 hw driver creates, although that could be added to the sw driver. And, the hw driver skips adding the header if the buffers are correctly aligned/sized, which would result in a test vector failure if it doesn't align the buffer the same way each time. However, you're right that if the hw driver is doing crc checking, the sw driver needs to be updated to make sure to add the crc to anything it encodes, otherwise the hw driver will fail decompressing it; Haren, you'll need to update the lib/842 code to also include crc creation/checking. Also, it might be a good time to add what we talked about a while ago, to push the alignment/size restrictions into the crypto compression layer, by adding cra_alignmask and cra_blocksize support to crypto/compress.c. Since the 842 hw has requirements not only for specific alignment and min/max sizes, but also a requirement for specific length multiple (i.e. must be !(len % 8)) it might be worthwhile to also add a cra_sizemodulo or something like that. However, if the common crypto alignment/size handling code allows any alignment/size buffers (instead of just returning error for mis-sized buffers), I think a common crypto header would need to be added in cases of mis-sizing, which may not be appropriate for common code. Alternately, the common crypto code could just return error for mis-sized buffers; users of the crypto comp api would just have to check crypto_tfm_alg_blocksize() before calling. In case I haven't said it before, I really hate how the 842 hw requires specific alignment and sizing. How hard is it to add support for any alignment/size in the hw?!? > > 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 > -- > To unsubscribe from this list: send the line "unsubscribe linux-crypto" in > the body of a message to majordomo@vger.kernel.org > More majordomo info at http://vger.kernel.org/majordomo-info.html -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
[toc] | [prev] | [standalone]
Back to top | Article view | linux.kernel
csiph-web