Hi, I think the 6th port is for the SEMB(Sata Enclosure Management Bridge) device, this device reportssignature with lbam=0x3c and lbah 0xc3, but the linux classifies it as a disk: if (((tf->lbam == 0) && (tf->lbah == 0)) || ((tf->lbam == 0x3c) && (tf->lbah == 0xc3))) { ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ DPRINTK("found ATA device by sig\n"); return ATA_DEV_ATA; Can you print the signature of the device on that port? Anyway, the 0x3C, 0xC3 signature should be classifies as a SEMB device and not a disk according to the SATA standard. saeed On 5/25/06, Tejun Heo <htejun@xxxxxxxxx> wrote:
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,
- : send the line "unsubscribe linux-ide" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html