Hello,
Mark Paulus wrote:
> sata_sil 0000:02:0b.0: version 2.2
> ACPI: PCI Interrupt 0000:02:0b.0[A] -> GSI 22 (level, low) -> IRQ 18
> scsi0 : sata_sil
> scsi1 : sata_sil
> ata1: SATA max UDMA/100 cmd 0xe0812080 ctl 0xe081208a bmdma 0xe0812000
> irq 18
> ata2: SATA max UDMA/100 cmd 0xe08120c0 ctl 0xe08120ca bmdma 0xe0812008
> irq 18
> ata1: SATA link up 1.5 Gbps (SStatus 113 SControl 310)
> ata1.00: ATA-5: ST310216A, 3.01, max UDMA/100
> ata1.00: 19541088 sectors, multi 16: LBA ata1.00: applying bridge limits
> ata1.00: failed to IDENTIFY (I/O error, err_mask=0x40)
> ata1.00: revalidation failed (errno=-5)
> ata1: failed to recover some devices, retrying in 5 secs
> ata1: SATA link up 1.5 Gbps (SStatus 113 SControl 310)
> ata1.00: failed to set xfermode (err_mask=0x40)
> ata1.00: limiting speed to UDMA/100:PIO3
> ata1: failed to recover some devices, retrying in 5 secs
> ata1: SATA link up 1.5 Gbps (SStatus 113 SControl 310)
> ata1.00: failed to set xfermode (err_mask=0x40)
It looks like for some reason the port is being frozen repeatedly. Can
you please apply the attached patch and post the dmesg?
Thanks.
--
tejun
---
drivers/ata/sata_sil.c | 6 +++++-
1 file changed, 5 insertions(+), 1 deletion(-)
Index: tree0/drivers/ata/sata_sil.c
===================================================================
--- tree0.orig/drivers/ata/sata_sil.c
+++ tree0/drivers/ata/sata_sil.c
@@ -390,11 +390,15 @@ static void sil_host_intr(struct ata_por
ap->eh_info.serror |= serror;
}
+ ata_port_printk(ap, KERN_INFO, "XXX SATA_IRQ, serror=0x%x\n",
+ serror);
goto freeze;
}
- if (unlikely(!qc))
+ if (unlikely(!qc)) {
+ ata_port_printk(ap, KERN_INFO, "XXX DMA completion w/o qc\n");
goto freeze;
+ }
if (unlikely(qc->tf.flags & ATA_TFLAG_POLLING)) {
/* this sometimes happens, just clear IRQ */