> -----Original Message----- > From: Ferruh Yigit <[email protected]> > Sent: 2020年10月16日 2:57 > To: Zhang, Tianfei <[email protected]>; [email protected]; Xu, Rosen > <[email protected]>; Huang, Wei <[email protected]> > Subject: Re: [dpdk-dev] [PATCH v2 3/4] raw/ifpga/base: cleanup ifpga raw > devices when process quit > > On 9/28/2020 2:40 AM, Tianfei zhang wrote: > > From: Wei Huang <[email protected]> > > > > 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 <[email protected]> > > Signed-off-by: Tianfei zhang <[email protected]> > > --- > > 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.
Good suggestion, in V3, we will add cleanup in rte_rawdev_ops-> dev_close ops, For example, in ifpga driver, we will add it in ifpga_rawdev_close(). We will fix in V3.

