[Asterisk-Users] te410p with serial console fails with error: TE410P: Double/missed interrupt detected

Mark Spencer markster at digium.com
Sun Aug 24 08:33:51 MST 2003


> I am having trouble getting the te410p to work with a serial console.  Has
> anyone else had this problem?  Am I doing somthing wrong? Interupt
> problem? Is this a bug?

The serial console likely is blocking interrupts for too long when it
engages.  Zaptel requires interrupts be serviced 1000 times per second,
for an interrupt latency of < 1ms max.  Generally this is not a problem,
but some systems in linux (e.g. IDE if DMA is enabled, Framebuffer
console, etc) block interrupts for exceptionally long periods of time,
thus causing this sort of problem.

> On redhat 9 without serial console, it works but with errors.
>
> working grub line:
> kernel /vmlinuz-2.4.20-20.9smp ro root=LABEL=/ hdc=ide-scsi
>
> root]# modprobe wct4xxp
> Warning: /lib/modules/2.4.20-20.9smp/misc/wct4xxp.o symbol for parameter
> loopback not found
> Module wct4xxp loaded, with warnings

This is fine.  The "loopback" option just hasn't been done (not sure it
will since it was just a hack -- i should just pull that out).

> /var/log/messages contains the following then it is quiet:
> Aug 24 00:20:50 a001 kernel: CSLIP: code copyright 1989 Regents of the
> University of California
> Aug 24 00:20:49 a001 kernel: PPP generic driver version 2.4.2
> Aug 24 00:20:50 a001 kernel: Zapata Telephony Interface Registered on
> major 196
> Aug 24 00:20:49 a001 kernel: Found TE410P at base address d0000000,
> remapped to e11b1000
> Aug 24 00:20:49 a001 kernel: TE410P version c01a003a
> Aug 24 00:20:49 a001 kernel: FALC version: 00000005, Board ID: 00
> Aug 24 00:20:49 a001 kernel: Reg 0: 0x1d769800
> Aug 24 00:20:49 a001 kernel: Reg 1: 0x1d769000
> Aug 24 00:20:49 a001 kernel: Reg 2: 0x07fc07fc
> Aug 24 00:20:49 a001 kernel: Reg 3: 0x00000000
> Aug 24 00:20:49 a001 kernel: Reg 4: 0x00000000
> Aug 24 00:20:49 a001 kernel: Reg 5: 0x00000000
> Aug 24 00:20:49 a001 kernel: Reg 6: 0xc01a003a
> Aug 24 00:20:49 a001 kernel: Reg 7: 0x00001000
> Aug 24 00:20:49 a001 kernel: Reg 8: 0x00000000
> Aug 24 00:20:49 a001 kernel: Reg 9: 0x00ff0000
> Aug 24 00:20:49 a001 kernel: Reg 10: 0x00000000
> Aug 24 00:20:49 a001 kernel: TE410P: Launching card: 0
> Aug 24 00:20:49 a001 kernel: TE410P: Setting up global serial parameters
> Aug 24 00:20:50 a001 kernel: TE410P: Timing from source 0
> Aug 24 00:20:49 a001 kernel: Found a Wildcard: Wildcard TE410P-Xilinx
> Aug 24 00:20:50 a001 kernel: Registered tone zone 0 (United States / North
> America)
> Aug 24 00:20:50 a001 kernel: TE410P: Span 1 configured for ESF/B8ZS
> Aug 24 00:20:50 a001 kernel: TE410P: Span 2 configured for ESF/B8ZS
> Aug 24 00:20:50 a001 kernel: TE410P: Span 3 configured for ESF/B8ZS
> Aug 24 00:20:50 a001 kernel: TE410P: Span 4 configured for ESF/B8ZS
> Aug 24 00:20:50 a001 kernel: Pre-interrupt
> Aug 24 00:20:50 a001 kernel: Got interrupt, status = 00000001
> Aug 24 00:20:50 a001 kernel: TE410P: Double/missed interrupt detected
> Aug 24 00:20:50 a001 kernel: Pre-interrupt
> Aug 24 00:20:50 a001 kernel: Got interrupt, status = 00000002
> Aug 24 00:20:50 a001 kernel: Pre-interrupt
> Aug 24 00:20:50 a001 kernel: Got interrupt, status = 00000001
> Aug 24 00:20:50 a001 kernel: Pre-interrupt
> Aug 24 00:20:50 a001 kernel: Got interrupt, status = 00000002
> Aug 24 00:20:50 a001 kernel: Pre-interrupt
> Aug 24 00:20:50 a001 kernel: Got interrupt, status = 00000001
> Aug 24 00:20:50 a001 kernel: Pre-interrupt
> Aug 24 00:20:50 a001 kernel: Got interrupt, status = 00000002
> Aug 24 00:20:50 a001 kernel: Pre-interrupt
> Aug 24 00:20:50 a001 kernel: Got interrupt, status = 00000001
> Aug 24 00:20:50 a001 kernel: Pre-interrupt
> Aug 24 00:20:50 a001 kernel: Got interrupt, status = 00000002
> Aug 24 00:20:50 a001 kernel: Pre-interrupt
> Aug 24 00:20:50 a001 kernel: Got interrupt, status = 00000001
> Aug 24 00:20:50 a001 kernel: Pre-interrupt
> Aug 24 00:20:50 a001 kernel: Got interrupt, status = 00000002
> Aug 24 00:20:50 a001 kernel: Pre-interrupt
> Aug 24 00:20:50 a001 kernel: Got interrupt, status = 00000001
> Aug 24 00:20:50 a001 kernel: Pre-interrupt
> Aug 24 00:20:50 a001 kernel: Got interrupt, status = 00000002
> Aug 24 00:20:50 a001 kernel: Pre-interrupt
> Aug 24 00:20:50 a001 kernel: Got interrupt, status = 00000001
> Aug 24 00:20:50 a001 kernel: Pre-interrupt
> Aug 24 00:20:50 a001 kernel: Got interrupt, status = 00000002
> Aug 24 00:20:50 a001 kernel: Pre-interrupt
> Aug 24 00:20:50 a001 kernel: Got interrupt, status = 00000001
> Aug 24 00:20:50 a001 kernel: Pre-interrupt
> Aug 24 00:20:50 a001 kernel: Got interrupt, status = 00000002
> Aug 24 00:20:50 a001 kernel: Pre-interrupt
> Aug 24 00:20:50 a001 kernel: Got interrupt, status = 00000001
> Aug 24 00:20:50 a001 kernel: Pre-interrupt
> Aug 24 00:20:50 a001 kernel: Got interrupt, status = 00000002
> Aug 24 00:20:50 a001 kernel: Pre-interrupt
> Aug 24 00:20:50 a001 kernel: Got interrupt, status = 00000001
> Aug 24 00:20:50 a001 kernel: Pre-interrupt

That's some fairly useful (for us) debugging to know that everything is
happy.

> Got interrupt, status = 00000003
> TE410P: Double/missed interrupt detected
> Pre-interrupt
> TE410P: Double/missed interrupt detected
> TE410P: Double/missed interrupt detected
> TE410P: Double/missed interrupt detected

Right, and each of these messages in turn likely creates another
double/missed interrupt because it's writing it to the serial console.

Mark




More information about the asterisk-users mailing list