mirror of
https://kernel.googlesource.com/pub/scm/linux/kernel/git/stable/linux-stable.git
synced 2025-10-01 19:35:50 +10:00
crypto: octeontx2 - add timeout for load_fvc completion poll
Adds timeout to exit from possible infinite loop, which polls on CPT instruction(load_fvc) completion. Signed-off-by: Srujana Challa <schalla@marvell.com> Signed-off-by: Bharat Bhushan <bbhushan2@marvell.com> Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
This commit is contained in:
parent
0e801fe7d8
commit
2157e50f65
@ -1494,6 +1494,7 @@ int otx2_cpt_discover_eng_capabilities(struct otx2_cptpf_dev *cptpf)
|
||||
dma_addr_t rptr_baddr;
|
||||
struct pci_dev *pdev;
|
||||
u32 len, compl_rlen;
|
||||
int timeout = 10000;
|
||||
int ret, etype;
|
||||
void *rptr;
|
||||
|
||||
@ -1554,16 +1555,27 @@ int otx2_cpt_discover_eng_capabilities(struct otx2_cptpf_dev *cptpf)
|
||||
etype);
|
||||
otx2_cpt_fill_inst(&inst, &iq_cmd, rptr_baddr);
|
||||
lfs->ops->send_cmd(&inst, 1, &cptpf->lfs.lf[0]);
|
||||
timeout = 10000;
|
||||
|
||||
while (lfs->ops->cpt_get_compcode(result) ==
|
||||
OTX2_CPT_COMPLETION_CODE_INIT)
|
||||
OTX2_CPT_COMPLETION_CODE_INIT) {
|
||||
cpu_relax();
|
||||
udelay(1);
|
||||
timeout--;
|
||||
if (!timeout) {
|
||||
ret = -ENODEV;
|
||||
cptpf->is_eng_caps_discovered = false;
|
||||
dev_warn(&pdev->dev, "Timeout on CPT load_fvc completion poll\n");
|
||||
goto error_no_response;
|
||||
}
|
||||
}
|
||||
|
||||
cptpf->eng_caps[etype].u = be64_to_cpup(rptr);
|
||||
}
|
||||
dma_unmap_single(&pdev->dev, rptr_baddr, len, DMA_BIDIRECTIONAL);
|
||||
cptpf->is_eng_caps_discovered = true;
|
||||
|
||||
error_no_response:
|
||||
dma_unmap_single(&pdev->dev, rptr_baddr, len, DMA_BIDIRECTIONAL);
|
||||
free_result:
|
||||
kfree(result);
|
||||
lf_cleanup:
|
||||
|
Loading…
Reference in New Issue
Block a user