USB - Preallocate umass buffers to avoid interrupt deadlock
commitb7feb10e74d528c0e7e81c343e9dd66677e6980d
authorMatthew Dillon <dillon@apollo.backplane.com>
Mon, 7 Sep 2009 02:37:55 +0000 (6 19:37 -0700)
committerMatthew Dillon <dillon@apollo.backplane.com>
Mon, 7 Sep 2009 02:37:55 +0000 (6 19:37 -0700)
tree3d830010d4ccbcce70495a7588d45cf5bb835c5e
parent9670bddac1b917ea3a748ff3769bc8728f3fc2d8
USB - Preallocate umass buffers to avoid interrupt deadlock

* Try to avoid usb allocations made from the interrupt servicer.
  These can deadlock the interrupt handler and any other device
  sharing that irq as well as cause USB panics due to the broken
  critical section.

* This is only a temporary fix.  Another unaddressed issue is
  contigmalloc()'s inability to allocate large physically contiguous
  buffers after the machine has been up a while.

Reported-by: Rumko and multiple others over time
sys/bus/usb/usbdi.c
sys/dev/usbmisc/umass/umass.c