DragonFly kernel List (threaded) for 2008-12
DragonFly BSD
DragonFly kernel List (threaded) for 2008-12
[Date Prev][Date Next]  [Thread Prev][Thread Next]  [Date Index][Thread Index]

Re: Asus EEE, acpi and nata driver


From: Dmitry Komissaroff <aunoor@xxxxxxxxx>
Date: Tue, 16 Dec 2008 23:45:02 +0300

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));
 
 }


[Date Prev][Date Next]  [Thread Prev][Thread Next]  [Date Index][Thread Index]