aacraid controller hangs if kernel uses non-default ASPM policy

Vasily Averin
2011-11-11T09:42:39Z

Aacraid controller can hang on some nodes if kernel uses non-default (powersave) ASPM policy.
Controller hangs shortly after successful load and hardware detection. Scsi error handler detects this hang and tries to restart hardware but it does not help.

Initially it was noticed on RHEL6-based openVZ kernel after backporting aacraid driver from mainline (RHEL6 kernel with original driver works well)
http://bugzilla.openvz.org/show_bug.cgi?id=2043

This issue happens because default ASPM policy was changed in Red Hat kernels. Therefore guys from Red Hat have noticed this problem long time ago:
on Fedora 12
https://bugzilla.redhat.com/show_bug.cgi?id=540478
on Fedora 14
https://bugzilla.redhat.com/show_bug.cgi?id=679385

In RHEL6 kernel this issue was fixed, ASPM was disabled in aacraid driver. In kernel changelog I've found that seems it was done by Matthew Garrett:
- [scsi] aacraid: Disable ASPM by default (Matthew Garrett) [599735]

However seems this patch was not submitted to mainline. I've reproduced this issue on vanilla 3.1.0 kernel booted with "pcie_aspm.policy=powersave" option,
So I believe it makes sense to do it now.

I've reviewed similar issues and found that similar troubles happen with another hardware too. For example similar patch can be found in e1000 driver.

Btw. It's funny that this problem was not fixed even in newly released Fedora 16 kernel: default policy was changed, but driver was not patched.

Thank you,
Vasily Averin