aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorWarner Losh <imp@FreeBSD.org>2018-08-23 05:06:16 +0000
committerWarner Losh <imp@FreeBSD.org>2018-08-23 05:06:16 +0000
commitd36967bd2b32e8a790830e2fa45163729c7e8b00 (patch)
treedade753d78020f21048523a23de247fbe08aeaf3
parent84725a5fd073b115f45c507f3fef62a522bce466 (diff)
Notes
-rw-r--r--sbin/devmatch/devmatch.c2
-rw-r--r--sys/kern/subr_bus.c1
-rw-r--r--sys/sys/bus.h1
3 files changed, 4 insertions, 0 deletions
diff --git a/sbin/devmatch/devmatch.c b/sbin/devmatch/devmatch.c
index a53cd5d81f82..9173270520a6 100644
--- a/sbin/devmatch/devmatch.c
+++ b/sbin/devmatch/devmatch.c
@@ -422,6 +422,8 @@ find_unmatched(struct devinfo_dev *dev, void *arg)
break;
if (!(dev->dd_flags & DF_ENABLED))
break;
+ if (dev->dd_flags & DF_ATTACHED_ONCE)
+ break;
parent = devinfo_handle_to_device(dev->dd_parent);
bus = strdup(parent->dd_name);
p = bus + strlen(bus) - 1;
diff --git a/sys/kern/subr_bus.c b/sys/kern/subr_bus.c
index 9d09d341ae1d..72bf63eb295c 100644
--- a/sys/kern/subr_bus.c
+++ b/sys/kern/subr_bus.c
@@ -2950,6 +2950,7 @@ device_attach(device_t dev)
dev->state = DS_NOTPRESENT;
return (error);
}
+ dev->flags |= DF_ATTACHED_ONCE;
attachtime = get_cyclecount() - attachtime;
/*
* 4 bits per device is a reasonable value for desktop and server
diff --git a/sys/sys/bus.h b/sys/sys/bus.h
index a96cfc6c8f72..e565002760d7 100644
--- a/sys/sys/bus.h
+++ b/sys/sys/bus.h
@@ -93,6 +93,7 @@ struct u_device {
#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 */
#define DF_NEEDNOMATCH 0x800 /* Has a pending NOMATCH event */
/**