I'm seeing this while testing on Linus' current master: [ 427.814466] WARNING: CPU: 0 PID: 0 at kernel/irq/handle.c:149 __handle_irq_event_percpu+0x187/0x190 [ 427.832552] irq 116 handler _base_interrupt+0x0/0x9e0 [mpt3sas] enabled interrupts I tracked it down to commit 669f044170d8 ("scsi: srp_transport: Move queuecommand() wait code to SCSI core"). That commit made it so scsi_internal_device_block() can sleep, but mpt3sas calls this from an interrupt handler: _base_interrupt -> _base_async_event -> mpt3sas_scsih_event_callback -> _scsih_check_topo_delete_events -> _scsih_block_io_to_children_attached_directly -> _scsih_block_io_device -> _scsih_internal_device_block -> scsi_internal_device_block This change was made in 4.10. Bart, can you take a look? Thanks.