Hi Matteo, Sorry for the late response. Some personal/work issues prevented me in reacting faster. > +static int ar7_wdt_open(struct inode *inode, struct file *file) > +{ > + /* only allow one at a time */ > + if (down_trylock(&open_semaphore)) > + return -EBUSY; > + ar7_wdt_enable_wdt(); > + expect_close = 0; > + > + return 0; > +} The /dev/watchdog device is a VFS (Virtual File System). We thus use a: return nonseekable_open(inode, file); > +static ssize_t ar7_wdt_write(struct file *file, const char *data, > + size_t len, loff_t *ppos) > +{ > + if (*ppos != file->f_pos) > + return -ESPIPE; > + Since we use the nonseekable_open we don't need the if (*ppos != file->f_pos) return -ESPIPE; > +static int __init ar7_wdt_init(void) > +{ ... > + rc = misc_register(&ar7_wdt_miscdev); > + if (rc) { > + printk(KERN_ERR DRVNAME ": unable to register misc device\n"); > + goto out_alloc; > + } > + > + rc = register_reboot_notifier(&ar7_wdt_notifier); > + if (rc) { > + printk(KERN_ERR DRVNAME > + ": unable to register reboot notifier\n"); > + goto out_register; > + } > + goto out; > + > +out_register: > + misc_deregister(&ar7_wdt_miscdev); > +out_alloc: > + release_mem_region(ar7_regs_wdt, sizeof(struct ar7_wdt)); > +out: > + return rc; > +} It's better to first register the reboot-notifier instead of registering the misc-device. The misc-device gives userspace allready access to the device and that's something that you want to do as the last action to prevent problems. For the rest: all OK. If you want I'll add it to the linux-2.6-watchdog-mm tree with the above mentioned changes. Greetings, Wim.