mirror of
https://github.com/torvalds/linux.git
synced 2026-06-03 20:14:06 +02:00
crypto: sun8i-ce - remove channel timeout field
Using the number of bytes in the request as DMA timeout is really inconsistent, as large requests could possibly set a timeout of hundreds of seconds. Remove the per-channel timeout field and use a single, static DMA timeout of 3 seconds for all requests. Signed-off-by: Ovidiu Panait <ovidiu.panait.oss@gmail.com> Tested-by: Corentin LABBE <clabbe.montjoie@gmail.com> Reviewed-by: Corentin LABBE <clabbe.montjoie@gmail.com> Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
This commit is contained in:
parent
886d698120
commit
9a23ea1f75
|
|
@ -276,7 +276,6 @@ static int sun8i_ce_cipher_prepare(struct crypto_engine *engine, void *async_req
|
|||
goto theend_sgs;
|
||||
}
|
||||
|
||||
chan->timeout = areq->cryptlen;
|
||||
rctx->nr_sgs = ns;
|
||||
rctx->nr_sgd = nd;
|
||||
return 0;
|
||||
|
|
|
|||
|
|
@ -210,11 +210,10 @@ int sun8i_ce_run_task(struct sun8i_ce_dev *ce, int flow, const char *name)
|
|||
mutex_unlock(&ce->mlock);
|
||||
|
||||
wait_for_completion_interruptible_timeout(&ce->chanlist[flow].complete,
|
||||
msecs_to_jiffies(ce->chanlist[flow].timeout));
|
||||
msecs_to_jiffies(CE_DMA_TIMEOUT_MS));
|
||||
|
||||
if (ce->chanlist[flow].status == 0) {
|
||||
dev_err(ce->dev, "DMA timeout for %s (tm=%d) on flow %d\n", name,
|
||||
ce->chanlist[flow].timeout, flow);
|
||||
dev_err(ce->dev, "DMA timeout for %s on flow %d\n", name, flow);
|
||||
err = -EFAULT;
|
||||
}
|
||||
/* No need to lock for this read, the channel is locked so
|
||||
|
|
|
|||
|
|
@ -446,8 +446,6 @@ int sun8i_ce_hash_run(struct crypto_engine *engine, void *breq)
|
|||
else
|
||||
cet->t_dlen = cpu_to_le32(areq->nbytes / 4 + j);
|
||||
|
||||
chan->timeout = areq->nbytes;
|
||||
|
||||
err = sun8i_ce_run_task(ce, flow, crypto_ahash_alg_name(tfm));
|
||||
|
||||
dma_unmap_single(ce->dev, addr_pad, j * 4, DMA_TO_DEVICE);
|
||||
|
|
|
|||
|
|
@ -137,7 +137,6 @@ int sun8i_ce_prng_generate(struct crypto_rng *tfm, const u8 *src,
|
|||
|
||||
cet->t_dst[0].addr = desc_addr_val_le32(ce, dma_dst);
|
||||
cet->t_dst[0].len = cpu_to_le32(todo / 4);
|
||||
ce->chanlist[flow].timeout = 2000;
|
||||
|
||||
err = sun8i_ce_run_task(ce, 3, "PRNG");
|
||||
mutex_unlock(&ce->rnglock);
|
||||
|
|
|
|||
|
|
@ -79,7 +79,6 @@ static int sun8i_ce_trng_read(struct hwrng *rng, void *data, size_t max, bool wa
|
|||
|
||||
cet->t_dst[0].addr = desc_addr_val_le32(ce, dma_dst);
|
||||
cet->t_dst[0].len = cpu_to_le32(todo / 4);
|
||||
ce->chanlist[flow].timeout = todo;
|
||||
|
||||
err = sun8i_ce_run_task(ce, 3, "TRNG");
|
||||
mutex_unlock(&ce->rnglock);
|
||||
|
|
|
|||
|
|
@ -106,6 +106,7 @@
|
|||
#define MAX_SG 8
|
||||
|
||||
#define CE_MAX_CLOCKS 4
|
||||
#define CE_DMA_TIMEOUT_MS 3000
|
||||
|
||||
#define MAXFLOW 4
|
||||
|
||||
|
|
@ -196,7 +197,6 @@ struct sun8i_ce_flow {
|
|||
struct completion complete;
|
||||
int status;
|
||||
dma_addr_t t_phy;
|
||||
int timeout;
|
||||
struct ce_task *tl;
|
||||
void *backup_iv;
|
||||
void *bounce_iv;
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user