svn commit: r195960 - in head/sys/dev/usb: . controller input (regression patch)

Robert Watson rwatson at FreeBSD.org
Mon Aug 3 09:57:21 UTC 2009


On Mon, 3 Aug 2009, Hans Petter Selasky wrote:

> On Monday 03 August 2009 10:28:38 Ed Schouten wrote:
>> * Robert Watson <rwatson at FreeBSD.org> wrote:
>>> I'm a bit surprised the timed key repeat in this patch would work properly 
>>> in DDB, as microtime(9) relies on interrupts firing for updated 
>>> timestamps.  The availability of interrupts for polled input consumers 
>>> varies, but in general this is not true (for example) at the DDB command 
>>> prompt.  Does this code work correctly when time stands still?
>>
>> Apart from that, who gives a *beep* about keyboard repeat while inside the 
>> debugger. I have to confess it would be irritating to press backspace 
>> multiple times, instead of holding the key pressed, but still, it's not 
>> worth it.
>
> I think getmicrotime relies on interrupts, while microtime doesn't.
>
> See "man microtime".

You're right, but that doesn't make things better :-).  Some of the 
tc_get_timecount() calls are safe in the DDB environment, but several are not. 
In particular, tick_get_timecount_mp() and i8254_get_timecount() both acquire 
locks, the former the thread scheduler lock, and the latter a dedicated 
spinlock.  This produces the opportunity for rather nasty deadlocks in DDB, 
especially tick_get_timecount_mp() on sparc64.

This was the bug I was actually looking for in your patch, but then misread 
microtime() and concluded you had a different one. :-)  I would much rather 
not have DDB rely on, for example, not contending thread_lock(), than have key 
repeat in DDB.

Robert N M Watson
Computer Laboratory
University of Cambridge


More information about the svn-src-all mailing list