diff options
Diffstat (limited to 'drivers')
-rw-r--r-- | drivers/ata/sata_nv.c | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/drivers/ata/sata_nv.c b/drivers/ata/sata_nv.c index 095ef1b2cd0e..ab92f208dae2 100644 --- a/drivers/ata/sata_nv.c +++ b/drivers/ata/sata_nv.c | |||
@@ -827,7 +827,8 @@ static irqreturn_t nv_adma_interrupt(int irq, void *dev_instance) | |||
827 | /* freeze if hotplugged or controller error */ | 827 | /* freeze if hotplugged or controller error */ |
828 | if (unlikely(status & (NV_ADMA_STAT_HOTPLUG | | 828 | if (unlikely(status & (NV_ADMA_STAT_HOTPLUG | |
829 | NV_ADMA_STAT_HOTUNPLUG | | 829 | NV_ADMA_STAT_HOTUNPLUG | |
830 | NV_ADMA_STAT_TIMEOUT))) { | 830 | NV_ADMA_STAT_TIMEOUT | |
831 | NV_ADMA_STAT_SERROR))) { | ||
831 | struct ata_eh_info *ehi = &ap->eh_info; | 832 | struct ata_eh_info *ehi = &ap->eh_info; |
832 | 833 | ||
833 | ata_ehi_clear_desc(ehi); | 834 | ata_ehi_clear_desc(ehi); |
@@ -841,6 +842,9 @@ static irqreturn_t nv_adma_interrupt(int irq, void *dev_instance) | |||
841 | } else if (status & NV_ADMA_STAT_HOTUNPLUG) { | 842 | } else if (status & NV_ADMA_STAT_HOTUNPLUG) { |
842 | ata_ehi_hotplugged(ehi); | 843 | ata_ehi_hotplugged(ehi); |
843 | ata_ehi_push_desc(ehi, ": hot unplug"); | 844 | ata_ehi_push_desc(ehi, ": hot unplug"); |
845 | } else if (status & NV_ADMA_STAT_SERROR) { | ||
846 | /* let libata analyze SError and figure out the cause */ | ||
847 | ata_ehi_push_desc(ehi, ": SError"); | ||
844 | } | 848 | } |
845 | ata_port_freeze(ap); | 849 | ata_port_freeze(ap); |
846 | continue; | 850 | continue; |