Jeff Garzik wrote:
Tejun Heo wrote:
Convert AHCI to new EH. Unfortunately, ICH7 AHCI reacts badly if IRQ
mask is diddled during operation. So, freezing is implemented by
unconditionally clearing interrupt conditions while frozen.
For standard BMDMA hardware, you -absolutely must- stop DMA, before
doing -anything- else, including EH/recovery.
This sort of scenario will be quite common. I would recommend doing so
on sata_sil, sata_promise, ...
AHCI problem seems to be my honest mistake. I misinterpreted device
failures as HBA failures. For ahci and sata_sil24, making them forget
about pending commands take time, so it's awkward to do while freezing.
And, as they are pretty modern controllers, I expect them to do the
right thing when IRQ mask is diddled with.
For more traditional BMDMA controllers, I agree with you. I'll turn off
BMDMA in bmdma_freeze() before setting nIEN. But, for sata_sil, I wanna
leave it as it is. The code is tested on sil3112 and 3114 and both
work fine. It's not always possible but I wanna avoid adding code which
isn't necessary to LLDDs. After a while, nobody would remember why the
code is there and people will assume sata_sil needs it, which isn't true.
--
tejun
-
: send the line "unsubscribe linux-ide" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html