Messages in this thread | | | Date | Fri, 02 Mar 2007 17:48:16 -0500 | From | Jeff Garzik <> | Subject | Re: [PATCH] libata: Cable detection fixes |
| |
Alan wrote: > 2.6.21-rc has horrible problems with libata and PATA cable types (and > thus speeds). This occurs because Tejun fixed a pile of other bugs and > we now do cable detect enforcement for drive side detection properly. > > Unfortunately we don't do the process around cable detection right. Tejun > identified the problem and pointed to the right Annex in the spec, this patch > implements the needed changes. > > The basic requirement is that we have to identify the slave before the > master. > > The patch switches the identify order so that we can do the drive side > detection correctly.
> @@ -1850,8 +1900,11 @@ > for (i = 0; i < ATA_MAX_DEVICES; i++) > ap->device[i].pio_mode = XFER_PIO_0; > > - /* read IDENTIFY page and configure devices */ > - for (i = 0; i < ATA_MAX_DEVICES; i++) { > + /* read IDENTIFY page and configure devices. We have to do the identify > + specific sequence bass-ackwards so that PDIAG- is released by > + the slave device */ > + > + for (i = ATA_MAX_DEVICES - 1; i >= 0; i--) { > dev = &ap->device[i]; > > if (tries[i]) > @@ -1864,6 +1917,19 @@ > dev->id); > if (rc) > goto fail; > + } > + > + /* After the identify sequence we can now set up the devices. We do > + this in the normal order so that the user doesn't get confused */ > + > + for(i = 0; i < ATA_MAX_DEVICES; i++) { > + dev = &ap->device[i]; > + if (!ata_dev_enabled(dev)) > + continue; > > ap->eh_context.i.flags |= ATA_EHI_PRINTINFO; > rc = ata_dev_configure(dev);
applied this part
- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
| |