On Fri, 20 Nov 2020 10:24:20 +0100 Sebastian Andrzej Siewior <bigeasy@xxxxxxxxxxxxx> wrote: > falconide_get_lock() is called by ide_lock_host() and its caller > (ide_issue_rq()) has already a might_sleep() check. > > stdma_lock() has wait_event() which also has a might_sleep() check. > > Remove the in_interrupt() check. > > ... > > --- a/drivers/ide/falconide.c > +++ b/drivers/ide/falconide.c > @@ -51,8 +51,6 @@ static void falconide_release_lock(void) > static void falconide_get_lock(irq_handler_t handler, void *data) > { > if (falconide_intr_lock == 0) { > - if (in_interrupt() > 0) > - panic("Falcon IDE hasn't ST-DMA lock in interrupt"); > stdma_lock(handler, data); > falconide_intr_lock = 1; > } The current mainline falconide_get_lock() is very different: static void falconide_release_lock(void) { if (falconide_intr_lock == 0) { printk(KERN_ERR "%s: bug\n", __func__); return; } falconide_intr_lock = 0; stdma_release(); }