All of lore.kernel.org
 help / color / mirror / Atom feed
From: LABBE Corentin <clabbe.montjoie@gmail.com>
To: Stanimir Varbanov <svarbanov@mm-sol.com>, herbert@gondor.apana.org.au
Cc: davem@davemloft.net, cristian.stoica@freescale.com, axboe@fb.com,
	dan.j.williams@intel.com, linux-crypto@vger.kernel.org,
	linux-kernel@vger.kernel.org
Subject: Re: [PATCH] crypto: qce: dma_map_sg can handle chained SG
Date: Tue, 3 Nov 2015 13:36:55 +0100	[thread overview]
Message-ID: <20151103123655.GA5178@Red> (raw)
In-Reply-To: <56388EFD.5080509@mm-sol.com>

On Tue, Nov 03, 2015 at 12:39:57PM +0200, Stanimir Varbanov wrote:
> Hi,
> 
> I know that this patch has been queued up, but ...
> 
> On 10/02/2015 09:01 AM, LABBE Corentin wrote:
> > The qce driver use two dma_map_sg path according to SG are chained
> > or not.
> > Since dma_map_sg can handle both case, clean the code with all
> > references to sg chained.
> > 
> > Thus removing qce_mapsg, qce_unmapsg and qce_countsg functions.
> > 
> > Signed-off-by: LABBE Corentin <clabbe.montjoie@gmail.com>
> > ---
> >  drivers/crypto/qce/ablkcipher.c | 30 ++++++++----------------
> >  drivers/crypto/qce/cipher.h     |  4 ----
> >  drivers/crypto/qce/dma.c        | 52 -----------------------------------------
> >  drivers/crypto/qce/dma.h        |  5 ----
> >  drivers/crypto/qce/sha.c        | 18 ++++++--------
> >  drivers/crypto/qce/sha.h        |  2 --
> >  6 files changed, 17 insertions(+), 94 deletions(-)
> > 
> 
> <snip>
> 
> > diff --git a/drivers/crypto/qce/sha.c b/drivers/crypto/qce/sha.c
> > index be2f504..0c9973e 100644
> > --- a/drivers/crypto/qce/sha.c
> > +++ b/drivers/crypto/qce/sha.c
> > @@ -51,9 +51,8 @@ static void qce_ahash_done(void *data)
> >  	if (error)
> >  		dev_dbg(qce->dev, "ahash dma termination error (%d)\n", error);
> >  
> > -	qce_unmapsg(qce->dev, req->src, rctx->src_nents, DMA_TO_DEVICE,
> > -		    rctx->src_chained);
> > -	qce_unmapsg(qce->dev, &rctx->result_sg, 1, DMA_FROM_DEVICE, 0);
> > +	dma_unmap_sg(qce->dev, req->src, rctx->src_nents, DMA_TO_DEVICE);
> > +	dma_unmap_sg(qce->dev, &rctx->result_sg, 1, DMA_FROM_DEVICE);
> >  
> >  	memcpy(rctx->digest, result->auth_iv, digestsize);
> >  	if (req->result)
> > @@ -92,16 +91,14 @@ static int qce_ahash_async_req_handle(struct crypto_async_request *async_req)
> >  		rctx->authklen = AES_KEYSIZE_128;
> >  	}
> >  
> > -	rctx->src_nents = qce_countsg(req->src, req->nbytes,
> > -				      &rctx->src_chained);
> > -	ret = qce_mapsg(qce->dev, req->src, rctx->src_nents, DMA_TO_DEVICE,
> > -			rctx->src_chained);
> > +	rctx->src_nents = sg_nents_for_len(req->src, req->nbytes);
> 
> sg_nents_for_len can return -EINVAL, and this error should be handled.
> 
> After added a check for the error I'm observing below:
> 
> #insmod tcrypt.ko mode=403 (test_ahash_speed("sha1"))
> 
> test 21 ( 8192 byte blocks, 8192 bytes per update,   1 updates):
> qcrypto 73a000.crypto: sg_nents_for_len failed (-22) (nbytes:8192,
> sg_len:4096)
> hashing failed ret=-22
> 
> It seems that something is wrong with the test case? Looking further in
> test_hash_sg_init() we can see:
> 
> #define TVMEMSIZE	4
> 
> 	sg_init_table(sg, TVMEMSIZE);
> 	for (i = 0; i < TVMEMSIZE; i++) {
> 		sg_set_buf(sg + i, tvmem[i], PAGE_SIZE);
> 		memset(tvmem[i], 0xff, PAGE_SIZE);
> 	}
> 
> so we have 4 SGs with sg->length = 4096, thus sg_nents_for_len() should
> return 2 entries with 4096 bytes each.
> 
> What is wrong here?
> 

Hello

It is a shame that I forgot to check the return value.
Herbert, do you prefer to drop the patch series and I send an updated one, or does I will send a new patch series for checking the return value of sg_nents_for_len() ?

Regards

LABBE Corentin

  reply	other threads:[~2015-11-03 12:37 UTC|newest]

Thread overview: 16+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-09-23 11:55 [PATCH] crypto: dma_map_sg can handle chained SG LABBE Corentin
2015-09-23 11:55 ` [PATCH 1/4] crypto: talitos: " LABBE Corentin
2015-09-23 12:07   ` Christophe Leroy
2015-09-28  9:43     ` LABBE Corentin
2015-09-23 11:55 ` [PATCH 2/4] crypto: qce: " LABBE Corentin
2015-09-23 19:47   ` Stanimir Varbanov
2015-10-01 13:58   ` Herbert Xu
2015-09-23 11:55 ` [PATCH 3/4] crypto: caam: " LABBE Corentin
2015-09-23 11:55 ` [PATCH 4/4] crypto: sahara: " LABBE Corentin
2015-10-01 14:01 ` [PATCH] crypto: " Herbert Xu
2015-10-02  6:01   ` [PATCH] crypto: qce: " LABBE Corentin
2015-10-08 14:23     ` Herbert Xu
2015-11-03 10:39     ` Stanimir Varbanov
2015-11-03 12:36       ` LABBE Corentin [this message]
2015-11-03 13:33         ` Stanimir Varbanov
2015-11-04  5:02         ` Herbert Xu

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=20151103123655.GA5178@Red \
    --to=clabbe.montjoie@gmail.com \
    --cc=axboe@fb.com \
    --cc=cristian.stoica@freescale.com \
    --cc=dan.j.williams@intel.com \
    --cc=davem@davemloft.net \
    --cc=herbert@gondor.apana.org.au \
    --cc=linux-crypto@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=svarbanov@mm-sol.com \
    /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.