svn commit: r188464 - head/sys/kern
M. Warner Losh
imp at bsdimp.com
Tue Feb 10 21:00:23 PST 2009
In message: <200902102322.n1ANMTgW007393 at svn.freebsd.org>
Alexander Motin <mav at freebsd.org> writes:
: Author: mav
: Date: Tue Feb 10 23:22:29 2009
: New Revision: 188464
: URL: http://svn.freebsd.org/changeset/base/188464
:
: Log:
: Check for device_set_devclass() errors and skip driver probe/attach if any.
: Attach call without devclass set crashes the system.
:
: On resume AHCI driver sometimes tries to create duplicate adX device.
: It is surely his own problem, but IMHO it is not a reason to crash here.
: Other reasons are also possible.
:
: Modified:
: head/sys/kern/subr_bus.c
:
: Modified: head/sys/kern/subr_bus.c
: ==============================================================================
: --- head/sys/kern/subr_bus.c Tue Feb 10 23:17:20 2009 (r188463)
: +++ head/sys/kern/subr_bus.c Tue Feb 10 23:22:29 2009 (r188464)
: @@ -1756,8 +1756,13 @@ device_probe_child(device_t dev, device_
: dl = next_matching_driver(dc, child, dl)) {
: PDEBUG(("Trying %s", DRIVERNAME(dl->driver)));
: device_set_driver(child, dl->driver);
: - if (!hasclass)
: - device_set_devclass(child, dl->driver->name);
: + if (!hasclass) {
: + if (device_set_devclass(child, dl->driver->name)) {
: + PDEBUG(("Unable to set device class"));
: + device_set_driver(child, NULL);
: + continue;
: + }
: + }
:
: /* Fetch any flags for the device before probing. */
: resource_int_value(dl->driver->name, child->unit,
I'd prefer applying this patch to make it whine louder so we don't
forget about it:
Index: subr_bus.c
===================================================================
--- subr_bus.c (revision 188476)
+++ subr_bus.c (working copy)
@@ -1758,7 +1758,8 @@
device_set_driver(child, dl->driver);
if (!hasclass) {
if (device_set_devclass(child, dl->driver->name)) {
- PDEBUG(("Unable to set device class"));
+ printf("driver bug: Unable to set devclass (devname: %s)\n",
+ DEVICENAME(child));
device_set_driver(child, NULL);
continue;
}
Comments?
Warner
More information about the svn-src-head
mailing list