Re: SATA Cold Boot problems on >2.6.25 with NV

From: Tejun Heo
Date: Tue Sep 02 2008 - 00:37:05 EST


(cc'ing linux-ide)

Konstantin Kletschke wrote:
> Am 2008-09-01 13:18 +0200 schrieb Tejun Heo:
>
>>> Hmn, to take my pants down entirely: What is this "EH"?
>> libata EH == libatata exception handling.
>
> Seems this stuff is kinda new since 2.6.25?

I think it's more circa 2.6.22 but in my memory terms, which sucks,
that's a lifetime before so I don't really remember. :-)

>> Can you please apply the attached patch and post the resulting dmesg?
>
> Of course. Patch applied, here is dmesg output, looks interesting now -
> but anything works fine so far.

Hmm... someone is scheduling EH incessantly without any error or action
set. Can you please try the attached patch?

--
tejun
---
drivers/ata/libata-eh.c | 12 ++++++++++--
1 file changed, 10 insertions(+), 2 deletions(-)

Index: tree0/drivers/ata/libata-eh.c
===================================================================
--- tree0.orig/drivers/ata/libata-eh.c
+++ tree0/drivers/ata/libata-eh.c
@@ -671,6 +671,9 @@ static void ata_eh_set_pending(struct at

ap->pflags |= ATA_PFLAG_EH_PENDING;

+ ata_port_printk(ap, KERN_INFO, "XXX EH_SET_PENDING\n");
+ dump_stack();
+
if (!fastdrain)
return;

@@ -1077,6 +1080,11 @@ void ata_eh_about_to_do(struct ata_link
struct ata_eh_context *ehc = &link->eh_context;
unsigned long flags;

+ if (link)
+ ata_link_printk(link, KERN_INFO, "XXX about_to_do %x\n", action);
+ else if (dev)
+ ata_dev_printk(dev, KERN_INFO, "XXX about_to_do %x\n", action);
+
spin_lock_irqsave(ap->lock, flags);

ata_eh_clear_action(link, dev, ehi, action);
@@ -1890,8 +1898,8 @@ static void ata_eh_link_report(struct at
nr_failed++;
}

- if (!nr_failed && !ehc->i.err_mask)
- return;
+ //if (!nr_failed && !ehc->i.err_mask)
+ // return;

frozen = "";
if (ap->pflags & ATA_PFLAG_FROZEN)