On 1/22/21 4:31 AM, Andy Shevchenko wrote: > When SCU is not ready and CONFIG_DEBUG_SHIRQ=y we got deferred probe followed > by fired test IRQ which immediately makes kernel panic. Fix this by delaying > IRQ handler registration till SCU is ready. > > Fixes: 80ae679b8f86 ("watchdog: intel-mid_wdt: Convert to use new SCU IPC API") > Signed-off-by: Andy Shevchenko <andriy.shevchenko@xxxxxxxxxxxxxxx> > Acked-by: Linus Walleij <linus.walleij@xxxxxxxxxx> > Reviewed-by: Mika Westerberg <mika.westerberg@xxxxxxxxxxxxxxx> Reviewed-by: Guenter Roeck <linux@xxxxxxxxxxxx> > --- > drivers/watchdog/intel-mid_wdt.c | 8 ++++---- > 1 file changed, 4 insertions(+), 4 deletions(-) > > diff --git a/drivers/watchdog/intel-mid_wdt.c b/drivers/watchdog/intel-mid_wdt.c > index 1ae03b64ef8b..9b2173f765c8 100644 > --- a/drivers/watchdog/intel-mid_wdt.c > +++ b/drivers/watchdog/intel-mid_wdt.c > @@ -154,6 +154,10 @@ static int mid_wdt_probe(struct platform_device *pdev) > watchdog_set_nowayout(wdt_dev, WATCHDOG_NOWAYOUT); > watchdog_set_drvdata(wdt_dev, mid); > > + mid->scu = devm_intel_scu_ipc_dev_get(dev); > + if (!mid->scu) > + return -EPROBE_DEFER; > + > ret = devm_request_irq(dev, pdata->irq, mid_wdt_irq, > IRQF_SHARED | IRQF_NO_SUSPEND, "watchdog", > wdt_dev); > @@ -162,10 +166,6 @@ static int mid_wdt_probe(struct platform_device *pdev) > return ret; > } > > - mid->scu = devm_intel_scu_ipc_dev_get(dev); > - if (!mid->scu) > - return -EPROBE_DEFER; > - > /* > * The firmware followed by U-Boot leaves the watchdog running > * with the default threshold which may vary. When we get here >