sata_nv: revert use of notifiers for now

Commit 721449bf0d51213fe3abf0ac3e3561ef9ea7827a added support for using the
ADMA notifier bits to determine which commands to check for completion.
However there have been reports that this causes command timeouts in certain
cases. This is still being investigated. In addition, apparently the notifiers
won't work if ADMA is disabled on the other port as a result of an ATAPI device
being connected, and we don't handle this case properly.

For now, just restore the previous behavior of checking all active commands
to see if they are complete, without relying on the notifiers.

Signed-off-by: Robert Hancock <hancockr@shaw.ca>
Signed-off-by: Jeff Garzik <jeff@garzik.org>

authored by Robert Hancock and committed by Jeff Garzik 8ba5e4cb 14d66ab7

+7 -1
+7 -1
drivers/ata/sata_nv.c
··· 874 875 if (status & (NV_ADMA_STAT_DONE | 876 NV_ADMA_STAT_CPBERR)) { 877 - u32 check_commands = notifier | notifier_error; 878 int pos, error = 0; 879 /** Check CPBs for completed commands */ 880 while ((pos = ffs(check_commands)) && !error) { 881 pos--;
··· 874 875 if (status & (NV_ADMA_STAT_DONE | 876 NV_ADMA_STAT_CPBERR)) { 877 + u32 check_commands; 878 int pos, error = 0; 879 + 880 + if(ata_tag_valid(ap->active_tag)) 881 + check_commands = 1 << ap->active_tag; 882 + else 883 + check_commands = ap->sactive; 884 + 885 /** Check CPBs for completed commands */ 886 while ((pos = ffs(check_commands)) && !error) { 887 pos--;