From b70cc1c2efae69df5eaafcc1b224c1654308b605 Mon Sep 17 00:00:00 2001 From: Robert Hancock Date: Sun, 11 Feb 2007 18:36:56 -0600 Subject: [PATCH] --- yaml --- r: 48549 b: refs/heads/master c: 5278b50cea851d8264b7b28212a483328650476f h: refs/heads/master i: 48547: 81a825e27bb6da7eea4a0129a6e04e96b4094e80 v: v3 --- [refs] | 2 +- trunk/drivers/ata/sata_nv.c | 6 +++++- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/[refs] b/[refs] index 33174cc46656..4dbcb9cc4c52 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 8361cd79f2434d43054be894baf08a74dae5f8c0 +refs/heads/master: 5278b50cea851d8264b7b28212a483328650476f diff --git a/trunk/drivers/ata/sata_nv.c b/trunk/drivers/ata/sata_nv.c index 095ef1b2cd0e..ab92f208dae2 100644 --- a/trunk/drivers/ata/sata_nv.c +++ b/trunk/drivers/ata/sata_nv.c @@ -827,7 +827,8 @@ static irqreturn_t nv_adma_interrupt(int irq, void *dev_instance) /* freeze if hotplugged or controller error */ if (unlikely(status & (NV_ADMA_STAT_HOTPLUG | NV_ADMA_STAT_HOTUNPLUG | - NV_ADMA_STAT_TIMEOUT))) { + NV_ADMA_STAT_TIMEOUT | + NV_ADMA_STAT_SERROR))) { struct ata_eh_info *ehi = &ap->eh_info; ata_ehi_clear_desc(ehi); @@ -841,6 +842,9 @@ static irqreturn_t nv_adma_interrupt(int irq, void *dev_instance) } else if (status & NV_ADMA_STAT_HOTUNPLUG) { ata_ehi_hotplugged(ehi); ata_ehi_push_desc(ehi, ": hot unplug"); + } else if (status & NV_ADMA_STAT_SERROR) { + /* let libata analyze SError and figure out the cause */ + ata_ehi_push_desc(ehi, ": SError"); } ata_port_freeze(ap); continue;