> -----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.

Reply via email to