Re: SMP safe driver with 2.0.36

Claude Gamache (cgamache@cae.ca)
26 Mar 1999 18:18:27 -0500


alan@lxorguk.ukuu.org.uk (Alan Cox) writes:

> > this work fine without losing any interrupt on a P100. It does also
> > work on a PII 450 MHz with 2.0.36 UP. The problem is when I switched
> > to 2.0.36 SMP on a dual PII 450 MHz. From time to time, I lose an
> > interrupt. And if I don't acknowledge the interrupt, the card stops
> > sending them. So the transmission stops.
>
> Losing it is a bit worrying, You might miss some interrupts in the sense
> of taking > 1/4000th of a second to service them but it shouldnt miss any.

I've optimized a bit the interrupt handler and made a bunch of
tests. Now with kernel 2.0.36 UP on a PII 450 MHz, the driver never
loses any interrupt (4000 ints per second), even under very high load.

On the very same computer, when I boot it with 2.0.36 SMP, the driver
keeps losing interrupts, even with moderate and low load. The problem
seems to be happening when there is an IPI interrupt.

[I must read smp.tex to understand what is this IPI]

But the IPI interrupt seems to be happening along with many other
interrupts (IPI, scsi, eth, PCI RS422)...

When a single device produces many interrupts individually (alone),
the problem doesn't occur.

So the problem might be the overall time required to consume all the
interrupts.... Since our driver must acknowledge with 0.512 ms after
the interrupt.

Perhaps switching to 2.2.4acx would do the job since interrupts are
sent the both CPUs and not only CPU 0...

>
> Alan

Thanks Alan,

have nice weekend,

Claude

P.S.: I "monitored" the interrupts with xosview + cat /proc/interrupts.

-- 
  Claude Gamache, CAE Electronique Ltee, 8585 Cote-de-Liesse  
  Saint-Laurent,  Quebec, Canada H4T 1G6                        
  Email: cgamache@cae.ca  Tel.: (514) 341-2000 x3194, Fax: (514) 734-5612

- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.rutgers.edu Please read the FAQ at http://www.tux.org/lkml/