APIC and edge triggered vs level triggered

From: Miquel van Smoorenburg (miquels@cistron.nl)
Date: Fri Jul 14 2000 - 18:03:42 EST


I tried to take a new news server into production last week, with
the following config:

AMI Megarum II board w/ 2xPIII/450 1 GB RAM, dual symbios onboard SCSI
1 9 GB system disk on scsi0, 4 18 GB spool disks on scsi1
Linux 2.2.17pre11

After 5-15 minutes, the system hung. The symbios chipset stopped to
deliver interrupts. When I posted this to linux-scsi, Gerard Roudier
said that it was logical that the system wasn't stable: APIC PCI
interrupts have to be level triggered and not edge triggered, while
the output from /proc/interrupts said:

           CPU0 CPU1
 10: 41954 47456 IO-APIC-edge sym53c8xx
 15: 1684 3355 IO-APIC-edge sym53c8xx

However, in the AMI BIOS (or the scsi bios) there is no way to adjust
this. The BIOS sets the interrupts to edge triggered, and that's it.

I have been able to create a test case with several processes r/w ing
all 4 disks at the same time while simultaneously running bonnie on
a raid0 partition spanning 4 disks that triggers the lockup in 1 minute.
Everything still works, it's just that the symbios chipset stops
delivering interrupts (due to them being in edge triggered mode I guess).

I booted with "noapic" and the test has been running for 9 hours now
without any errors. However this is suboptimal.

Is there anyone who has seen the same? Is there a way in the Linux
PCI kernel code to change an interrupt from edge to level triggered?
I had a look at the PCI code, but it seems that it just takes it
all from the BIOS and that there's no way to change it.

Thanks

Mike.

-
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/



This archive was generated by hypermail 2b29 : Sat Jul 15 2000 - 21:00:21 EST