Do not disable interrupt vectors for shared interrupts when more than 99% are

unhandled. Otherwise it brings more trouble than it solves as it also disables
the interrupt of other devices (most often USB or network).

git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@24120 a95241bf-73f2-0310-859d-f6bbb57e9c96
This commit is contained in:
Michael Lotz 2008-02-25 18:56:18 +00:00
parent c80d10ee35
commit c0f9f1b158
1 changed files with 6 additions and 2 deletions

View File

@ -308,8 +308,12 @@ int_io_interrupt_handler(int vector, bool levelTriggered)
io_vectors[vector].unhandled_count++;
io_vectors[vector].ignored_count++;
}
// disable interrupt when more than 99% are unhandled
if (io_vectors[vector].trigger_count > 100000) {
// disable interrupt when more than 99% are unhandled and this is not a
// shared interrupt
if (io_vectors[vector].trigger_count > 100000
&& !(io_vectors[vector].handler_list.next != NULL
&& io_vectors[vector].handler_list.next->next != NULL)) {
if (io_vectors[vector].ignored_count > 99000) {
io_vectors[vector].enable_count = -100;
arch_int_disable_io_interrupt(vector);