From 71499f6a2d016c2406e8c57c2a897283a0f710e2 Mon Sep 17 00:00:00 2001 From: John Baldwin Date: Mon, 12 Sep 2016 18:06:42 +0000 Subject: [PATCH] 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 --- share/man/man9/device_quiet.9 | 14 ++++++++------ sys/kern/subr_bus.c | 7 +++++++ 2 files changed, 15 insertions(+), 6 deletions(-) diff --git a/share/man/man9/device_quiet.9 b/share/man/man9/device_quiet.9 index 0e5526d689aa..08d88caf4348 100644 --- a/share/man/man9/device_quiet.9 +++ b/share/man/man9/device_quiet.9 @@ -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 diff --git a/sys/kern/subr_bus.c b/sys/kern/subr_bus.c index ddc5384a82dd..1e188d3cb681 100644 --- a/sys/kern/subr_bus.c +++ b/sys/kern/subr_bus.c @@ -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);