On 2020-11-20 14:35:35 [-0800], Andrew Morton wrote: > 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: I have this patch on-top of next-20201120 so it should apply. You realize that the above hunk is against falconide_get_lock() while the below is falconide_release_lock(). If there is something wrong with the patch (or its commit message) I'm sorry but I don't understand your signal :) > 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(); > } Sebastian