git: e9d3857040a1 - main - Use bus_detach_children instead of bus_generic_detach
- Go to: [ bottom of page ] [ top of archives ] [ this month ]
Date: Thu, 02 Jan 2025 18:28:16 UTC
The branch main has been updated by jhb:
URL: https://cgit.FreeBSD.org/src/commit/?id=e9d3857040a1983f6cf8780783da4da34773f660
commit e9d3857040a1983f6cf8780783da4da34773f660
Author: John Baldwin <jhb@FreeBSD.org>
AuthorDate: 2025-01-02 18:19:39 +0000
Commit: John Baldwin <jhb@FreeBSD.org>
CommitDate: 2025-01-02 18:19:39 +0000
Use bus_detach_children instead of bus_generic_detach
These drivers perform additional teardown steps in between detaching
child devices and deleting child devices.
Differential Revision: https://reviews.freebsd.org/D47957
---
sys/arm/nvidia/tegra_sdhci.c | 2 +-
sys/dev/cxgb/cxgb_main.c | 4 ++--
sys/dev/cxgbe/t4_main.c | 2 +-
sys/dev/gpio/gpiobus.c | 2 +-
sys/dev/gpio/gpioiic.c | 2 +-
sys/dev/pci/pci_pci.c | 2 +-
sys/dev/sdhci/sdhci_fdt.c | 2 +-
sys/dev/sdhci/sdhci_xenon.c | 2 +-
8 files changed, 9 insertions(+), 9 deletions(-)
diff --git a/sys/arm/nvidia/tegra_sdhci.c b/sys/arm/nvidia/tegra_sdhci.c
index 4d2eaccf4c27..3bd9a9bb4632 100644
--- a/sys/arm/nvidia/tegra_sdhci.c
+++ b/sys/arm/nvidia/tegra_sdhci.c
@@ -418,7 +418,7 @@ tegra_sdhci_detach(device_t dev)
struct tegra_sdhci_softc *sc = device_get_softc(dev);
struct sdhci_slot *slot = &sc->slot;
- bus_generic_detach(dev);
+ bus_detach_children(dev);
sdhci_fdt_gpio_teardown(sc->gpio);
clk_release(sc->clk);
bus_teardown_intr(dev, sc->irq_res, sc->intr_cookie);
diff --git a/sys/dev/cxgb/cxgb_main.c b/sys/dev/cxgb/cxgb_main.c
index ed0993f934f1..a19483c7cbbf 100644
--- a/sys/dev/cxgb/cxgb_main.c
+++ b/sys/dev/cxgb/cxgb_main.c
@@ -729,7 +729,7 @@ cxgb_free(struct adapter *sc)
/*
* Make sure all child devices are gone.
*/
- bus_generic_detach(sc->dev);
+ bus_detach_children(sc->dev);
for (i = 0; i < (sc)->params.nports; i++) {
if (sc->portdev[i] &&
device_delete_child(sc->dev, sc->portdev[i]) != 0)
@@ -1066,7 +1066,7 @@ cxgb_port_attach(device_t dev)
/*
* cxgb_port_detach() is called via the device_detach methods when
- * cxgb_free() calls the bus_generic_detach. It is responsible for
+ * cxgb_free() calls the bus_detach_children. It is responsible for
* removing the device from the view of the kernel, i.e. from all
* interfaces lists etc. This routine is only called when the driver is
* being unloaded, not when the link goes down.
diff --git a/sys/dev/cxgbe/t4_main.c b/sys/dev/cxgbe/t4_main.c
index 25d5dee8b781..755fd19a3c9c 100644
--- a/sys/dev/cxgbe/t4_main.c
+++ b/sys/dev/cxgbe/t4_main.c
@@ -1789,7 +1789,7 @@ t4_detach_common(device_t dev)
}
if (device_is_attached(dev)) {
- rc = bus_generic_detach(dev);
+ rc = bus_detach_children(dev);
if (rc) {
device_printf(dev,
"failed to detach child devices: %d\n", rc);
diff --git a/sys/dev/gpio/gpiobus.c b/sys/dev/gpio/gpiobus.c
index bc166f43d398..37371fa4e1cc 100644
--- a/sys/dev/gpio/gpiobus.c
+++ b/sys/dev/gpio/gpiobus.c
@@ -582,7 +582,7 @@ gpiobus_detach(device_t dev)
("gpiobus mutex not initialized"));
GPIOBUS_LOCK_DESTROY(sc);
- if ((err = bus_generic_detach(dev)) != 0)
+ if ((err = bus_detach_children(dev)) != 0)
return (err);
if ((err = device_delete_children(dev)) != 0)
return (err);
diff --git a/sys/dev/gpio/gpioiic.c b/sys/dev/gpio/gpioiic.c
index 2404e70fc648..2197d238cf2b 100644
--- a/sys/dev/gpio/gpioiic.c
+++ b/sys/dev/gpio/gpioiic.c
@@ -331,7 +331,7 @@ gpioiic_detach(device_t dev)
struct gpioiic_softc *sc = device_get_softc(dev);
int err;
- if ((err = bus_generic_detach(dev)) != 0)
+ if ((err = bus_detach_children(dev)) != 0)
return (err);
gpioiic_cleanup(sc);
diff --git a/sys/dev/pci/pci_pci.c b/sys/dev/pci/pci_pci.c
index c4f7814dfee5..44cbf327868c 100644
--- a/sys/dev/pci/pci_pci.c
+++ b/sys/dev/pci/pci_pci.c
@@ -1552,7 +1552,7 @@ pcib_detach(device_t dev)
int error;
sc = device_get_softc(dev);
- error = bus_generic_detach(dev);
+ error = bus_detach_children(dev);
if (error)
return (error);
#ifdef PCI_HP
diff --git a/sys/dev/sdhci/sdhci_fdt.c b/sys/dev/sdhci/sdhci_fdt.c
index e7dda316539c..1d8013ee7088 100644
--- a/sys/dev/sdhci/sdhci_fdt.c
+++ b/sys/dev/sdhci/sdhci_fdt.c
@@ -666,7 +666,7 @@ sdhci_fdt_detach(device_t dev)
struct sdhci_fdt_softc *sc = device_get_softc(dev);
int i;
- bus_generic_detach(dev);
+ bus_detach_children(dev);
bus_teardown_intr(dev, sc->irq_res, sc->intrhand);
bus_release_resource(dev, SYS_RES_IRQ, rman_get_rid(sc->irq_res),
sc->irq_res);
diff --git a/sys/dev/sdhci/sdhci_xenon.c b/sys/dev/sdhci/sdhci_xenon.c
index 4a823b896ca8..098412a81148 100644
--- a/sys/dev/sdhci/sdhci_xenon.c
+++ b/sys/dev/sdhci/sdhci_xenon.c
@@ -592,7 +592,7 @@ sdhci_xenon_detach(device_t dev)
{
struct sdhci_xenon_softc *sc = device_get_softc(dev);
- bus_generic_detach(dev);
+ bus_detach_children(dev);
bus_teardown_intr(dev, sc->irq_res, sc->intrhand);
bus_release_resource(dev, SYS_RES_IRQ, rman_get_rid(sc->irq_res),
sc->irq_res);