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:
parent
e0cfa1bc82
commit
71499f6a2d
@ -28,7 +28,7 @@
|
||||
.\"
|
||||
.\" $FreeBSD$
|
||||
.\"
|
||||
.Dd June 21, 1999
|
||||
.Dd September 12, 2016
|
||||
.Dt DEVICE_QUIET 9
|
||||
.Os
|
||||
.Sh NAME
|
||||
@ -49,16 +49,18 @@
|
||||
Each device has a quiet flag associated with it.
|
||||
A device is
|
||||
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
|
||||
.Fn device_quiet ,
|
||||
to re-enable to probe message (to make the message appear again, for
|
||||
example after a
|
||||
.Xr device_detach 9 )
|
||||
.Fn device_quiet
|
||||
during a device driver probe routine.
|
||||
To re-enable probe messages,
|
||||
call
|
||||
.Fn device_verbose .
|
||||
To test to see if a device is quieted, call
|
||||
.Fn device_is_quiet .
|
||||
.Pp
|
||||
Devices are implicitly marked verbose after a driver detaches.
|
||||
.Sh SEE ALSO
|
||||
.Xr device 9
|
||||
.Sh AUTHORS
|
||||
|
@ -2145,6 +2145,12 @@ device_probe_child(device_t dev, device_t child)
|
||||
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
|
||||
* only match on devices whose driver was explicitly
|
||||
@ -2970,6 +2976,7 @@ device_detach(device_t dev)
|
||||
if (!(dev->flags & DF_FIXEDCLASS))
|
||||
devclass_delete_device(dev->devclass, dev);
|
||||
|
||||
device_verbose(dev);
|
||||
dev->state = DS_NOTPRESENT;
|
||||
(void)device_set_driver(dev, NULL);
|
||||
device_sysctl_fini(dev);
|
||||
|
Loading…
Reference in New Issue
Block a user