patch: fix 30 second hang while resuming
nate at root.org
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