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 > >