Re: Kernelpanic on eeePC and MSI Wind (both using rt2800pci) with Linux 3.x

Robert Hancock
2011-11-23T05:48:35Z

On Tue, Nov 22, 2011 at 10:21 PM, David Miller <davem@davemloft.net> wrote:
> From: Robert Hancock <hancockrwd@gmail.com>
> Date: Tue, 22 Nov 2011 19:49:33 -0600
>
>> On 11/22/2011 02:55 PM, David Miller wrote:
>>> From: Michael Basse<michael@alpha-unix.de>
>>> Date: Tue, 22 Nov 2011 21:49:49 +0100
>>>
>>>> Hi,
>>>>
>>>> just for the record. This thread is hopefully providing a patch
>>>>
>>>> http://thread.gmane.org/gmane.linux.kernel.wireless.general/80759
>>>>
>>>> already built the kernel and doing some testing now.
>>>
>>> That patch is wrong, it returns IRQ_HANDLED when it can't tell if the
>>> chip generated the interrupt or not.
>>>
>>> Therefore, if any other device shares that interrupt line it's
>>> interrupts can be lost when this case triggers.
>>>
>>> This has to be fixed another way.
>>
>> Huh? IRQ_HANDLED is the "safe" return value when you don't know for
>> sure whether your device generated the interrupt. Returning that
>> doesn't prevent other handlers on the same IRQ from being called.
>
> But it prevents being able to notice spurious interrupts from
> other devices sharing the IRQ.
>
> You absolutely must return an accurate return value here for correct
> operation, you simply cannot "guess".

Certainly it's best to do so when possible, but with some hardware it
simply isn't possible to do this. In some cases there's no register
that reliably indicates whether or not the device raised an interrupt.