On Tue, 2019-02-05 at 09:12 +-0100, Miklos Szeredi wrote: +AD4 Not all variants of the waitqueue interface require irqs to be +AD4 disabled, and fuse has nothing whatsoever to do with irqs, so there's +AD4 no sane reason to disable them. +AD4 +AD4 Also, AFAICS, the fuse device does not support asynchronous IO. I +AD4 just don't get what this is about... Hi Miklos, Could this be what happens? aio+AF8-poll() calls vfs+AF8-poll() vfs+AF8-poll() calls fuse+AF8-dev+AF8-poll() fuse+AF8-dev+AF8-poll() calls poll+AF8-wait(file, +ACY-fiq-+AD4-waitq, wait) poll+AF8-wait() calls aio+AF8-poll+AF8-queue+AF8-proc(file, +ACY-fiq-+AD4-waitq, wait) aio+AF8-poll+AF8-queue+AF8-proc() stores +ACY-fiq-+AD4-waitq in pt-+AD4-iocb-+AD4-poll.head aio+AF8-poll() calls spin+AF8-lock+AF8-irq(+ACY-ctx-+AD4-ctx+AF8-lock) aio+AF8-poll() calls spin+AF8-lock(+ACY-req-+AD4-head-+AD4-lock) (req +AD0APQ +ACY-pt-+AD4-iocb-+AD4-poll). I think the lockdep complaint is about the FUSE fiq-+AD4-waitq lock not being IRQ-safe and about aio+AF8-poll() creating a dependency between an IRQ-safe lock (ctx-+AD4-ctx+AF8-lock) and a lock that is not IRQ-safe (fiq-+AD4-waitq). Thanks, Bart.