[SCSI] ips: fix soft lockup during reset initialization
authorAndrew Morton <akpm@osdl.org>
Thu, 9 Nov 2006 03:56:26 +0000 (19:56 -0800)
committerJames Bottomley <jejb@mulgrave.il.steeleye.com>
Wed, 15 Nov 2006 22:43:30 +0000 (16:43 -0600)
  Resetting the adapter causes the ServeRAID driver to exceed the max time
  allowed by the softlock watchdog.  Resetting the hardware can easily require
  30 or more seconds.  To avoid the

"BUG: soft lockup detected on CPU#0!"

  result, this patch adds a touch_nmi_watchdog() to the driver's MDELAY macro.

Cc: Nishanth Aravamudan <nacc@us.ibm.com>
Cc: Nick Piggin <nickpiggin@yahoo.com.au>
Acked-by: Jack Hammer <jack_hammer@adaptec.com>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: James Bottomley <James.Bottomley@SteelEye.com>
drivers/scsi/ips.h

index 34680f3dd4523e10662aa03f6605478c2a72b262..b726dcc424b190f214d571a828339c125f28c6c4 100644 (file)
@@ -51,6 +51,7 @@
    #define _IPS_H_
 
 #include <linux/version.h>
+#include <linux/nmi.h>
    #include <asm/uaccess.h>
    #include <asm/io.h>
 
             dev_printk(level , &((pcidev)->dev) , format , ## arg)
    #endif
 
-   #ifndef MDELAY
-      #define MDELAY mdelay
-   #endif
+   #define MDELAY(n)                   \
+       do {                            \
+               mdelay(n);              \
+               touch_nmi_watchdog();   \
+       } while (0)
 
    #ifndef min
       #define min(x,y) ((x) < (y) ? x : y)