need to ensure kpreempt_disable() for softint_schedule().

fix the locking in ohci_timeout_task(), ohci_device_isoc_start(),
ohci_device_isoc_abort() and ohci_device_isoc_close().

uaudio(4) can still play with these, but mixerctl -a against it will
hang the writer.  however, mixerctl continues to run in a tight loop
and the system isn't soft-locked up at this point, an advance from
how it is in -current.
don't forget to drop the lock in ohci_intr if we got there when
polling.  also don't try to drop a lock we don't have in ohci_open.

XXX: these might apply to ehci as well, i found them when porting
XXX: to uhci.
my compiles-but-un-runtime-tested port of uhci to usbmp branch.
based upon the ohci and ehci changes.
kassert the right lock.
don't take the sc_lock in uhci_device_request() since it is already
taken (as verified by the assert at the top of this function.)
make this build without DIAGNOSTIC
kill some #ifdef USB_DEBUG with some compiler smarts.
- convert usbd_bus_methods{} and usbd_pipe_methods{} to use
  c99 struct initialisers

- move the locks from the pipe to the bus, since we'll need
  access to them from bus-level ops

- remove dead-for-years SPLUSBCHECK and replaced it with
  asserts that the thread lock is held

- begin to document the locking scheme

- convert usbd_*lock_pipe() into real function-like macros
convert the remaining wakeup(xfer)'s to use the xfer->cv.

utoppy - untested.
make ohci mostly work again.
- make pipe->close method take the thread lock

- convert usb_taskq to use mutex/cv

- convert needs_explore usage into a cv on the thread lock

- remove KERNEL_*LOCK from uaudio and umidi, since we're supposedly
  MPSAFE here now

- use IPL_SCHED instead of IPL_USB (aka biglocked) interrupts

- drop the audio thread lock when calling into usb when it may sleep,
  avoiding a deadlock between audiowrite and audioioctl.  this fixes
  mixerctl -a vs. playing hanging the system
  XXX probably need to check this in a bunch more places.
merge to -current.
merge from -current (not sure why these were missed).
pullup umidi.c 1.60:
>fix the reversed logic in several uses of the new 'closing' member
>introduced in the previous change.
>
>from Tom Ivar Helbekkmo <tih@hamartun.priv.no> in PR 45909.  thanks!
remove the spl handling from usb_insert_transfer() since we're
already holding the relevant lock (which is asserted.)
several changes to the MP usb apis, and other misc changes:

- usb_transfer_complete()/usb_insert_transfer()/usb_start_next() all
  must have the thread lock held

- (*soft_intr) now is called with the thread lock held unless we are
  in polling mode.  add a usb_soft_intr() to deal with this

- XXX usbd_set_polling() api exists to increase/decrease the polling
  count, but only ukbd uses.  everyone else open codes it, but this
  should probably be changed

- (*abort) is now called with the thread lock held

- update several comments to not refer to splusb() anymore

- add many more asserts

- use more c99 struct initialisers
adjust some comments to reality.  copy some XXX comments from ehci
into uhci/ohci since it's probably right there too
convert splusb() calls to using a new usb_blk_lock.
convert usb event code to using a mutex and condvar.
remove a bunch of superfluous parens.