diff --git a/sys/kern/subr_bus.c b/sys/kern/subr_bus.c --- a/sys/kern/subr_bus.c +++ b/sys/kern/subr_bus.c @@ -2083,10 +2083,9 @@ panic("device_probe_child: parent device has no devclass"); /* - * If the state is already probed, then return. However, don't - * return if we can rebid this object. + * If the state is already probed, then return. */ - if (child->state == DS_ALIVE && (child->flags & DF_REBID) == 0) + if (child->state == DS_ALIVE) return (0); for (; dc; dc = dc->parent) { @@ -2188,29 +2187,7 @@ /* * If we found a driver, change state and initialise the devclass. */ - /* XXX What happens if we rebid and got no best? */ if (best) { - /* - * If this device was attached, and we were asked to - * rescan, and it is a different driver, then we have - * to detach the old driver and reattach this new one. - * Note, we don't have to check for DF_REBID here - * because if the state is > DS_ALIVE, we know it must - * be. - * - * This assumes that all DF_REBID drivers can have - * their probe routine called at any time and that - * they are idempotent as well as completely benign in - * normal operations. - * - * We also have to make sure that the detach - * succeeded, otherwise we fail the operation (or - * maybe it should just fail silently? I'm torn). - */ - if (child->state > DS_ALIVE && best->driver != child->driver) - if ((result = device_detach(dev)) != 0) - return (result); - /* Set the winning driver, devclass, and flags. */ if (!child->devclass) { result = device_set_devclass(child, best->driver->name); @@ -2229,11 +2206,7 @@ * sure that we have the right description. */ DEVICE_PROBE(child); -#if 0 - child->flags |= DF_REBID; -#endif - } else - child->flags &= ~DF_REBID; + } child->state = DS_ALIVE; bus_data_generation_update(); @@ -2921,7 +2894,7 @@ GIANT_REQUIRED; - if (dev->state >= DS_ALIVE && (dev->flags & DF_REBID) == 0) + if (dev->state >= DS_ALIVE) return (-1); if (!(dev->flags & DF_ENABLED)) { @@ -4145,8 +4118,7 @@ DEVICE_IDENTIFY(driver, dev); TAILQ_FOREACH(child, &dev->children, link) { - if (child->state == DS_NOTPRESENT || - (child->flags & DF_REBID)) + if (child->state == DS_NOTPRESENT) device_probe_and_attach(child); } } @@ -5334,7 +5306,6 @@ (dev->flags&DF_FIXEDCLASS? "fixed,":""), (dev->flags&DF_WILDCARD? "wildcard,":""), (dev->flags&DF_DESCMALLOCED? "descmalloced,":""), - (dev->flags&DF_REBID? "rebiddable,":""), (dev->flags&DF_SUSPENDED? "suspended,":""), (dev->ivars? "":"no "), (dev->softc? "":"no "), @@ -5736,7 +5707,7 @@ /* Perform the requested operation. */ switch (cmd) { case DEV_ATTACH: - if (device_is_attached(dev) && (dev->flags & DF_REBID) == 0) + if (device_is_attached(dev)) error = EBUSY; else if (!device_is_enabled(dev)) error = ENXIO; diff --git a/sys/sys/bus.h b/sys/sys/bus.h --- a/sys/sys/bus.h +++ b/sys/sys/bus.h @@ -90,7 +90,6 @@ #define DF_QUIET 0x10 /* don't print verbose attach message */ #define DF_DONENOMATCH 0x20 /* don't execute DEVICE_NOMATCH again */ #define DF_EXTERNALSOFTC 0x40 /* softc not allocated by us */ -#define DF_REBID 0x80 /* Can rebid after attach */ #define DF_SUSPENDED 0x100 /* Device is suspended. */ #define DF_QUIET_CHILDREN 0x200 /* Default to quiet for all my children */ #define DF_ATTACHED_ONCE 0x400 /* Has been attached at least once */