The secordary process should not close the crypto device when it exits because the primary process still manage the device. There is no reason with occurring error log below when secordary process exits without any operation on the crypto device while primary process starts the device.
Case situation: eal_bus_cleanup has been added in rte_eal_cleanup. But for secondary process, eal_bus_cleanup will trigger vdev_cleanup which trigger rte_vdev_driver to remove. Then crypto devices will execute ipsec_mb_remove to rte_cryptodev_pmd_destroy. Finially, rte_cryptodev_close will be called by secordary process exit. Error logs occur as below when the secordary process exit: CRYPTODEV: rte_cryptodev_close() line 1453: Device 0 must be stopped before closing Function call trace: rte_eal_cleanup->eal_bus_cleanup-> vdev_cleanup->rte_vdev_driver_remove->ipsec_mb_remove-> rte_cryptodev_pmd_destroy->rte_cryptodev_pmd_release_device-> rte_cryptodev_close Signed-off-by: Yang Ming <ming.1.y...@nokia-sbell.com> --- lib/cryptodev/rte_cryptodev.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/cryptodev/rte_cryptodev.c b/lib/cryptodev/rte_cryptodev.c index 85a4b46ac9..ed1021f635 100644 --- a/lib/cryptodev/rte_cryptodev.c +++ b/lib/cryptodev/rte_cryptodev.c @@ -1142,7 +1142,7 @@ rte_cryptodev_pmd_release_device(struct rte_cryptodev *cryptodev) cryptodev_fp_ops_reset(rte_crypto_fp_ops + dev_id); /* Close device only if device operations have been set */ - if (cryptodev->dev_ops) { + if (cryptodev->dev_ops && (rte_eal_process_type() == RTE_PROC_PRIMARY)) { ret = rte_cryptodev_close(dev_id); if (ret < 0) return ret; -- 2.34.1