svn commit: r193833 - in head: share/man/man9 sys/kern sys/sys
Marius Strobl
marius at alchemy.franken.de
Sun Jan 29 15:41:26 UTC 2012
On Tue, Jun 09, 2009 at 02:26:23PM +0000, John Baldwin wrote:
> Author: jhb
> Date: Tue Jun 9 14:26:23 2009
> New Revision: 193833
> URL: http://svn.freebsd.org/changeset/base/193833
>
> Log:
> 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)
>
What would be necessary to finally enable support for multi-pass
probing apart from the drivers also needing to set BUS_PASS_n if
they want to take part earlier than BUS_PASS_DEFAULT)? My
understanding is that this is should be as simple as changing
root_bus_configure() to return BUS_PASS_ROOT instead of
BUS_PASS_DEFAULT but the comment above that line actually talks
about splitting the return value (?) up somehow ...
Marius
More information about the svn-src-head
mailing list