Hi, > -----Original Message----- > From: Huang, Wei <wei.hu...@intel.com> > Sent: Friday, March 17, 2023 4:45 AM > To: dev@dpdk.org; tho...@monjalon.net; david.march...@redhat.com > Cc: sta...@dpdk.org; Xu, Rosen <rosen...@intel.com>; Zhang, Tianfei > <tianfei.zh...@intel.com>; Zhang, Qi Z <qi.z.zh...@intel.com>; Huang, Wei > <wei.hu...@intel.com> > Subject: [PATCH v1] bus/ifpga: add fpga bus cleanup > > In this patch, cleanup method is implemented for FPGA bus which will be > called during eal_bus_cleanup(). > > Signed-off-by: Wei Huang <wei.hu...@intel.com> > --- > drivers/bus/ifpga/ifpga_bus.c | 36 > ++++++++++++++++++++++++++++++++++++ > 1 file changed, 36 insertions(+) > > diff --git a/drivers/bus/ifpga/ifpga_bus.c b/drivers/bus/ifpga/ifpga_bus.c > index 07e316b..ffb0c61 100644 > --- a/drivers/bus/ifpga/ifpga_bus.c > +++ b/drivers/bus/ifpga/ifpga_bus.c > @@ -360,6 +360,41 @@ struct rte_afu_device * > return ret; > } > > +/* > + * Cleanup the content of the Intel FPGA bus, and call the remove() > +function > + * for all registered devices. > + */ > +static int > +ifpga_cleanup(void) > +{ > + struct rte_afu_device *afu_dev, *tmp_dev; > + int error = 0; > + > + RTE_TAILQ_FOREACH_SAFE(afu_dev, &ifpga_afu_dev_list, next, > tmp_dev) { > + struct rte_afu_driver *drv = afu_dev->driver; > + int ret = 0; > + > + if (drv == NULL || drv->remove == NULL) > + goto free; > + > + ret = drv->remove(afu_dev); > + if (ret < 0) { > + rte_errno = errno; > + error = -1; > + } > + afu_dev->driver = NULL; > + afu_dev->device.driver = NULL; > + > +free: > + TAILQ_REMOVE(&ifpga_afu_dev_list, afu_dev, next); > + rte_devargs_remove(afu_dev->device.devargs); > + rte_intr_instance_free(afu_dev->intr_handle); > + free(afu_dev); > + } > + > + return error; > +} > + > static int > ifpga_plug(struct rte_device *dev) > { > @@ -470,6 +505,7 @@ struct rte_afu_device * static struct rte_bus > rte_ifpga_bus = { > .scan = ifpga_scan, > .probe = ifpga_probe, > + .cleanup = ifpga_cleanup, > .find_device = ifpga_find_device, > .plug = ifpga_plug, > .unplug = ifpga_unplug, > -- > 1.8.3.1
Acked-by: Rosen Xu <rosen...@intel.com>