patch: fix 30 second hang while resuming

Nate Lawson nate at
Fri Mar 4 22:11:02 GMT 2005

Anish Mistry wrote:
> On Sunday 27 February 2005 06:12 pm, Nate Lawson wrote:
>>Nate Lawson wrote:
>>>My system hangs a long time in ata_generic_reset() while
>>>resuming.  I did some hunting and found that the loop was running
>>>for the full 310 * 100 ms (31 seconds).  The bug is that the loop
>>>never exits when mask goes to 0 even though this is a termination
>>>condition (see end of the loop where the code masks off 1 and 2).
>>>The attached patch fixes this by exiting when the mask is set to
>>>0 instead of looping the full 31 seconds.  This is correct since
>>>setting the mask to 0 is how the loop marks master/slave "done". 
>>>It also has a minor whitespace fix.
>>Apologies, the last patch was not quite right.  You need to check
>>that both status values are not "busy" as well as the mask.  This
>>check could be merged in elsewhere as well.  This was just a
>>convenient place to put it.
>>Please use the attached patch instead.
> This works well for me.  Is this going to be committed?

Already done (by Matthew Dodd).  It will hopefully be MFCd before 5.4.


More information about the freebsd-stable mailing list