Solaris device drivers are attached by devfsadm(1M) and by the kernel in response to open(2) requests from applications. Drivers not currently in use can be detached when the system experiences memory pressure. The ddi-forceattach and ddi-no-autodetach properties can be used to customize driver attach/detach behavior.
The ddi-forceattach is an integer property, to be set globally by means of the driver.conf(4) file. Drivers with this property set to 1 are loaded and attached to all possible instances during system startup. The driver will not be auto-detached due to system memory pressure.
The ddi-no-autodetach is an integer property to be set globally by means of the driver.conf(4) file or created dynamically by the driver on a per-instance basis with ddi_prop_update_int(9F). When this property is set to 1, the kernel will not auto-detach driver due to system memory pressure.
Note that ddi-forceattach implies ddi-no-autodetach. Neither the ddi-forceattach nor ddi-no-autodetach properties prevent driver detaching in response to reconfiguration requests, such as executing commands cfgadm(1M), modunload(1M), rem_drv(1M), and update_drv(1M).
The ddi-no-modunload is an integer property to be set globally by means of the driver.conf(4) file. When this property is set to 1, the driver module is locked in memory and cannot be unloaded by modunload, rem_drv, or update_drv; the operation of cfgadm, however, remains unaffected.
Setting any of these properties to a non-integer value or an integer value not equal to 1 produces undefined results
Writing Device Drivers
Clearing the ddi-no-modunload property in a vendor-delivered driver.conf file could cause system instability.
The use of the ddi-no-modunload property is indicative that the delivered driver is broken in some way and that a cleaner version of the driver should be pursued. Thus, the use of this property is a temporary workaround which should be removed when the driver is fixed.