Page MenuHomeFreeBSD

D32056.diff
No OneTemporary

D32056.diff

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 */

File Metadata

Mime Type
text/plain
Expires
Wed, Apr 30, 5:40 PM (15 h, 41 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
17861847
Default Alt Text
D32056.diff (3 KB)

Event Timeline