Andrey Panin <[EMAIL PROTECTED]> wrote: > > > This patch adds driver for IBM Automatic Server Restart watchdog hardware > found in some IBM eServer xSeries machines. This driver is based on the ugly > driver provided by IBM. Driver was tested on IBM eServer 226. > > ... > + > + case ASMTYPE_JASPER: > + type = "Jaspers "; > + > + /* FIXME: need to use pci_config_lock here, but it's not > exported */
That's gregkh material. > + > +/* spin_lock_irqsave(&pci_config_lock, flags);*/ > + > + /* Select the SuperIO chip in the PCI I/O port register */ > + outl(0x8000f858, 0xcf8); > + > + /* > + * Read the base address for the SuperIO chip. > + * Only the lower 16 bits are valid, but the address is word > + * aligned so the last bit must be masked off. > + */ > + asr_base = inl(0xcfc) & 0xfffe; > + > +/* spin_unlock_irqrestore(&pci_config_lock, flags);*/ > > ... > > +static int asr_ioctl(struct inode *inode, struct file *file, > + unsigned int cmd, unsigned long arg) > +{ > + static const struct watchdog_info ident = { > + .options = WDIOF_KEEPALIVEPING | WDIOF_SETTIMEOUT | > + WDIOF_MAGICCLOSE, > + .identity = "IBM ASR" > + }; > + void __user *argp = (void __user *)arg; > + int __user *p = argp; > + int heartbeat; > + > + switch (cmd) { > + case WDIOC_GETSUPPORT: > + return copy_to_user(argp, &ident, sizeof(ident)) ? > + -EFAULT : 0; > + > + case WDIOC_GETSTATUS: > + case WDIOC_GETBOOTSTATUS: > + return put_user(0, p); > + > + case WDIOC_KEEPALIVE: > + asr_toggle(); > + return 0; > + > + > + case WDIOC_SETTIMEOUT: > + if (get_user(heartbeat, p)) > + return -EFAULT; > + /* Fall */ > + > + case WDIOC_GETTIMEOUT: > + heartbeat = 256; > + return put_user(heartbeat, p); Something very wrong is happening with WDIOC_SETTIMEOUT and WDIOC_GETTIMEOUT. They're both no-ops and the effect of WDIOC_SETTIMEOUT is immidiately overwritten. - To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to [EMAIL PROTECTED] More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/