Subject: Re: too many interrupts
To: C Kane <ckane@best.com>
From: Manuel Bouyer <bouyer@antioche.lip6.fr>
List: current-users
Date: 07/07/2000 11:32:55
On Thu, Jul 06, 2000 at 10:23:40PM -0700, C Kane wrote:
> Hello.
>
> In recent kernels, I have a problem with a Cyclades-Y multi-port
> serial card on my NetBSD/i386. These cards support external modules
> which can connect as many as 32 serial ports to one PCI card.
>
> The problem does not happen in 1.3I. I don't know at which version the
> problem started, but the problem exists in 1.4X through 1.5_ALPHA.
>
> If one of the Cyclades-Y serial ports receives a character while
> that device is not opened (like by 'tip'), then NetBSD begins
> processing around 24,000 interrupts per second. Sometimes this
> will not happen until a program opens the device, and then the program
> ends, and then a character arrives on the serial port.
>
> Once the interrupts start happening, opening the port (like with 'tip')
> will put things back to normal.
>
> Here's a brief bit of a kernel backtrace I got once while the interrupts
> were happening:
> cpu_Debugger()
> internal_command()
> wskbd_translate()
> wskbd_input()
> pckbd_input()
> pckbcintr()
> Xintr1() at Xintr+0x70
> --interrupt--
> Xdoreti() at Xdoreti+0xe
> --interrupt--
> Xdoreti() at Xdoreti+0x3
> [ 17 more --interrupt-- frames like these ]
> --interrupt--
> Xspllower(c08c4400,f04,89,c08c0089,c08c4400) at Xspllower+0xe
> dp8390_read(c08c4400,f04,89,c04c4400,c0101f70) at dp8930_read+0x1d
> dp8390_rint(c08c4400) at dp8390+rint+0x1ea
> we_recv_int(c08c4400,c08b9d10,c0101f70,7fffffff,33) at we_recv_int+0x7a
> dp8390_intr(c08c4400) at dp8390+intr+0x43c
> Xintr7() at Xintr7+0x70
> --interrupt--
> Xspllower(c036cb64,1,c0231e28,0,7fffffff) at Xspllower+0xe
> nfs_timer(0) at nfs_timer+0x33e
> softclock(d2a00010,10,d29fa5f0,d29fa5f0,d2a0bf30) at softclock+0x121
> Bad frame pointer: 0xd2a0bebc
>
> I do not believe there is an 8390 device in the system. It has an SMC
> combo 16 card:
> we0 at isa0 port 0x280-0x29f iomem 0xcc000-0xcffff irq 7
> we0: SMC8216/SMC8216C Ethernet (16-bit)
> we0: Ethernet address 00:00:c0:4c:cb:01
The we driver uses the dp8390 routines.
Now, for your problem, I suspect that when the serial port is not opened the
interrupt isn't acknowledged properly. Check the interrupt routine of the
cy driver.
--
Manuel Bouyer, LIP6, Universite Paris VI. Manuel.Bouyer@lip6.fr
--