Hello,
On Tue, Jun 07, 2011 at 07:04:33PM +0100, Tim Small wrote:
quoted hunk ↗ jump to hunk
--- libata-pmp.c.orig 2010-11-22 04:34:38.000000000 +0900
+++ libata-pmp.c 2010-11-22 04:42:59.000000000 +0900
@@ -286,6 +286,8 @@
reason = "failed to write Sil3726 Private Register";
goto fail;
}
+ /* nr_ports decrement */
+ nr_ports--;
}
if (print_info) {
... and was going to give it a go, but it's not really obvious to me
what it does (aside from the err great comment of course), and I
couldn't find any other references to this patch on the web, and thought
someone here might be able to shed some light on it...
3726 has an extra port for SEMB device (ie. it's not connected to
actual downstream port) and the above will make the kernel ignore that
port completely. Maybe we shouldn't issue hardreset either. Can you
please try the following patch (without the nr_ports-- hack)?
diff --git a/drivers/ata/libata-pmp.c b/drivers/ata/libata-pmp.c
index f06b7ea..3ab4784 100644
--- a/drivers/ata/libata-pmp.c
+++ b/drivers/ata/libata-pmp.c
@@ -398,7 +398,8 @@ static void sata_pmp_quirks(struct ata_port *ap)
/* port 5 is for SEMB device and it doesn't like SRST */
if (link->pmp == 5)
- link->flags |= ATA_LFLAG_NO_SRST |
+ link->flags |= ATA_LFLAG_NO_HRST |
+ ATA_LFLAG_NO_SRST |
ATA_LFLAG_ASSUME_SEMB;
}
} else if (vendor == 0x1095 && devid == 0x4723) {
--
tejun