Hi, > -----Original Message----- > From: Zhang, Tianfei <tianfei.zh...@intel.com> > Sent: Monday, September 28, 2020 9:40 > To: dev@dpdk.org; Xu, Rosen <rosen...@intel.com>; Huang, Wei > <wei.hu...@intel.com> > Cc: Zhang, Tianfei <tianfei.zh...@intel.com> > Subject: [PATCH v2 3/4] raw/ifpga/base: cleanup ifpga raw devices when > process quit > > From: Wei Huang <wei.hu...@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.hu...@intel.com> > Signed-off-by: Tianfei zhang <tianfei.zh...@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, > -- > 2.17.1
Acked-by: Rosen Xu <rosen...@intel.com>