Make device_quiet() an attachment property.

In particular, reset the DF_QUIET flag when detaching from a device so
that a driver that marks a device quiet doesn't dictate policy for a
different driver that may claim the device in the future.

Reviewed by:	rpokala, wblock
MFC after:	2 weeks
Sponsored by:	Chelsio Communications
Differential Revision:	https://reviews.freebsd.org/D7803
This commit is contained in:
John Baldwin 2016-09-12 18:06:42 +00:00
parent e0cfa1bc82
commit 71499f6a2d
Notes: svn2git 2020-12-20 02:59:44 +00:00
svn path=/head/; revision=305751
2 changed files with 15 additions and 6 deletions

View File

@ -28,7 +28,7 @@
.\" .\"
.\" $FreeBSD$ .\" $FreeBSD$
.\" .\"
.Dd June 21, 1999 .Dd September 12, 2016
.Dt DEVICE_QUIET 9 .Dt DEVICE_QUIET 9
.Os .Os
.Sh NAME .Sh NAME
@ -49,16 +49,18 @@
Each device has a quiet flag associated with it. Each device has a quiet flag associated with it.
A device is A device is
verbose by default when it is created but may be quieted to prevent verbose by default when it is created but may be quieted to prevent
the device identification string to be printed during probe. printing of the device identification string during attach
and printing of a message during detach.
To quiet a device, call To quiet a device, call
.Fn device_quiet , .Fn device_quiet
to re-enable to probe message (to make the message appear again, for during a device driver probe routine.
example after a To re-enable probe messages,
.Xr device_detach 9 )
call call
.Fn device_verbose . .Fn device_verbose .
To test to see if a device is quieted, call To test to see if a device is quieted, call
.Fn device_is_quiet . .Fn device_is_quiet .
.Pp
Devices are implicitly marked verbose after a driver detaches.
.Sh SEE ALSO .Sh SEE ALSO
.Xr device 9 .Xr device 9
.Sh AUTHORS .Sh AUTHORS

View File

@ -2145,6 +2145,12 @@ device_probe_child(device_t dev, device_t child)
break; break;
} }
/*
* Reset DF_QUIET in case this driver doesn't
* end up as the best driver.
*/
device_verbose(child);
/* /*
* Probes that return BUS_PROBE_NOWILDCARD or lower * Probes that return BUS_PROBE_NOWILDCARD or lower
* only match on devices whose driver was explicitly * only match on devices whose driver was explicitly
@ -2970,6 +2976,7 @@ device_detach(device_t dev)
if (!(dev->flags & DF_FIXEDCLASS)) if (!(dev->flags & DF_FIXEDCLASS))
devclass_delete_device(dev->devclass, dev); devclass_delete_device(dev->devclass, dev);
device_verbose(dev);
dev->state = DS_NOTPRESENT; dev->state = DS_NOTPRESENT;
(void)device_set_driver(dev, NULL); (void)device_set_driver(dev, NULL);
device_sysctl_fini(dev); device_sysctl_fini(dev);