[dpdk-dev] [PATCH v2 3/4] raw/ifpga/base: cleanup ifpga raw devices when process quit
Zhang, Tianfei
tianfei.zhang at intel.com
Fri Oct 16 07:54:20 CEST 2020
> -----Original Message-----
> From: Ferruh Yigit <ferruh.yigit at intel.com>
> Sent: 2020年10月16日 2:57
> To: Zhang, Tianfei <tianfei.zhang at intel.com>; dev at dpdk.org; Xu, Rosen
> <rosen.xu at intel.com>; Huang, Wei <wei.huang at intel.com>
> 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 <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.
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.
More information about the dev
mailing list