Some other related questions and information.  Any help answering any of
these questions is appreciated.

I'm working on a driver for a PCI device.  The kernel version is
2.2.12-20smp (from
RedHat 6.1 distribution).  My problem occurs when running the SMP
kernel, but not
when running the UP kernel.

1. When we enter the ISR (interrupt service routine), are interrupts
disabled?  Or
is the specific IRQ level masked?

2. If I'm in my ISR, and the device then generates another interrupt,
what should
happen?  Under the UP kernel, I see that the ISR is called back to
service the new
interrupt (as it should).  However, under the SMP kernel, the ISR is not
called, and
the device sits there unserviced (even though it's asserting its
interrupt line).
Why?

3. Interestingly, the device is designated as "IO-APIC-edge" under SMP,
while it is
designated "XT-PIC" under UP.  Why the difference?  Does "XT-PIC" mean
it's a
level-trigered interrupt?

4. The whole thing would work if the interrupts were treated as
level-trigered.
What determines if a device will be designated "IO-APCI-edge" or
"IO-APIC-level"?

5. Can a device driver change the designation of "IO-APIC-edge" to
"IO-APCI-level"?


Again, thank you,
Juan Gonzalez
-
Linux SMP list: FIRST see FAQ at http://www.irisa.fr/prive/dmentre/smp-howto/
To Unsubscribe: send "unsubscribe linux-smp" to [EMAIL PROTECTED]

Reply via email to