On Fri, Jun 12, 2020 at 12:34:47PM +0200, Marc Kleine-Budde wrote: > On 6/12/20 12:31 PM, Oleksij Rempel wrote: > > On Fri, Jun 12, 2020 at 12:21:13PM +0200, Krzysztof Kozlowski wrote: > >> On Fri, Jun 12, 2020 at 11:56:04AM +0200, Wolfram Sang wrote: > >>> On Fri, Jun 12, 2020 at 11:29:41AM +0200, Krzysztof Kozlowski wrote: > >>>> On Fri, Jun 12, 2020 at 11:05:17AM +0200, Wolfram Sang wrote: > >>>>> On Wed, Jun 10, 2020 at 03:46:42PM +0200, Krzysztof Kozlowski wrote: > >>>>>> If interrupt comes early (could be triggered with CONFIG_DEBUG_SHIRQ), > >>>>> > >>>>> That code is disabled since 2011 (6d83f94db95c ("genirq: Disable the > >>>>> SHIRQ_DEBUG call in request_threaded_irq for now"))? So, you had this > >>>>> without fake injection, I assume? > >>>> > >>>> No, I observed it only after enabling DEBUG_SHIRQ (to a kernel with > >>>> some debugging options already). > >>> > >>> Interesting. Maybe probe was deferred and you got the extra irq when > >>> deregistering? > >> > >> Yes, good catch. The abort happens right after deferred probe exit. It > >> could be then different reason than I thought - the interrupt is freed > >> through devm infrastructure quite late. At this time, the clock might > >> be indeed disabled (error path of probe()). > > From my point of view, the clocks are disabled as Oleksij pointed out, due to > RUNTIME_PM at the end of probe(): > > > pm_runtime_mark_last_busy(&pdev->dev); > > pm_runtime_put_autosuspend(&pdev->dev); These lines come from regular successful probe path, not deferred error path. The clock is indeed disabled but not because of runtime PM, but: clk_disable: clk_disable_unprepare(i2c_imx->clk); Best regards, Krzysztof