On Fri, Apr 16, 2021 at 10:35:25PM +0800, dillon min wrote: > Hi Johan > > Thanks for share your patch. > > Johan Hovold <johan@xxxxxxxxxx>于2021年4月16日 周五22:11写道: > > > When DMA is enabled the receive handler runs in a threaded handler, but > > the primary handler up until very recently neither disabled interrupts > > in the device or used IRQF_ONESHOT. This would lead to a deadlock if an > > interrupt comes in while the threaded receive handler is running under > > the port lock. > > > Greg told me there was a patch fixed this case. In case hard irq & > threaded_fn both offered. The local_irq_save() will be executed before call > driver’s threaded handler. > > Post the original mail from Greg > > Please see 81e2073c175b ("genirq: Disable interrupts for force threaded > handlers") for when threaded irq handlers have irqs disabled, isn't that > the case you are trying to "protect" from here? > > Why is the "threaded" flag used at all? The driver should not care. > > Also see 9baedb7baeda ("serial: imx: drop workaround for forced irq > threading") in linux-next for an example of how this was fixed up in a > serial driver. Neither of these commits are (directly) related to the problem this patch addresses (they are about force-threaded handlers, this is about a normal threaded handler which run with interrupts enabled). Johan