Re: 2.6.18-mm2

Mark Rustad
2006-09-30T17:20:52Z

On Sep 30, 2006, at 11:21 AM, Matthew Wilcox wrote:

> On Sat, Sep 30, 2006 at 10:26:22AM -0500, James Bottomley wrote:
>> On Fri, 2006-09-29 at 23:50 +0000, Frederik Deweerdt wrote:
>>> + if (!pdev->irq)
>>> + return -ENODEV;
>>> +
>>
>> Don't I remember that 0 is a valid IRQ on some platforms?
>>
>> i.e. shouldn't this be
>>
>> if (pdev->irq == NO_IRQ)
>> return -ENODEV;
>>
>> ?
>>
>> I think this won't quite work because only the platforms that
>> actually
>> have a valid zero irq define it, but there must be something else
>> that
>> works.
>
> Linus threw a hissy fit and declared that platforms which use 0 as a
> valid IRQ are broken and wrong. Despite PCI using 255 to mean no IRQ
> and 0 as a valid IRQ ;-)

Having gone down the path of creating a platform that had IRQ 0 as a
valid interrupt some time ago with the 2.4 kernel, all I can say is
that while it can be made to work, things go much more smoothly if
you don't use IRQ 0. Every driver added to the environment pretty
much had to be tweaked. Of course that mainly meant adding to the
#ifdef's that were already there for other architectures that had
also made that mistake.

The biggest pain is admitting the mistake (of using IRQ 0) and
changing it. Making a clear statement on the issue will help prevent
others from making the same mistake again. I know that I wish that I
had known not to do that from the beginning. Having been there and
done that, I don't need any convincing.

--
Mark Rustad, MRustad@mac.com