kern_yield vs ukbd_yield

Hans Petter Selasky hselasky at c2i.net
Wed Dec 14 21:59:10 UTC 2011


On Wednesday 14 December 2011 16:37:50 Andriy Gapon wrote:
> on 13/12/2011 10:17 Andriy Gapon said the following:
> > on 13/12/2011 00:21 Andriy Gapon said the following:
> [snip]
> 
> > And in the view of the below data I would like us to revisit this
> > problem. I looked over usb code and it seems that all usb threads are
> > created with priorities of either USB_PRI_MED or USB_PRI_HIGH, which
> > translates to PI_SWI(SWI_CAMBIO) and PI_SWI(SWI_NET).  These priorities
> > should be in the ithread range, so it's kind of surprising that the init
> > thread (with PVM priority) can cause troubles for them.
> 
> So, Hans Petter, do you recall any details of this problem?
> I am curious about which thread got starved by which.

From what I know this was 100% reproducible.

Remove the ukbd_yield() when at the mountroot prompt. Result: cannot type any 
keys. No USB devices will enumerate!

> 
> BTW, given your recent improvements to pause(9) what do you think about
> further extending it to also use DELAY(9) when kdb_active is set or when
> SCHEDULER_STOPPED() is true? 

I think this is a good idea. It already checks for "cold". USB usually doesn't 
use this function though when polling.

> Then, probably, pause(9) could be used for
> both branches in ukbd_do_poll and they could be collapsed together.

--HPS


More information about the freebsd-usb mailing list