Date: Tue, 9 Jun 2009 14:26:23 +0000 (UTC) From: John Baldwin <jhb@FreeBSD.org> To: cvs-src-old@freebsd.org Subject: cvs commit: src/share/man/man9 BUS_NEW_PASS.9 Makefile bus_generic_new_pass.9 bus_set_pass.9 src/sys/kern bus_if.m subr_bus.c src/sys/sys bus.h Message-ID: <200906091431.n59EVMNn098213@repoman.freebsd.org>
next in thread | raw e-mail | index | archive | help
jhb 2009-06-09 14:26:23 UTC
FreeBSD src repository
Modified files:
share/man/man9 Makefile
sys/kern bus_if.m subr_bus.c
sys/sys bus.h
Added files:
share/man/man9 BUS_NEW_PASS.9 bus_generic_new_pass.9
bus_set_pass.9
Log:
SVN rev 193833 on 2009-06-09 14:26:23Z by jhb
Add support for multiple passes of the device tree during the boot-time
probe. The current device order is unchanged. This commit just adds the
infrastructure and ABI changes so that it is easier to merge later changes
into 8.x.
- Driver attachments now have an associated pass level. Attachments are
not allowed to probe or attach to drivers until the system-wide pass level
is >= the attachment's pass level. By default driver attachments use the
"last" pass level (BUS_PASS_DEFAULT). Driver's that wish to probe during
an earlier pass use EARLY_DRIVER_MODULE() instead of DRIVER_MODULE() which
accepts the pass level as an additional parameter.
- A new method BUS_NEW_PASS has been added to the bus interface. This
method is invoked when the system-wide pass level is changed to kick off
a rescan of the device tree so that drivers that have just been made
"eligible" can probe and attach.
- The bus_generic_new_pass() function provides a default implementation of
BUS_NEW_PASS(). It first allows drivers that were just made eligible for
this pass to identify new child devices. Then it propogates the rescan to
child devices that already have an attached driver by invoking their
BUS_NEW_PASS() method. It also reprobes devices without a driver.
- BUS_PROBE_NOMATCH() is only invoked for devices that do not have
an attached driver after being scanned during the final pass.
- The bus_set_pass() function is used during boot to raise the pass level.
Currently it is only called once during root_bus_configure() to raise
the pass level to BUS_PASS_DEFAULT. This has the effect of probing all
devices in a single pass identical to previous behavior.
Reviewed by: imp
Approved by: re (kib)
Revision Changes Path
1.1 +56 -0 src/share/man/man9/BUS_NEW_PASS.9 (new)
1.354 +3 -0 src/share/man/man9/Makefile
1.1 +57 -0 src/share/man/man9/bus_generic_new_pass.9 (new)
1.1 +54 -0 src/share/man/man9/bus_set_pass.9 (new)
1.37 +8 -0 src/sys/kern/bus_if.m
1.222 +152 -12 src/sys/kern/subr_bus.c
1.83 +33 -3 src/sys/sys/bus.h
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200906091431.n59EVMNn098213>
