Skip site navigation (1)Skip section navigation (2)
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>