Do not fail 'devctl clear driver' if another driver is not found

Detaching the bhyve(4) ppt driver from an unsupported PCI device
should not raise a "Device not configured" error.  We do not expect
that a new driver must take over the device in this case.

Reviewed by:	imp, jhb
Differential Revision:	https://reviews.freebsd.org/D52050
This commit is contained in:
Marcin Cieslak
2026-02-24 20:58:59 -05:00
committed by John Baldwin
parent ef1218add1
commit fba56be09f
2 changed files with 15 additions and 2 deletions
+2 -1
View File
@@ -22,7 +22,7 @@
.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
.\" SUCH DAMAGE.
.\"
.Dd April 4, 2019
.Dd February 24, 2026
.Dt DEVCTL 3
.Os
.Sh NAME
@@ -193,6 +193,7 @@ is true,
the device will be detached from its current device driver.
After the device's name is reset,
it is reprobed and attached to a suitable device driver if one is found.
If no suitable device driver is found, no error is reported.
.Pp
The
.Fn devctl_rescan
+13 -1
View File
@@ -5961,7 +5961,19 @@ devctl2_ioctl(struct cdev *cdev, u_long cmd, caddr_t data, int fflag,
dev->flags &= ~DF_FIXEDCLASS;
dev->flags |= DF_WILDCARD;
devclass_delete_device(dev->devclass, dev);
error = device_probe_and_attach(dev);
/*
* Don't use device_probe_and_attach so that failing
* to find a new driver isn't reported as an error.
*/
error = device_probe(dev);
if (error == ENXIO) {
error = 0;
break;
}
if (error == 0) {
error = device_attach(dev);
}
break;
case DEV_RESCAN:
if (!device_is_attached(dev)) {