Xilinx PIC and kernel interrupt handler

flat view

From: Stig Telfer <hidden>
Date: 2006-07-31 14:07:46

Hi -

There appears to be a kernel bug in the 2.4 and 2.6.17.7 kernel trees relating to reading the interrupt vector from the Xilinx PIC (xilinx_pic_get_irq() in xilinx_pic.c).  As I see it, here's the problem: If no interrupt is pending, the register should read all ones.  However, the IVR is only as wide as the number of interrupt sources.  The routine mistakenly assumes sign extension and checks for a 32-bit read of -1 instead of a read of w bits where w is the number of connected interrupt sources.

The 2.6 version also has a search-and-replace glitch relating to removal of the reversal of bit numbering.  I have attached a two line patch (for 2.6.17.7) that makes the IVR comparison against the right bit pattern and removes the remnants of the former bit-reversal code.

Share and enjoy,
Stig Telfer

Attachments

Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help