Re: [PATCH] Re: Linux v2.6.22-rc3

From: Tejun Heo
Date: Wed Jun 06 2007 - 04:46:49 EST


Gregor Jasny wrote:
> 2007/6/2, Jeff Garzik <jeff@xxxxxxxxxx>:
>> Does this patch change the behavior at all?
>
> No. It still times out. I've raised the first timeout to 60 seconds
> but still no luck.

Let's see where we're failing. Please apply the attached patch and
report what kernel says.

Thanks.

--
tejun
diff --git a/drivers/ata/libata-core.c b/drivers/ata/libata-core.c
index 4733f00..ae6f177 100644
--- a/drivers/ata/libata-core.c
+++ b/drivers/ata/libata-core.c
@@ -3053,8 +3053,11 @@ static int ata_bus_post_reset(struct ata_port *ap, unsigned int devmask,
if (dev0) {
rc = ata_wait_ready(ap, deadline);
if (rc) {
- if (rc != -ENODEV)
+ if (rc != -ENODEV) {
+ ata_port_printk(ap, KERN_WARNING,
+ "ata_bus_post_reset: EXIT0\n");
return rc;
+ }
ret = rc;
}
}
@@ -3070,15 +3073,21 @@ static int ata_bus_post_reset(struct ata_port *ap, unsigned int devmask,
lbal = ioread8(ioaddr->lbal_addr);
if ((nsect == 1) && (lbal == 1))
break;
- if (time_after(jiffies, deadline))
+ if (time_after(jiffies, deadline)) {
+ ata_port_printk(ap, KERN_WARNING,
+ "ata_bus_post_reset: EXIT1\n");
return -EBUSY;
+ }
msleep(50); /* give drive a breather */
}
if (dev1) {
rc = ata_wait_ready(ap, deadline);
if (rc) {
- if (rc != -ENODEV)
+ if (rc != -ENODEV) {
+ ata_port_printk(ap, KERN_WARNING,
+ "ata_bus_post_reset: EXIT2\n");
return rc;
+ }
ret = rc;
}
}
@@ -3090,6 +3099,7 @@ static int ata_bus_post_reset(struct ata_port *ap, unsigned int devmask,
if (dev0)
ap->ops->dev_select(ap, 0);

+ ata_port_printk(ap, KERN_WARNING, "ata_bus_post_reset: EXIT3\n");
return ret;
}