Prevent reuse of IRQ0 vector when using IO-APIC
Bug #276334 reported by
Stefan Bader
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
linux (Ubuntu) |
Fix Released
|
Medium
|
Stefan Bader | ||
Hardy |
Fix Released
|
Medium
|
Stefan Bader |
Bug Description
Repeatedly loading and unloading a driver that uses a non-shared IRQ (always the case for MSI) will eventually assign the vector used by IRQ0 (timer). This is because IRQ0 is setup early in the IO_APIC (32bit) code without marking the associated bit in the map of used vectors. This is a specific problem in the 32bit code of the IO APIC.
Testcase: 32bit system with IO APIC in use. Unload and load a driver which does not share its IRQ repeatedly. After around 163 cycles cat /proc/interrupts will not show any new interrupts on IRQ0 and the system sometimes starts to freeze until any key is hit (trigger some other interrupt).
Changed in linux: | |
status: | Fix Released → In Progress |
To post a comment you must log in.
This patch has been submitted upstream. Since 2.6.28 (tip) has reworked the whole code, this seems to apply only to 2.6.24-2.6.27.