Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 2 Feb 2006 18:05:03 -0700 (MST)
From:      Scott Long <scottl@pooker.samsco.org>
To:        Jack Vogel <jfvogel@gmail.com>
Cc:        Michal Mertl <mime@traveller.cz>, Julian Elischer <julian@elischer.org>, freebsd-current@freebsd.org
Subject:   Re: em(4) stops forwarding
Message-ID:  <20060202180247.M10747@pooker.samsco.org>
In-Reply-To: <2a41acea0602021701o20d66381t6c3979d7826d956a@mail.gmail.com>
References:  <1138813174.1358.34.camel@genius.i.cz> <43E0FE09.50804@samsco.org> <1138875351.1807.12.camel@genius.i.cz> <43E203F9.9060307@samsco.org>  <1138890130.9192.3.camel@genius.i.cz> <43E2184B.3040606@samsco.org>  <43E256DD.1030504@elischer.org> <2a41acea0602021701o20d66381t6c3979d7826d956a@mail.gmail.com>

next in thread | previous in thread | raw e-mail | index | archive | help
On Thu, 2 Feb 2006, Jack Vogel wrote:

> On 2/2/06, Julian Elischer <julian@elischer.org> wrote:
>>
>> the big "workaround" that may save lives would be to have a "storm
>> detection" that detects that
>> an interrupt is not being reset, say, by noticing that the same
>> interrupt has fired 32 times without
>> ever giving the system a chance to even get out of the interrupt
>> handling layer,
>> and then on detection call the interrupt routine sof EVERY DRIVER that
>> is registerred
>> for interrupts.
>>
>> I have done similar to this on one of our machines where the redirected
>> interrupt is being sent
>> to the interrupt used by em4, when em0 gets delayed.
>>
>> My solution for this embedded hardware is to add a hack so that when em4
>> gets an interrupt and there
>> isn't one, it goes and services all the other em devices as well.
>> (remember this is for a particular hardware config so I can use
>> non-general solutions)..
>>
>> Another way to achieve this would be to have a special driver that you
>> register on the 'target'
>> interrupt, that when run, calls the correct interrupt handlers :-)
>> you could have a kernel module that you compile up with the correct two
>> interrupts in it
>> and on loading it would do the trick..
>
> I have a feeling that the real fix is something down in the bottom half of
> the kernel where interrupt routing is set up. I think something is wonky
> down there on some new chip sets, but I'm not sure without more
> research. Anyone else looking at that perhaps?
>
> Jack
>

It's quite common for laptop motherboard makers to route lots of 
interrupts onto the same physical line.  It saves a small fraction of a 
penny in costs.  My last Dell notebook was that way, regardless of 
Windows, Linux, or FreeBSD.

Scott



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