Messages in this thread Patch in this message | | | From | (Linus Torvalds) | Subject | Re: SMP _death_ | Date | 29 Apr 1997 04:55:39 GMT |
| |
In article <Pine.LNX.3.91.970428084352.4337A-100000@chaos.analogic.com>, Richard B. Johnson <root@analogic.com> wrote: >The following patch seems to fix the SMP death problem on my machine. > >--- /usr/src/linux-2.1.36/arch/i386/kernel/irq.c.orig Mon Apr 28 01:31:43 1997 >+++ /usr/src/linux-2.1.36/arch/i386/kernel/irq.c Mon Apr 28 08:34:36 1997 >@@ -543,6 +543,7 @@ > { > struct irqaction * action; > int do_random, cpu = smp_processor_id(); >+ synchronize_irq(); > irq_enter(cpu, irq); > kstat.interrupts[irq]++;
Could you try putting the "synchronize_irq()" call into the "disable_irq()" function instead (arch/i386/kernel/irq.c), which should fix at least one potential bug in the SCSI mid-layer code (not a bug in the SCSI code itself, but a bug in disable_irq()).
That particular fix is in my pre-patch-2.1.37, but I have to say that while my current pre-patch is very interesting indeed, it may be more prudent to apply just the disable_irq() part.
(But _real_ men get the pre-patch, just to see what magical speedups have happened: SMP system call latency is noticeably better).
Linus
| |