On Wed, Nov 15, 2006 at 11:22:23AM -0700, Berck E. Nash wrote: > Tejun Heo wrote: > >Hmmm.. Can you try with the attached patch applied? Also, please turn > >on kernel config 'Kernel Hacking -> Show timing info on printks' and > >report boot dmesg. > > Looks like you forgot to attach the patch, so I couldn't test it:) > Here's the section with the annoying hang with timing info. I noticed > that there are similar messages repeated later, but without as much > hang, so I've attached the entire dmesg as well, in case it's of any help.
Yeah, I did and forgot about this thread too. Sorry. This is on the top of my to-do list now. I'm attaching the patch. TIA. -- tejun
diff --git a/drivers/ata/libata-core.c b/drivers/ata/libata-core.c index 3fd7c79..89aa449 100644 --- a/drivers/ata/libata-core.c +++ b/drivers/ata/libata-core.c @@ -2669,20 +2669,26 @@ int sata_phy_debounce(struct ata_port *a /* DET stable? */ if (cur == last) { + printk("SATA PHY: stable DET=%x\n", cur); if (cur == 1 && time_before(jiffies, timeout)) continue; - if (time_after(jiffies, last_jiffies + duration)) + if (time_after(jiffies, last_jiffies + duration)) { + printk("SATA PHY: debounced\n"); return 0; + } continue; } + printk("SATA PHY: unstable DET=%x->%x\n", last, cur); /* unstable, start over */ last = cur; last_jiffies = jiffies; /* check timeout */ - if (time_after(jiffies, timeout)) + if (time_after(jiffies, timeout)) { + printk("SATA PHY: failed to debounce\n"); return -EBUSY; + } } } diff --git a/include/linux/libata.h b/include/linux/libata.h index 9080789..8220ca3 100644 --- a/include/linux/libata.h +++ b/include/linux/libata.h @@ -689,10 +689,11 @@ extern const struct ata_port_operations static inline const unsigned long * sata_ehc_deb_timing(struct ata_eh_context *ehc) { - if (ehc->i.flags & ATA_EHI_HOTPLUGGED) +/* if (ehc->i.flags & ATA_EHI_HOTPLUGGED) return sata_deb_timing_hotplug; else - return sata_deb_timing_normal; + return sata_deb_timing_normal;*/ + return sata_deb_timing_long; } static inline int ata_port_is_dummy(struct ata_port *ap)