Not only that, the callback also ends up using watchdog_get_drvdata()
+ wdt->cdns_wdt_notifier.notifier_call = &cdns_wdt_notify_sys;
+ /* Register the reboot notifier */
+ ret = register_reboot_notifier(&wdt->cdns_wdt_notifier);
+ if (ret != 0) {
+ dev_err(&pdev->dev, "cannot register reboot notifier err=%d)\n",
+ ret);
+ return ret;
Your ordering is wrong. If the box reboots between here and the spin lock
in it further down it'll crash in your notifier.
As
+ spin_lock_init(&wdt->io_lock);
is needed before the code your notifier calls will work.
+ dev_info(&pdev->dev, "Xilinx Watchdog Timer at %p with timeout %ds%s\n",
+ wdt->regs, cdns_wdt_device->timeout,
+ nowayout ? ", nowayout" : "");
dev_dbg
if every driver felt the need to announce itself on boot you'd have pages
and pages of junk.
Alan
--
To unsubscribe from this list: send the line "unsubscribe linux-watchdog" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html