On Fri, May 29, 2020 at 12:37 PM Doug Anderson dianders@chromium.org wrote:
I'm not sure I understand. Are you saying that you'll just add shutdown callbacks to all the drivers using this IRQ and call disable_irq() there? That seems like the best solution to me.
I don't get it. A hypothetical machine could have literally anything sharing the IRQ line, right? If it is important to call disable_irq during shutdown (I have no idea if it is) then shouldn't the kernel core just disable all irqs after calling all the driver shutdown callbacks?
Anyways, my screaming interrupt occurs after a a new kernel has been booted with kexec. In this case, it doesn't matter if the old kernel called disable_irq or not. As soon as the new kernel re-enables the interrupt line, the kernel immediately disables it again with a backtrace due to the unhandled screaming interrupt. That's why the dwc2 hardware needs to have its interrupts turned off when the old kernel is shutdown.