Jérôme VUARAND wrote:
I just realised after the mail that the driver was really thinking there are 6 ports on the pm, since it's testing ata3.05 and ata4.05. These don't exist and generate errors. There's a bug somewhere and here is a workaround I made quickly to have correct enumeration behaviour (I hope no automatic process parse mails on this mailing list for patches, coz this one is not really clean) :
Can you try the attached patch? -- tejun
diff --git a/drivers/scsi/libata-pm.c b/drivers/scsi/libata-pm.c index 002d8b2..7a56ab7 100644 --- a/drivers/scsi/libata-pm.c +++ b/drivers/scsi/libata-pm.c @@ -327,6 +327,14 @@ static void ata_pm_quirks(u32 *gscr, int *nr_ports -= 2; *link_flags |= ATA_LFLAG_HRST_TO_RESUME; } + + /* Sil3726 reports one extra port and needs hardreset to + * resume PM link. + */ + if (vendor == 0x1095 && devid == 0x3726) { + *nr_ports -= 1; + *link_flags |= ATA_LFLAG_HRST_TO_RESUME; + } } static int ata_pm_configure(struct ata_device *dev, int *r_nr_ports,