Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 3 Jun 2008 10:21:35 -0400
From:      John Baldwin <jhb@freebsd.org>
To:        freebsd-stable@freebsd.org
Cc:        Peter Jeremy <peterjeremy@optushome.com.au>, stable@freebsd.org
Subject:   Re: Interrupt storm with shared interrupt on digi(4)
Message-ID:  <200806031021.35416.jhb@freebsd.org>
In-Reply-To: <20080603070840.GH1028@server.vk2pj.dyndns.org>
References:  <20080603070840.GH1028@server.vk2pj.dyndns.org>

next in thread | previous in thread | raw e-mail | index | archive | help
On Tuesday 03 June 2008 03:08:40 am Peter Jeremy wrote:
> I have an on-going problem with DigiBoard Xem boards causing interrupt
> storms (since 4.x days).  The FreeBSD driver polls the board and
> doesn't have a functional interrupt handler (and Linux behaves in the
> same way).  It seems that under some conditions, the board will assert
> its interrupt line and, since there's no interrupt handler to clear
> whatever triggered the interrupt, the IRQ is never unasserted.
> 
> In the past, I have managed to avoid the problem by putting the Digi
> card on a dedicated interrupt.  For reasons I don't understand, this
> appears to mask the problem.

That is because we leave interrupts masked until it gets an interrupt handler.  
Since digi(4) doesn't register a handler, we leave the interrupt masked 
unless some other device is sharing the same interrupt and registers a 
handler.

> Unfortunately, I now have a system where, courtesy of Compaq's
> incompetence, I have no way to avoid having two Digi boards sharing an
> interrupt.  In 7.x, as soon as I load digi.ko, I get "interrupt storm"
> messages.  In 6.x, I could see the interrupt storm but it didn't
> flood my console with messages.
> 
> Does anyone have a patch that will generate an appropriate EOI to
> a DigiBoard?

No.  Even better would be if there was a way to disable interrupt generation 
in the digi(4) driver via some register.

> Alternatively, can anyone suggest how I can disable or mask a specified
> PCI interrupt?

The problem is that in this case you have another driver that is using that 
interrupt, so if you completely mask the interrupt the other driver will stop 
getting interrupts and likely stop working.

-- 
John Baldwin



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200806031021.35416.jhb>