Sample list of drivers that require quiesce(): Network drivers: e1000g bge nge USB drivers: ohci ehci uhci HBA drivers: marvell88sx mpt adpu320 Disk drivers: ata cmdk Graphics/display drivers: vgatext nvidia amd64_gart Sample list of drivers that don't require quiesce(): Most pseudo drivers i8042 kb8042 mouse8042 xsvc iscsi mc-amd Sample quiesce() implementation: /* * Disclaimer: These are implementations that are working on the set of * test machines we are using. Driver owners should review each quiesce * implementation to make sure that they are correct. */ /* ARGSUSED */ int ata_quiesce(dev_info_t *dip, ddi_quiesce_cmd_t cmd, void *arg) { if (cmd != DDI_QUIESCE) return (DDI_FAILURE); return (ata_devo_reset(dip, DDI_RESET_FORCE)); } /*ARGSUSED*/ int ohci_quiesce(dev_info_t *dip, ddi_quiesce_cmd_t cmd, void *arg) { #if defined(__sparc) return (DDI_SUCCESS); #else ohci_state_t *ohcip = ohci_obtain_state(dip); if (cmd != DDI_QUIESCE) return (DDI_FAILURE); mutex_enter(&ohcip->ohci_int_mutex); (void) ohci_stop_root_hub_timer(ohcip); (void) ohci_hw_teardown(ohcip, 1); mutex_exit(&ohcip->ohci_int_mutex); return (DDI_SUCCESS); #endif } /* ARGSUSED */ static int e1000g_quiesce(dev_info_t *devinfo, ddi_quiesce_cmd_t cmd, void *arg) { return (e1000g_suspend(devinfo)); }