Fixes this warning: May 18 06:56:01 Knoppix kernel: Debug: sleeping function called from invalid context at include/asm/semaphore.h:119 May 18 06:56:01 Knoppix kernel: in_atomic():1, irqs_disabled():0 May 18 06:56:01 Knoppix kernel: Call Trace: May 18 06:56:01 Knoppix kernel: [] __might_sleep+0xb2/0xd3 May 18 06:56:01 Knoppix kernel: [] powermate_config_complete+0x33/0x77 [powermate] May 18 06:56:01 Knoppix kernel: [] usb_hcd_giveback_urb+0x25/0x39 May 18 06:56:01 Knoppix kernel: [] uhci_finish_urb+0x54/0xa1 May 18 06:56:01 Knoppix kernel: [] uhci_finish_completion+0x43/0x55 May 18 06:56:01 Knoppix kernel: [] uhci_irq+0xf8/0x179 May 18 06:56:01 Knoppix kernel: [] usb_hcd_irq+0x36/0x67 May 18 06:56:01 Knoppix kernel: [] handle_IRQ_event+0x3a/0x64 May 18 06:56:01 Knoppix kernel: [] do_IRQ+0xb8/0x192 May 18 06:56:01 Knoppix kernel: [] common_interrupt+0x18/0x20 Attached patch uses spinlocks instead of a semaphore so that we can't sleep when in_atomic(). -- James Lamanna