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
This commit is contained in:
John Baldwin 2025-01-02 13:19:39 -05:00
parent 9be0058ea0
commit e9d3857040
8 changed files with 9 additions and 9 deletions

View file

@ -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);

View file

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

View file

@ -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);

View file

@ -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);

View file

@ -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);

View file

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

View file

@ -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);

View file

@ -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);