Skip to contentSkip to conversation

sata_nv: revert use of notifiers for now

PATCH Applied Robert Hancock 2 participants 2 messages Mar 9, 2007 libata

lore
Share & tools
lore
#0 lore raw

PATCH 1/1 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.

drivers/ata/sata_nv.c +0 -0
@@ -874,8 +874,14 @@
 
			if (status & (NV_ADMA_STAT_DONE |
				      NV_ADMA_STAT_CPBERR)) {
-				u32 check_commands = notifier | notifier_error;
+				u32 check_commands;
				int pos, error = 0;

+
+ if(ata_tag_valid(ap->active_tag))
+ check_commands = 1 << ap->active_tag;
+ else
+ check_commands = ap->sactive;
+

				/** Check CPBs for completed commands */
				while ((pos = ffs(check_commands)) && !error) {
					pos--;
Applied
#1 lore raw
Quoted 11 lines · Robert Hancock

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.

applied to #upstream-fixes