Gitweb:     
http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=8ba5e4cbe444f10352756b6c7715bb26bb087680
Commit:     8ba5e4cbe444f10352756b6c7715bb26bb087680
Parent:     14d66ab7e2e06d3727719d3e4eec6bf9f70251c3
Author:     Robert Hancock <[EMAIL PROTECTED]>
AuthorDate: Thu Mar 8 18:02:18 2007 -0600
Committer:  Jeff Garzik <[EMAIL PROTECTED]>
CommitDate: Fri Mar 9 08:41:16 2007 -0500

    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 <[EMAIL PROTECTED]>
    Signed-off-by: Jeff Garzik <[EMAIL PROTECTED]>
---
 drivers/ata/sata_nv.c |    8 +++++++-
 1 files changed, 7 insertions(+), 1 deletions(-)

diff --git a/drivers/ata/sata_nv.c b/drivers/ata/sata_nv.c
index 388d07f..9d9670a 100644
--- a/drivers/ata/sata_nv.c
+++ b/drivers/ata/sata_nv.c
@@ -874,8 +874,14 @@ static irqreturn_t nv_adma_interrupt(int irq, void 
*dev_instance)
 
                        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--;
-
To unsubscribe from this list: send the line "unsubscribe git-commits-head" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to