Dmitry Komissaroff ?????:
Sepherosa Ziehau ?????:

Point 3 is really trouble, because all other I can around installing DF on
main EEE disk.

--- ata-lowlevel.c.old  Fri Dec 22 23:26:16 2006
+++ ata-lowlevel.c      Mon Dec 15 06:37:58 2008
@@ -511,6 +511,7 @@
    ATA_IDX_OUTB(ch, ATA_CONTROL, ATA_A_IDS | ATA_A_RESET);
    ata_udelay(10000);
    ATA_IDX_OUTB(ch, ATA_CONTROL, ATA_A_IDS);
+device_printf(dev,"Antihang magic string :)\n"); //there!!!
    ata_udelay(100000);

What will happen if you increase the value, say, to 500000, in the
above ata_udelay() and remove the device_printf()?

I set ata_udelay() from 10000 to 500000. Nothing happend... It still hang.

Finally I solve this problem. There is a path witch enable using tsleep() instead of DELAY in ata_udelay(). But one question still no answer. If device_printf() is above ata_udelay() all ok, but if it below... I think guilty lay on acpi timer, because without acpi on all work fine.


--- ata-all.c.old       2008-12-17 05:17:26 +0300
+++ ata-all.c   2008-12-17 05:15:25 +0300
@@ -827,10 +827,11 @@
 {
     /* for now just use DELAY, the timer/sleep subsytems are not there yet */
     /* XXX use DRIVERSLEEP if possible */
-
+/*
     if (1 || interval < (1000000/hz))
        DELAY(interval);
-    else    
+    else
+*/    
        tsleep(&interval, 0, "ataslp", interval/(1000000/hz));
 
 }

Reply via email to