I have written a driver for a Computer Boards CIOI INT-32 Counter/Timer/Parallel
I/O card. I program it to generate a 60Hz interrupt. The counters on the card
are Zilog Z8536 CIO chips. When the counter
counts to zero it generates and interrupt and set an interrupt pending bit. My
interrupt service routine resets the interrupt pending bit and resumes any
processes waiting on the interrupt. If the counter counts to zero and finds the
interrupt pending bit still set it sets an error bit. When I boot UP I have
bursts of errors (typically 4 to 5) that repeat every 4000 or so interrupts (66
seconds ?). When I boot SMP the errors skyrocket to about 20%.
Currently my test program is the only application running and it just waits on
the interrupt via an ioctl.
The box is an Industrial PC with a split backplane and a Trenton SBC with dual
Pentium III CPUs per side. Following is the DMESG with more details.
Any suggestions on what might be wrong?
Linux version 2.2.5-15smp ([EMAIL PROTECTED]) (gcc version
egcs-2.91.66 19990314/Linux (egcs-1.1.2 release)) #1 SMP Mon Apr 19 22:43:28 EDT
1999
Intel MultiProcessor Specification v1.1
Virtual Wire compatibility mode.
OEM ID: TRENTON Product ID: 440BX APIC at: 0xFEE00000
Processor #0 Pentium(tm) Pro APIC version 17
Processor #1 Pentium(tm) Pro APIC version 17
I/O APIC #2 Version 17 at 0xFEC00000.
Processors: 2
mapped APIC to ffffe000 (fee00000)
mapped IOAPIC to ffffd000 (fec00000)
Detected 499160288 Hz processor.
Console: colour VGA+ 80x25
Calibrating delay loop... 498.07 BogoMIPS
Memory: 127608k/131072k available (1044k kernel code, 416k reserved, 1612k data,
68k init)
VFS: Diskquotas version dquot_6.4.0 initialized
Pentium-III serial number disabled.
Checking 386/387 coupling... OK, FPU using exception 16 error reporting.
Checking 'hlt' instruction... OK.
POSIX conformance testing by UNIFIX
mtrr: v1.26 (19981001) Richard Gooch ([EMAIL PROTECTED])
Pentium-III serial number disabled.
per-CPU timeslice cutoff: 100.03 usecs.
CPU0: Intel 00/07 stepping 02
calibrating APIC timer ...
.... CPU clock speed is 499.1470 MHz.
.... system bus clock speed is 99.8292 MHz.
Booting processor 1 eip 2000
Calibrating delay loop... 498.07 BogoMIPS
Pentium-III serial number disabled.
OK.
CPU1: Intel 00/07 stepping 02
Total of 2 processors activated (996.15 BogoMIPS).
enabling symmetric IO mode... ...done.
ENABLING IO-APIC IRQs
init IO_APIC IRQs
IO-APIC pin 0, 18, 20, 21, 22, 23 not connected.
number of MP IRQ sources: 20.
number of IO-APIC registers: 24.
testing the IO APIC.......................
... register #00: 02000000
...... : physical APIC id: 02
... register #01: 00170011
...... : max redirection entries: 0017
...... : IO APIC version: 0011
... register #02: 00000000
...... : arbitration: 00
... IRQ redirection table:
NR Log Phy Mask Trig IRR Pol Stat Dest Deli Vect:
00 000 00 1 0 0 0 0 0 0 00
01 000 00 0 0 0 0 0 1 1 59
02 0FF 0F 0 0 0 0 0 1 1 51
03 000 00 0 0 0 0 0 1 1 61
04 000 00 0 0 0 0 0 1 1 69
05 000 00 0 0 0 0 0 1 1 71
06 000 00 0 0 0 0 0 1 1 79
07 000 00 0 0 0 0 0 1 1 81
08 000 00 0 0 0 0 0 1 1 89
09 000 00 0 0 0 0 0 1 1 91
0a 000 00 0 0 0 0 0 1 1 99
0b 000 00 0 0 0 0 0 1 1 A1
0c 000 00 0 0 0 0 0 1 1 A9
0d 000 00 1 0 0 0 0 0 0 00
0e 000 00 0 0 0 0 0 1 1 B1
0f 000 00 0 0 0 0 0 1 1 B9
10 0FF 0F 1 1 0 1 0 1 1 C1
11 0FF 0F 1 1 0 1 0 1 1 C9
12 000 00 1 0 0 0 0 0 0 00
13 0FF 0F 1 1 0 1 0 1 1 D1
14 000 00 1 0 0 0 0 0 0 00
15 000 00 1 0 0 0 0 0 0 00
16 000 00 1 0 0 0 0 0 0 00
17 000 00 1 0 0 0 0 0 0 00
IRQ to pin mappings:
IRQ0 -> 2
IRQ1 -> 1
IRQ3 -> 3
IRQ4 -> 4
IRQ5 -> 5
IRQ6 -> 6
IRQ7 -> 7
IRQ8 -> 8
IRQ9 -> 9
IRQ10 -> 10
IRQ11 -> 11
IRQ12 -> 12
IRQ13 -> 13
IRQ14 -> 14
IRQ15 -> 15
IRQ16 -> 16
IRQ17 -> 17
IRQ19 -> 19
................................... done.
PCI: PCI BIOS revision 2.10 entry at 0xfdb91
PCI: Using configuration type 1
PCI: Probing PCI hardware
PCI->APIC IRQ transform: (B0,I6,P0) -> 16
PCI: Enabling I/O for device 00:3a
PCI->APIC IRQ transform: (B0,I11,P0) -> 19
PCI->APIC IRQ transform: (B1,I13,P0) -> 17
Linux NET4.0 for Linux 2.2
Based upon Swansea University Computer Society NET3.039
NET4: Unix domain sockets 1.0 for Linux NET4.0.
NET4: Linux TCP/IP 1.0 for NET4.0
IP Protocols: ICMP, UDP, TCP, IGMP
Initializing RT netlink socket
Starting kswapd v 1.5
Detected PS/2 Mouse Port.
Serial driver version 4.27 with MANY_PORTS MULTIPORT SHARE_IRQ enabled
ttyS00 at 0x03f8 (irq = 4) is a 16550A
ttyS01 at 0x02f8 (irq = 3) is a 16550A
pty: 256 Unix98 ptys configured
Real Time Clock Driver v1.09
RAM disk driver initialized: 16 RAM disks of 4096K size
PIIX4: IDE controller on PCI bus 00 dev 39
PIIX4: not 100% native mode: will probe irqs later
ide0: BM-DMA at 0xffa0-0xffa7, BIOS settings: hda:DMA, hdb:pio
hda: ATAPI 48X CDROM, ATAPI CDROM drive
ide0 at 0x1f0-0x1f7,0x3f6 on irq 14
hda: ATAPI 48X CD-ROM drive, 128kB Cache
Uniform CDROM driver Revision: 2.54
Floppy drive(s): fd0 is 1.44M
FDC 0 is a post-1991 82077
md driver 0.90.0 MAX_MD_DEVS=256, MAX_REAL=12
raid5: measuring checksumming speed
raid5: using high-speed MMX checksum routine
pII_mmx : 1191.387 MB/sec
p5_mmx : 1163.574 MB/sec
8regs : 860.679 MB/sec
32regs : 617.601 MB/sec
using fastest function: pII_mmx (1191.387 MB/sec)
scsi : 0 hosts.
scsi : detected total.
md.c: sizeof(mdp_super_t) = 4096
Partition check:
RAMDISK: Compressed image found at block 0
autodetecting RAID arrays
autorun ...
.. autorun DONE.
VFS: Mounted root (ext2 filesystem).
(scsi0) <Adaptec AIC-7880 Ultra SCSI host adapter> found at PCI 6/0
(scsi0) Wide Channel, SCSI ID=7, 16/255 SCBs
(scsi0) Downloading sequencer code... 413 instructions downloaded
scsi0 : Adaptec AHA274x/284x/294x (EISA/VLB/PCI-Fast SCSI) 5.1.15/3.2.4
<Adaptec AIC-7880 Ultra SCSI host adapter>
scsi : 1 host.
(scsi0:0:0:0) Synchronous at 10.0 Mbyte/sec, offset 15.
Vendor: SEAGATE Model: ST39175LW Rev: 0001
Type: Direct-Access ANSI SCSI revision: 02
Detected scsi disk sda at scsi0, channel 0, id 0, lun 0
SCSI device sda: hdwr sector= 512 bytes. Sectors= 17783240 [8683 MB] [8.7 GB]
sda: sda1 sda2 < sda5 sda6 sda7 sda8 sda9 >
autodetecting RAID arrays
autorun ...
.. autorun DONE.
VFS: Mounted root (ext2 filesystem) readonly.
change_root: old root has d_count=1
Trying to unmount old root ... okay
Freeing unused kernel memory: 68k freed
Adding Swap: 7996k swap-space (priority -1)
tulip.c:v0.91 4/14/99 [EMAIL PROTECTED]
eth0: Digital DS21143 Tulip rev 65 at 0xec00, 00:01:6F:02:09:1C, IRQ 19.
eth0: EEPROM default media type Autosense.
eth0: Index #0 - Media 10baseT (#0) described by a 21142 Serial PHY (2) block.
eth0: Index #1 - Media 10baseT-FD (#4) described by a 21142 Serial PHY (2)
block.
eth0: Index #2 - Media 100baseTx (#3) described by a 21143 SYM PHY (4) block.
eth0: Index #3 - Media 100baseTx-FD (#5) described by a 21143 SYM PHY (4)
block.
Installing knfsd (copyright (C) 1996 [EMAIL PROTECTED]).
nfsd_init: initialized fhcache, entries=256
rmnet: Entering init_module()
rmnet: 1 Reflective Memory device found.
rmnet: Exiting init_module()
-
Linux SMP list: FIRST see FAQ at http://www.irisa.fr/prive/dmentre/smp-howto/
To Unsubscribe: send "unsubscribe linux-smp" to [EMAIL PROTECTED]