(cc's added) Hello, On 09/08/2010 08:26 PM, gianluca wrote: > Today I tried the kernel 2.6.35 in one of my boxes but I realized that the > box doesn't detect my SATA HD anymore. The logs show that the driver sata_sil > is correctly loaded. With 2.6.34 it worked fine. > > So I tried to test the latest git to see if the issue was fixed, but that > kernel exhibits the same behaviour. Then I looked at the linux-ide mailing list > archives at http://marc.info/?t=128232284600001&r=1&w=2 and I found out that > the issue is known but not solved and since I could reliably reproduce the > problen I started to bisect. > > The logs of the bisection are attached. It pointed to the commit > 978c066691a49a205673672a55685305663a2554 ( libata: Remove excess delay in the > tf_load path ). > > So I reverted that commit and got a bootable kernel again. I think this commit > exposed a timing bug in the sata_sil driver. I love you. Thank you so much for bisecting it. :-) Can you please test whether the patch at the end of this message is enough to fix the problem? Alan, the above commit seems a bit dangerous as writes can be merged. Also, ISTR delay requirements for PATA while loading registers. Mark, Sergei, what do you guys think? diff --git a/drivers/ata/libata-sff.c b/drivers/ata/libata-sff.c index 030b1c4..6a43129 100644 --- a/drivers/ata/libata-sff.c +++ b/drivers/ata/libata-sff.c @@ -418,6 +418,7 @@ void ata_sff_tf_load(struct ata_port *ap, const struct ata_taskfile *tf) if (ioaddr->ctl_addr) iowrite8(tf->ctl, ioaddr->ctl_addr); ap->last_ctl = tf->ctl; + ap->ops->sff_check_status(ap); } if (is_addr && (tf->flags & ATA_TFLAG_LBA48)) { @@ -453,6 +454,7 @@ void ata_sff_tf_load(struct ata_port *ap, const struct ata_taskfile *tf) iowrite8(tf->device, ioaddr->device_addr); VPRINTK("device 0x%X\n", tf->device); } + ap->ops->sff_check_status(ap); } EXPORT_SYMBOL_GPL(ata_sff_tf_load); -- To unsubscribe from this list: 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