From c0f9f1b158fe7bcfcfc888643047368850c18967 Mon Sep 17 00:00:00 2001 From: Michael Lotz Date: Mon, 25 Feb 2008 18:56:18 +0000 Subject: [PATCH] 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 --- src/system/kernel/int.c | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/src/system/kernel/int.c b/src/system/kernel/int.c index c7b2e568e2..f640273440 100644 --- a/src/system/kernel/int.c +++ b/src/system/kernel/int.c @@ -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);