Messages in this thread Patch in this message | | | Date | Fri, 22 Aug 2003 00:44:11 +0200 | From | Andrea Arcangeli <> | Subject | Re: Possible race condition in i386 global_irq_lock handling. |
| |
On Thu, Aug 21, 2003 at 11:48:24PM +0200, Stephan von Krawczynski wrote: > > > smb_rmb is enough in practice for x86 (in asm-i386), but not the right > > barrier in general because rmb only serializes reads against reads, so > > it would also make little sense while reading the i386 code. here you've > > to serialize a write against a read so it would be misleading unless you > > know exactly the lowlevel implementations of those barriers. > > > > smp_mb() before the while loop should be the correct barrier for all > > archs and the asm generated on x86 will be the same. > > > > alpha, ia64 and x86-64 (and probably others) needs it too. > > Can some kind soul please provide me with the needed mini-patch. I would like > to try that on my constantly crashing SMP test box...
--- 2.4.22pre7aa1/include/asm-i386/hardirq.h.~1~ 2003-07-20 18:39:04.000000000 +0200 +++ 2.4.22pre7aa1/include/asm-i386/hardirq.h 2003-08-22 00:24:08.000000000 +0200 @@ -71,6 +71,8 @@ static inline void irq_enter(int cpu, in { ++local_irq_count(cpu); + smp_mb(); + while (test_bit(0,&global_irq_lock)) { cpu_relax(); } Andrea - 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/
| |