Jump to content

S-ATA & IOKitWait timeout...


  • Please log in to reply
57 replies to this topic

#21
ar4er

ar4er

    InsanelyMac Protégé

  • Members
  • Pip
  • 34 posts
  • Gender:Male
  • Location:Donetsk, Ukraine
Just need to add plug-ins. Here with plug-ins:

Attached Files



#22
pauℓzurrr.

pauℓzurrr.

    Paul

  • Members
  • PipPipPipPipPipPipPip
  • 552 posts
  • Gender:Male
  • Location:Amsterdam
Thank you, working great now :D
Even seems that I'm starting up a little faster.

#23
xypep

xypep

    InsanelyMac Protégé

  • Just Joined
  • Pip
  • 4 posts
it works! My long boot times have now been resolved with this kext. Thanks

#24
kyle c

kyle c

    InsanelyMac Protégé

  • Members
  • Pip
  • 31 posts
  • Gender:Male
How do you install this kext? I need to get my boot time down! It is 3min! Thanks

How do you install this kext? I need to get my boot time down! It is 3min! Thanks

#25
嗯哼恩赫

嗯哼恩赫

    InsanelyMac Protégé

  • Just Joined
  • Pip
  • 1 posts
oh!but why i can't download it!!

#26
hythyt9898

hythyt9898

    InsanelyMac Protégé

  • Just Joined
  • Pip
  • 1 posts
ok!i can't DL it in LINUX,but well in WIN,thank you!

#27
cNone

cNone

    InsanelyMac Protégé

  • Members
  • Pip
  • 10 posts
thank you for this kext it really speeds up boot process but i have a problem with it.
i can't see my pata dvd-drives..
is there any solution?
my specs:

Asus M3A with SB600/AMD770 chipset
AMD Athlon 6000+ dual core
Asus nVidia 8800 GT 512
2gb 800mhz RAM
Samsung 400gb SATA
Philips 1640 DVD writer
Pioneer DVDROM
leo4all v4.1 AMD install
Voodoo Kernel 9.5

#28
ergosteur

ergosteur

    InsanelyMac Sage

  • Members
  • PipPipPipPipPip
  • 275 posts
  • Gender:Male
  • Location:Brampton, Ontario, Canada
Thanks for this, unfortunately it doesn't work for me.
I still get the IOKitWait timeout, and all my displays go black for after the verbose mode text/apple logo. It takes over 2 minutes before the desktop shows.
My setup is a
P5W DH Deluxe
Pentium DC 2140@2.4
Intel ICH7R (AHCI Mode)
JMicron JMB363 onboard (AHCI Mode)
JMicron JMB363 PCIe card (RAID Mode, can't be changed)
ASUS GeForce 7300LE (1 Display)
XFX GeForce 7950GT (2 Displays)

I installed using the Generic Boot-132 CD and now i'm using the "boot from EFI partition" method.

#29
thepraxXx

thepraxXx

    InsanelyMac Protégé

  • Members
  • Pip
  • 23 posts
I have the same problem with IOKit Wait timeout. My boot takes 4-5 min. :(
I downloaded IOATAFamily but it don't help..

#30
vamitul

vamitul

    InsanelyMac Protégé

  • Just Joined
  • Pip
  • 3 posts
wierd problem. after i install it works great, my boot time is considerably lower, but i don't see my DVD drive anymore. my sys: Asus m2r32-mvp, chipset SB600, Asus DVD drive on IDE, hdd on SATA, running on Native Ide mode.

#31
verynice

verynice

    InsanelyMac Protégé

  • Members
  • PipPip
  • 54 posts
  • Gender:Male
  • Location:Canada
Greatest kext ever.

#32
verdant

verdant

    InsanelyMac V.I.P.

  • Gurus
  • 5,602 posts
  • Gender:Male
  • Interests:At home, I have the following computers......
    >
    >
    >
I have tested the 10.5.6 version of the ar4er modified IOATAFamily.kext (following the idea of coolyou of modifying the timeout setting) on my eSATA HDD OS X volume......it boots OK and removes the delay "IOKitWaitQuiet() timed out waiting to write kernel symbols".......HOWEVER in my case at least, when I put OS X to sleep and then wake OS X from sleep all the HDD volumes (i.e. both eSATA external and SATA internal HDD volume icons) appear on the Desktop......but I then get the "Device Removal" warning message appearing

QUOTEDevice Removal
The device you removed was not properly put away. Data might have been lost or destroyed. Before you unplug your device, you must first select its icon in the Finder and choose Eject from the File view.

and just afterwards the SATA internal HDD volume icons begin disappearing from the Desktop until all have disappeared........

The reason for this becomes apparent when the function of IOKitWaitQuiet is seen in IOATAController.cpp :
for( int i = 0; i < 3100; i++){// read the status register - helps deal with devices which errantly// set interrupt pending states during resets. Reset operations are not// supposed to generate interrupts, but some devices do anyway.// interrupt handlers should be prepared to deal with errant interrupts on ATA busses.OSSynchronizeIO();UInt8 status = *_tfStatusCmdReg;// when drive is ready, break the loopif( ( status & readyMask )== readyOn){// device reset completed in timeresetFailed = false;break;}IOSleep( 10 ); // sleep thread for another 10 ms}if( resetFailed ){// it is likely that this hardware is broken.// There's no recovery action if the drive fails// to reset.DLOG("IOATA device failed to reset.\n");result = kATATimeoutErr;}DLOG("IOATA reset complete.\n");return result;}/*---------------------------------------------------------------------------** Subclasses should take necessary action to create DMA channel programs,* for the current memory descriptor in _currentCommand and activate the* the DMA hardware---------------------------------------------------------------------------*/IOReturnIOATAController::startDMA( void ){DLOG("IOATA Bus controllers that offer DMA must provide implementation/n");return kATAModeNotSupported;}/*---------------------------------------------------------------------------* Subclasses should take all actions necesary to safely shutdown DMA engines* in any state of activity, whether finished, pending or stopped. Calling* this function must be harmless reguardless of the state of the engine.*---------------------------------------------------------------------------*/IOReturnIOATAController::stopDMA( void ){DLOG("IOATA Bus controllers that offer DMA must provide implementation/n");return kATAModeNotSupported;}/*---------------------------------------------------------------------------// WaitForU8Status// Will wait up to one millisecond for the value in the altStatus register & mask to equal the value// passed in. Note that I always use the altStatus register so as not to have the side affect of clearing// the interrupt if there is one.---------------------------------------------------------------------------*/boolIOATAController::waitForU8Status (UInt8 mask, UInt8 value){int i;// we will read the status from the alt status register so as not// to clear the interrupt accidentallyfor (i=0; i < kStatusDelayLoopMS; i++){OSSynchronizeIO();if ((*_tfAltSDevCReg & mask) == value){return true;}IODelay( kStatusDelayTime );}return false; // time's up}/*----------------------------------------------------------------------------------------------------** Routine ATAPISlaveExists**** Purpose: Determines whether an ATAPI device seen as a "slave" of a master ATAPI device** is actually present, or the product of the master shadowing a not-present slave's registers** Call this function when the master device shows EBh 14h, and the slave also shows the ATAPI** protocol signature.** Returns: False if a device is ruled out. True if a device is verified. Leaves device in a ready state,** But no longer showing signatures.NOTE: Device 1 (slave) is assumed already selected.*/boolIOATAController::ATAPISlaveExists( void ){UInt8 scratchByte;UInt16 scratchWord;UInt32 dataCounter;UInt32 loopCounter;// The only option is to issue a command and see what happens.OSSynchronizeIO();*_tfAltSDevCReg = 0x02; // disable interrupts//issue INDENTIFY PACKET DEVICEOSSynchronizeIO();*_tfStatusCmdReg = 0xA1;// reading and disreguarding a register provides the required 400ns delay time.OSSynchronizeIO();scratchByte = *_tfAltSDevCReg;OSSynchronizeIO();scratchByte = *_tfAltSDevCReg;// if the device returns status 00h, we declare it not present. A real device would probably be// status BSY (80h) now. An incredibly fast device might be ready to move data and show DRQ.// However, by ATA standards, a not present device is required to return 00h.// Lucky break, no device and we figured it out in a hurry.if( (scratchByte == 0x00) ){// enable device interrupt*_tfAltSDevCReg = 0x00;OSSynchronizeIO();return false;}// OK we probably have a device now. We have to wait for drive to send data, and read it and clear it.// It is possible that the a misbehaving master has decided to respond to the command. So, we'll// break on error bit and say it's not a real slave should that happen.// take a leisurely approach, this will take a while.// give the device up to 10 seconds to respond with data.for( loopCounter = 0; loopCounter < 10000; loopCounter++){OSSynchronizeIO();scratchByte = *_tfAltSDevCReg;// If drive sets error, clear status and return false. It's probably a misbehaving masterif( scratchByte & 0x01 )break;// this means the drive is really there. Clear the data and return true.if( (scratchByte & 0x58) == 0x58) // RDY=1 DRQ=1{OSSynchronizeIO();scratchByte = *_tfStatusCmdReg; // clear pending interrupt statefor( dataCounter = 0; dataCounter < 256; dataCounter++ ){OSSynchronizeIO();scratchWord = *_tfDataReg;}// enable device interrupt*_tfAltSDevCReg = 0x00;OSSynchronizeIO();return true;}// OK, sleep for 10 ms and try again.IOSleep(10);}// In the ugly case, a drive set BSY, and didn't respond within 10 seconds with data.// Otherwise, this is the for loop terminating on seeing the error bit.// We'll read status and return false.OSSynchronizeIO();scratchByte = *_tfStatusCmdReg; // clear pending interrupt state// enable device interrupt*_tfAltSDevCReg = 0x00;OSSynchronizeIO();return false;}/*---------------------------------------------------------------------------* scan the bus to see if devices are attached. The assumption is that the* devices are in a cleanly-reset state, showing their protocol signatures,* and the bus is properly wired with a pull down resistor on DD:7.* If your bus controller does not meet these conditions, you should override* and supply your own function which meets your specific hardware needs.* Your controller may or may not require a reset, or it may require more* thorough scanning, or additional configuration prior to looking for drives,* or it may aquire information from firmware indicating the devices attached.* This function should be self contained and not rely upon work loop or* or anything other than the register pointers being setup and enabled for access---------------------------------------------------------------------------*/UInt32IOATAController::scanForDrives( void ){UInt32 unitsFound = 0;UInt8 status = 0x00;// count total time spent searching max time allowed = 31 secs// it RARELY takes this long.UInt32 milsSpent = 0;// wait for a not busy bus// should be ready, but some devices may be slow to wake or spin up.for( int loopMils = 0; milsSpent < 3100; loopMils++ ){OSSynchronizeIO();status = *_tfStatusCmdReg;if( (status & mATABusy) == 0x00 )break;IOSleep( 10 );milsSpent++;}// spun on BSY for too long, declare bus emptyif( ! (milsSpent < 3100) )goto AllDone;// select each possible device on the bus, wait for BSY-// then check for protocol signatures.for( int unit = 0; unit < 2; unit++ ){// wait for a not busy busfor( int loopMils = 0; milsSpent < 3100; loopMils++ ){// write the selection bitOSSynchronizeIO();*_tfSDHReg = ( unit << 4 );IODelay( 10 );// typically, devices respond quickly to selection// but we'll give it a chance in case it is slow for some reason.status = *_tfStatusCmdReg;if( (status & mATABusy) == 0x00 ){break;}IOSleep( 10 );milsSpent++;}// spun on BSY too long, probably bad deviceif( ! (milsSpent < 3100) )goto AllDone;// check for ATAPI device signature firstif ( ( *_tfCylLoReg == 0x14) && ( *_tfCylHiReg == 0xEB) ){if( (unit == 1 )&& ( _devInfo[0].type == kATAPIDeviceType ) ){// OK we've met the condition for an indeterminate bus, master is atapi and we see a slave atapi// signature. This is legal ATA, though we are fortunate enough that most devices don't do this.if( ATAPISlaveExists( ) != true ){_devInfo[unit].type = kUnknownATADeviceType;goto AllDone;}}_devInfo[unit].type = kATAPIDeviceType;_devInfo[unit].packetSend = kATAPIDRQFast; // this is the safest default settingunitsFound++;} // check for ATA signature, including status RDY=1 and ERR=0else if ( (*_tfCylLoReg == 0x00) && (*_tfCylHiReg == 0x00) &&(*_tfSCountReg == 0x01) && (*_tfSectorNReg == 0x01) &&( (*_tfAltSDevCReg & 0x51) == 0x50) ){_devInfo[unit].type = kATADeviceType;_devInfo[unit].packetSend = kATAPIUnknown;unitsFound++;}else{_devInfo[unit].type = kUnknownATADeviceType;_devInfo[unit].packetSend = kATAPIUnknown;}}

where i < 3100 has been changed to i < 100, and all occurrences of milsSpent < 3100 have been changed to milsSpent < 100......perhaps less of a change, e.g. to <1000 may solve this issue......

#33
RiZzUs

RiZzUs

    InsanelyMac Protégé

  • Members
  • Pip
  • 35 posts

thank you for this kext it really speeds up boot process but i have a problem with it.
i can't see my pata dvd-drives..
is there any solution?
my specs:

Asus M3A with SB600/AMD770 chipset
AMD Athlon 6000+ dual core
Asus nVidia 8800 GT 512
2gb 800mhz RAM
Samsung 400gb SATA
Philips 1640 DVD writer
Pioneer DVDROM
leo4all v4.1 AMD install
Voodoo Kernel 9.5


wierd problem. after i install it works great, my boot time is considerably lower, but i don't see my DVD drive anymore. my sys: Asus m2r32-mvp, chipset SB600, Asus DVD drive on IDE, hdd on SATA, running on Native Ide mode.


Excellent news! with the help of "ar4er" I fix the IOATAFamily. kext now compatible with the player / recorders
ATA, which first disappeared ... (eg "NForce 630i and "MCP73"); the kext was taken from the Kalyway 10.5.2. Is
been fixed error "IOKit timeout Wait" . My boot from 1 min down to 23 sec .
Let me know ... THE ATTACHED FILE IS NOT AVABLE AT THE MOMENT BUT YOU CAN DOWNLOAD IT AT THIS http://board.insanel...t...post&id=641

Attached Files



#34
cNone

cNone

    InsanelyMac Protégé

  • Members
  • Pip
  • 10 posts

Excellent news! with the help of "ar4er" I fix the IOATAFamily. kext now compatible with the player / recorders
ATA, which first disappeared ... (eg "NForce 630i and "MCP73"); the kext was taken from the Kalyway 10.5.2. Is
been fixed error "IOKit timeout Wait" . My boot from 1 min down to 23 sec .
Let me know ... THE ATTACHED FILE IS NOT AVABLE AT THE MOMENT BUT YOU CAN DOWNLOAD IT AT THIS http://board.insanel...t...post&id=641


now it's even worse:(
i have backed up my original kext to try out yours.. your kext didn't work and i restored my backed up kext now i can't see my ata drives again :)
thank you anyway

#35
Astronomicon

Astronomicon

    InsanelyMac Protégé

  • Just Joined
  • Pip
  • 3 posts

now it's even worse:(
i have backed up my original kext to try out yours.. your kext didn't work and i restored my backed up kext now i can't see my ata drives again :rolleyes:
thank you anyway

Is there a fix for this yet? I get quick bootup times but still no DVD drive.


Joseph

#36
pauℓzurrr.

pauℓzurrr.

    Paul

  • Members
  • PipPipPipPipPipPipPip
  • 552 posts
  • Gender:Male
  • Location:Amsterdam
Anyone made a 10.5.7 version?
If not ill try it myself :thumbsup_anim:

#37
Musicode

Musicode

    InsanelyMac Geek

  • Members
  • PipPipPip
  • 148 posts
  • Gender:Male
I might have some good news for some of you (i hope so)
None of the above kexts worked for me either so that's what i did.
I got RiZzUs IOATA and i did some editing myshelf.So i came up wit a new
kext that worked just fine.,I hope it works for you too.

PATA and sleep working
Leo 10.5.4 booted in 20 sec

Attached File  IOATAFamily.kext.zip   396.73KB   504 downloads

Some advise:
1)Always Backup :unsure:
2)If this won't work for you try this.remove the plugins folder
and use the one from your original IOATA so you can give it another chance

Good luck and let me know how it went

#38
xstyle

xstyle

    InsanelyMac Protégé

  • Just Joined
  • Pip
  • 1 posts
ar4er,
i love u&so thank u..
one year later.
AMD&NF5 final say goodbye to 60 rounds.. :whistle: :thumbsup_anim:
it just need 20 secs to start leopard now.
i am so happy..

thank u.

#39
zuz_242

zuz_242

    InsanelyMac Geek

  • Members
  • PipPipPip
  • 159 posts
i did use the kext two posts above on my 10.5.7 install an it worked as expected :)
(i dont use sleep tough)

#40
pandele

pandele

    InsanelyMac Protégé

  • Members
  • Pip
  • 3 posts
Thanks a lot ar4er! Your modified kext works perfect.
My rig: M2N32SLI Deluxe / Athlon X2 6000 / NVIDIA 9600 GT / iPC 10.5.6 / Voodoo 9.6.0





0 user(s) are reading this topic

0 members, 0 guests, 0 anonymous users

© 2014 InsanelyMac  |   News  |   Forum  |   Downloads  |   OSx86 Wiki  |   Mac Netbook  |   PHP hosting by CatN  |   Designed by Ed Gain  |   Logo by irfan  |   Privacy Policy