Hi all, the current ahci doesn't handle suspend / resume cycles too well. On certain machines the disk just locks up and refuses to work after a resume. This is due to a initialisation error after resume; ahci has for registers containing DMA addresses (which are obviously allocated by the kernel). Of course there is no guarantee that these addresses are unchanged across reboots. So ahci loads the suspended image, and after the suspended image is started the driver is presented with different DMA addresses, whereas the chip still uses the original ones. This patch rearranges the suspend / resume code to properly initialise those registers after a resume. It also contains some initialisation fixes to make the driver behave more spec-compliant. Comments etc. are welcome. Oh, patch is against linux-2.6 git. Please apply. Cheers, Hannes -- Dr. Hannes Reinecke hare@suse.de SuSE Linux Products GmbH S390 & zSeries Maxfeldstraße 5 +49 911 74053 688 90409 Nürnberg http://www.suse.de