The driver should allocate the per-device-instance soft state structure, being careful to clean up properly if an error occurs.
instance = ddi_get_instance(dip); if (ddi_soft_state_zalloc(isp_state, instance) != DDI_SUCCESS) { return (DDI_FAILURE); } isp = ddi_get_soft_state(isp_state, instance);