Why couldn't you use devfsadm -u with the add_drv -n option?  Put 
another way, do you really need a new flag to add_drv to achieve the new 
desired behavior?

    - Garrett

Jerry Gilliam wrote:
>
> I'm sponsoring the following fast-track for myself, with
> timeout set to 10/19/2009.  Minor release binding is requested.
>
>
> Backgound
> ---------
>
> The add_drv(1M) utility to add a device driver to the system
> can either add a driver and load and configure devices for
> that driver at that time, or optionally with -n, update only
> the system configuration as recorded in /etc.  Performing
> the latter activates the driver only when rebooted.
>
> Problem
> ---------
> Adding a driver to the running system does allow that driver
> to be loaded and devices configured for it at that time
> but does run the risk of a panic induced by a faulty driver.
> A panic in the middle of a lengthy upgrade can leave the
> system in an inconsistent state.  On the other hand, adding
> drivers without updating the running kernel (-n) leaves
> all new drivers requiring a reboot to be configured.
>
> Solaris needs to support two phases of driver add operation.
> During phase one, a driver can be added without initiating
> driver load or configuration.  Multiple drivers can be
> added to the system during this phase.  Then after the system
> upgrade has completed, the second phase can activate all newly
> added drivers, making them available for use without reboot.
>
> Proposal
> --------
>
> Add a driver in update-only mode, without loading or configuring
> the driver:
>
>     add_drv -u ...
>
> Activate, load and configure devices for all drivers added -u:
>
>     devfsadm -u ...
>
>
> Interface        Classification        Comments
> ------------------------------------------------------------
> add_drv(1M) -u        Committed    update-only flag to add_drv
> devfsadm(1M -u        Committed    configure drivers added update-only
>
>
> Man page changes included.
>
>
> NAME
>      add_drv - add a new device driver to the system
>
> SYNOPSIS
>
>      add_drv [-b basedir] [-c class_name]
>           [-i 'identify_name...'] [-m 'permission','...']
> +         [-p 'policy'] [-P privilege] [-n] [-f] [-u] [-v] device_driver
>
>
> OPTIONS
>
>     ....
>
> +     -u                      Add the driver to the system, leaving
> +                  it in an inactive state for later
> +                  configuration with devfsadm -u.
> +                  May not be used together with -n or -b.
> +
>
>
>
> NAME
>      devfsadm, devfsadmd - administration command for /dev
>
> SYNOPSIS
>      /usr/sbin/devfsadm [-C] [-c device_class] [-i driver_name]
> +          [ -n] [-r root_dir] [-s] [-t table_file] [-u] [-v]
>
>
> OPTIONS
>     ...
>
> +     -u              Activate and load drivers added via add_drv(1M)
> +                       -u, and configure each device binding to
> +                       such a driver.  May not be used together
> +                  with -n or -r.
>
> EXAMPLE
>
> # add_drv -u -i 'pci108e,abba' ce
> System updated but ce driver not yet configured.
> #
> # ifconfig -a
> lo0: flags=2001000849<UP,LOOPBACK,RUNNING,MULTICAST,IPv4,VIRTUAL> mtu 
> 8232 index 1
>     inet 127.0.0.1 netmask ff000000
> bge0: flags=1004843<UP,BROADCAST,RUNNING,MULTICAST,DHCP,IPv4> mtu 1500 
> index 2
>     inet 129.146.226.238 netmask fffffe00 broadcast 129.146.227.255
>     ether 0:a:e4:2a:32:fa
> lo0: flags=2002000849<UP,LOOPBACK,RUNNING,MULTICAST,IPv6,VIRTUAL> mtu 
> 8252 index 1
>     inet6 ::1/128
> #
> # ifconfig ce0 plumb
> ifconfig: cannot open link "ce0": DLPI link does not exist
> #
> # devfsadm -u
> #
> # ifconfig ce0 plumb
> # ifconfig -a
> lo0: flags=2001000849<UP,LOOPBACK,RUNNING,MULTICAST,IPv4,VIRTUAL> mtu 
> 8232 index 1
>     inet 127.0.0.1 netmask ff000000
> bge0: flags=1004843<UP,BROADCAST,RUNNING,MULTICAST,DHCP,IPv4> mtu 1500 
> index 2
>     inet 129.146.226.238 netmask fffffe00 broadcast 129.146.227.255
>     ether 0:a:e4:2a:32:fa
> ce0: flags=1000802<BROADCAST,MULTICAST,IPv4> mtu 1500 index 3
>     inet 0.0.0.0 netmask 0
>     ether 0:3:ba:37:87:60
> lo0: flags=2002000849<UP,LOOPBACK,RUNNING,MULTICAST,IPv6,VIRTUAL> mtu 
> 8252 index 1
>     inet6 ::1/128
>
>

Reply via email to