Sophie

Sophie

distrib > Scientific%20Linux > 5x > x86_64 > by-pkgid > 27922b4260f65d317aabda37e42bbbff > files > 587

kernel-2.6.18-238.el5.src.rpm

warn if we sleep in an irq for a long time.

diff -urNp --exclude-from=/home/davej/.exclude linux-3022/include/linux/delay.h linux-10000/include/linux/delay.h
--- linux-3022/include/linux/delay.h
+++ linux-10000/include/linux/delay.h
@@ -10,7 +10,7 @@
 extern unsigned long loops_per_jiffy;
 
 #include <asm/delay.h>
-
+#include <linux/hardirq.h>
 /*
  * Using udelay() for intervals greater than a few milliseconds can
  * risk overflow for high loops_per_jiffy (high bogomips) machines. The
@@ -26,9 +26,13 @@ extern unsigned long loops_per_jiffy;
 #endif
 
 #ifndef mdelay
-#define mdelay(n) (\
-	(__builtin_constant_p(n) && (n)<=MAX_UDELAY_MS) ? udelay((n)*1000) : \
-	({unsigned long __ms=(n); while (__ms--) udelay(1000);}))
+#define mdelay(n) (				\
+{						\
+	static int warned=0;			\
+	unsigned long __ms=(n);			\
+	WARN_ON(in_irq() && !(warned++));	\
+	while (__ms--) udelay(1000);		\
+})
 #endif
 
 #ifndef ndelay