From: David Marchand <david.marchand@redhat.com>
To: hemant.agrawal@nxp.com, dev@dpdk.org
Cc: Sachin Saxena <sachin.saxena@nxp.com>
Subject: [RFC v2 16/16] bus/fslmc: use generic cleanup
Date: Thu, 17 Sep 2026 09:49:16 +0200 [thread overview]
Message-ID: <20260917074917.595603-17-david.marchand@redhat.com> (raw)
In-Reply-To: <20260917074917.595603-1-david.marchand@redhat.com>
Now that the probe and unplug callback behave like other buses, we can
call generic cleanup in addition to the special handling for IO devices.
Also cleanup any object left in the control devices list.
Signed-off-by: David Marchand <david.marchand@redhat.com>
---
Changes since RFC v1:
- added a debug log on cleanup failure,
---
drivers/bus/fslmc/fslmc_bus.c | 25 ++++++++++++++-----------
1 file changed, 14 insertions(+), 11 deletions(-)
diff --git a/drivers/bus/fslmc/fslmc_bus.c b/drivers/bus/fslmc/fslmc_bus.c
index 909edb9124..361a123802 100644
--- a/drivers/bus/fslmc/fslmc_bus.c
+++ b/drivers/bus/fslmc/fslmc_bus.c
@@ -606,23 +606,25 @@ fslmc_bus_match(const struct rte_driver *drv, const struct rte_device *dev)
}
static int
-fslmc_bus_unplug_device(struct rte_device *rte_dev);
-
-static int
-rte_fslmc_close(struct rte_bus *bus)
+fslmc_cleanup(struct rte_bus *bus)
{
- struct rte_dpaa2_device *dev;
- int ret = 0;
+ int ret;
- RTE_BUS_FOREACH_DEV(dev, bus) {
- if (rte_dev_is_probed(&dev->device) && fslmc_bus_unplug_device(&dev->device))
- DPAA2_BUS_ERR("Unable to remove %s", dev->device.name);
- }
+ ret = rte_bus_generic_cleanup(bus);
+ if (ret)
+ DPAA2_BUS_INFO("Unable to cleanup devices %d", ret);
ret = fslmc_vfio_close_group();
if (ret)
DPAA2_BUS_INFO("Unable to close devices %d", ret);
+ while (!TAILQ_EMPTY(&fslmc_control_devices)) {
+ struct rte_device *rte_dev = TAILQ_FIRST(&fslmc_control_devices);
+ struct rte_dpaa2_device *dev = RTE_BUS_DEVICE(rte_dev, *dev);
+
+ fslmc_remove_control_device(dev);
+ }
+
return 0;
}
@@ -743,7 +745,8 @@ fslmc_bus_unplug_device(struct rte_device *rte_dev)
struct rte_bus rte_fslmc_bus = {
.scan = rte_fslmc_scan,
.probe = rte_bus_generic_probe,
- .cleanup = rte_fslmc_close,
+ .free_device = fslmc_free_device,
+ .cleanup = fslmc_cleanup,
.parse = rte_fslmc_parse,
.dev_compare = fslmc_dev_compare,
.find_device = rte_bus_generic_find_device,
--
2.54.0
next prev parent reply other threads:[~2026-09-17 7:51 UTC|newest]
Thread overview: 36+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-07-23 13:53 [RFC 00/11] Device unplug and bus cleanup refactoring for NXP David Marchand
2026-07-23 13:53 ` [RFC 01/11] drivers/bus: cleanup device freeing in NXP bus scan David Marchand
2026-07-23 13:53 ` [RFC 02/11] bus/dpaa: allocate interrupt during probing David Marchand
2026-07-23 13:53 ` [RFC 03/11] bus/dpaa: support unplug and use generic cleanup David Marchand
2026-07-23 13:53 ` [RFC 04/11] bus/fslmc: fix memory leaks in scan David Marchand
2026-07-23 13:53 ` [RFC 05/11] bus/fslmc: fix per type device count David Marchand
2026-07-23 13:53 ` [RFC 06/11] bus/fslmc: simplify device parsing in scan David Marchand
2026-07-23 13:53 ` [RFC 07/11] bus/fslmc: refactor device filtering for multiprocess David Marchand
2026-07-23 13:53 ` [RFC 08/11] bus/fslmc: move unplug for some device out of VFIO David Marchand
2026-07-23 13:53 ` [RFC 09/11] bus/fslmc: call VFIO setup for some device from bus layer David Marchand
2026-07-23 13:53 ` [RFC 10/11] bus/fslmc: allocate interrupt during probing David Marchand
2026-07-23 13:53 ` [RFC 11/11] bus/fslmc: use generic cleanup David Marchand
2026-07-23 14:11 ` [RFC 00/11] Device unplug and bus cleanup refactoring for NXP Hemant Agrawal
2026-09-03 13:30 ` David Marchand
2026-09-08 14:20 ` Hemant Agrawal
2026-09-10 11:54 ` David Marchand
2026-08-11 20:09 ` Stephen Hemminger
2026-09-17 7:49 ` [RFC v2 00/16] " David Marchand
2026-09-17 7:49 ` [RFC v2 01/16] drivers/bus: cleanup device freeing in NXP bus scan David Marchand
2026-09-17 7:49 ` [RFC v2 02/16] drivers/bus: fix FD leak during scan in NXP drivers David Marchand
2026-09-17 7:49 ` [RFC v2 03/16] bus/dpaa: allocate interrupt during probing David Marchand
2026-09-17 7:49 ` [RFC v2 04/16] bus/dpaa: support unplug and use generic cleanup David Marchand
2026-09-17 7:49 ` [RFC v2 05/16] bus/fslmc: fix device name leak David Marchand
2026-09-17 7:49 ` [RFC v2 06/16] bus/fslmc: fix memory leaks in scan David Marchand
2026-09-17 7:49 ` [RFC v2 07/16] bus/fslmc: fix per type device count David Marchand
2026-09-17 7:49 ` [RFC v2 08/16] bus/fslmc: fix some VFIO device FD and memory leaks David Marchand
2026-09-17 7:49 ` [RFC v2 09/16] bus/fslmc: fix interrupt leak in DPIO cleanup David Marchand
2026-09-17 7:49 ` [RFC v2 10/16] bus/fslmc: simplify device parsing in scan David Marchand
2026-09-17 7:49 ` [RFC v2 11/16] bus/fslmc: release resources on scan failure David Marchand
2026-09-17 7:49 ` [RFC v2 12/16] bus/fslmc: refactor device filtering for multiprocess David Marchand
2026-09-17 7:49 ` [RFC v2 13/16] bus/fslmc: move unplug for some device out of VFIO David Marchand
2026-09-17 7:49 ` [RFC v2 14/16] bus/fslmc: call VFIO setup for some device from bus layer David Marchand
2026-09-17 7:49 ` [RFC v2 15/16] bus/fslmc: allocate interrupt during probing David Marchand
2026-09-17 7:49 ` David Marchand [this message]
2026-09-24 6:46 ` [RFC v2 00/16] Device unplug and bus cleanup refactoring for NXP David Marchand
2026-09-24 6:53 ` Hemant Agrawal
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20260917074917.595603-17-david.marchand@redhat.com \
--to=david.marchand@redhat.com \
--cc=dev@dpdk.org \
--cc=hemant.agrawal@nxp.com \
--cc=sachin.saxena@nxp.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox