[dpdk-dev] [PATCH v2 3/4] raw/ifpga/base: cleanup ifpga raw devices when process quit

Ferruh Yigit ferruh.yigit at intel.com
Thu Oct 15 20:57:22 CEST 2020


On 9/28/2020 2:40 AM, Tianfei zhang wrote:
> From: Wei Huang <wei.huang at intel.com>
> 
> Add function ifpga_rawdev_cleanup() to cleanup all ifpga
> raw devices and register it as RTE_FINI function to make
> it called after main().
> 
> Signed-off-by: Wei Huang <wei.huang at intel.com>
> Signed-off-by: Tianfei zhang <tianfei.zhang at intel.com>
> ---
>   drivers/raw/ifpga/ifpga_rawdev.c | 20 ++++++++++++++++++++
>   1 file changed, 20 insertions(+)
> 
> diff --git a/drivers/raw/ifpga/ifpga_rawdev.c b/drivers/raw/ifpga/ifpga_rawdev.c
> index 98b02b5fa..1bc500a2a 100644
> --- a/drivers/raw/ifpga/ifpga_rawdev.c
> +++ b/drivers/raw/ifpga/ifpga_rawdev.c
> @@ -1609,6 +1609,26 @@ RTE_PMD_REGISTER_PCI_TABLE(ifpga_rawdev_pci_driver, rte_ifpga_rawdev_pmd);
>   RTE_PMD_REGISTER_KMOD_DEP(ifpga_rawdev_pci_driver, "* igb_uio | uio_pci_generic | vfio-pci");
>   RTE_LOG_REGISTER(ifpga_rawdev_logtype, driver.raw.init, NOTICE);
>   
> +RTE_FINI(ifpga_rawdev_cleanup)
> +{
> +	struct ifpga_rawdev *dev;
> +	struct opae_adapter *adapter;
> +	unsigned int i;
> +
> +	for (i = 0; i < IFPGA_RAWDEV_NUM; i++) {
> +		dev = &ifpga_rawdevices[i];
> +		if (dev->rawdev) {
> +			adapter = ifpga_rawdev_get_priv(dev->rawdev);
> +			if (adapter) {
> +				opae_adapter_destroy(adapter);
> +				opae_adapter_data_free(adapter->data);
> +			}
> +			rte_rawdev_pmd_release(dev->rawdev);
> +			dev->rawdev = NULL;
> +		}
> +	}
> +}
> +
>   static const char * const valid_args[] = {
>   #define IFPGA_ARG_NAME         "ifpga"
>   	IFPGA_ARG_NAME,
> 

Not sure about each driver adding destructors for cleanup, instead better to 
have a proper cleanup path for application exit.

What is the motivation of the patch, does not cleaning has negative impact, 
something like not able to start app again if it is not cleaned properly etc...

If there is negative impact but to be able to clean driver properly, I would 
suggest doing this by improving exit path.



More information about the dev mailing list