lkml.org 
[lkml]   [2002]   [Jul]   [12]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
Patch in this message
/
Date
From
SubjectNUMA-Q breakage 5/7 in_interrupt() race
On smaller machines, bootstrapping proceeds far enough to see races
in kmaps near generic_file_read() etc. This is precisely the
in_interrupt() BUG(), but it's quite clear this is happening in
process context. Not even the smaller machines can survive this.
That is, it is impossible to run at all without it (or an equivalent).

Robert, please apply.


Thanks,
Bill


===== include/asm-i386/hardirq.h 1.7 vs edited =====
--- 1.7/include/asm-i386/hardirq.h Mon May 20 10:51:17 2002
+++ edited/include/asm-i386/hardirq.h Thu Jul 11 19:51:02 2002
@@ -22,8 +22,24 @@
* Are we in an interrupt context? Either doing bottom half
* or hardware interrupt processing?
*/
-#define in_interrupt() ({ int __cpu = smp_processor_id(); \
- (local_irq_count(__cpu) + local_bh_count(__cpu) != 0); })
+static inline int in_interrupt(void)
+{
+ int total_count, retval, cpu;
+
+ preempt_disable();
+ cpu = smp_processor_id();
+
+ total_count = local_irq_count(cpu) + local_bh_count(cpu);
+
+ if (total_count)
+ retval = 1;
+ else
+ retval = 0;
+
+ preempt_disable();
+
+ return retval;
+}

#define in_irq() (local_irq_count(smp_processor_id()) != 0)

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
\
 
 \ /
  Last update: 2005-03-22 13:27    [from the cache]
©2003-2011 Jasper Spaans