Messages in this thread |  | | | Date | Tue, 20 Jul 2004 16:50:43 -0400 | | From | Nathan Bryant <> | | Subject | Re: device_suspend() levels [was Re: [patch] ACPI work on aic7xxx] |
| |
Benjamin Herrenschmidt wrote:
> Note regarding aix7xxx, we also need proper hooks in the SCSI stack to > block the queue correctly etc... in the same way we do on IDE. I didn't > have time to look into this yet.
Here's what we currently do, aic7xxx_core.c - looks like it attempts to quiesce, and then refuse to suspend if we happen to be busy. This is a little messy because it's done in the suspend call rather than the save_state call, therefore resume will still be called if this routine returns an error code, which will reinitialize the device when we didn't really need to.
int ahc_suspend(struct ahc_softc *ahc) { ahc_pause_and_flushwork(ahc);
if (LIST_FIRST(&ahc->pending_scbs) != NULL) { ahc_unpause(ahc); return (EBUSY); } #ifdef AHC_TARGET_MODE /* * XXX What about ATIOs that have not yet been serviced? * Perhaps we should just refuse to be suspended if we * are acting in a target role. */ if (ahc->pending_device != NULL) { ahc_unpause(ahc); return (EBUSY); } #endif ahc_shutdown(ahc); return (0); } - To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
|  |