From: Ingo Molnar <mingo@elte.hu>
To: Matthew Wilcox <matthew@wil.cx>
Cc: Linus Torvalds <torvalds@osdl.org>, linux-kernel@vger.kernel.org
Subject: Re: First steps towards making NO_IRQ a generic concept
Date: Thu, 3 Nov 2005 17:20:59 +0100 [thread overview]
Message-ID: <20051103162059.GA495@elte.hu> (raw)
In-Reply-To: <20051103160252.GA23749@parisc-linux.org>
* Matthew Wilcox <matthew@wil.cx> wrote:
> On Thu, Nov 03, 2005 at 04:44:39PM +0100, Ingo Molnar wrote:
> > > + if (irq >= NR_IRQS)
> > > + return;
> >
> > hm, why not start with the -1 value for PCI_NO_IRQ, instead of 0:
> >
> > > +#define PCI_NO_IRQ 0
> >
> > and be done with it.
>
> There's a number of drivers which check "if (!irq) ...". For example:
>
> drivers/net/3c523.c: if ((irq && irq != dev->irq) ||
> drivers/net/atarilance.c: if (!irq) {
> drivers/net/cs89x0.c: if (!dev->irq)
> drivers/net/depca.c: if (!dev->irq) {
> drivers/net/eexpress.c: if (!dev->irq || !irqrmap[dev->irq])
> drivers/net/ewrk3.c: if (!dev->irq) {
> drivers/net/ibmlana.c: return (base != 0 || irq != 0) ? -ENXIO
> : -ENODE
> drivers/net/lasi_82596.c: if (!dev->irq) {
> drivers/net/ne-h8300.c: if (! dev->irq) {
> drivers/net/ne.c: if (! dev->irq) {
> drivers/net/ni52.c: if(!dev->irq)
> drivers/net/ni65.c: if(!dev->irq)
> drivers/net/pcnet32.c: if (!dev->irq) {
>
> ... and that's just drivers/net, and that doesn't include other ways
> for checking if irq is not 0, and doesn't include irqs referred to
> under different names not including the string 'irq'. Against that,
> I know not all of these are PCI drivers. So we need to spend some time
> checking drivers for this assumption.
>
> We also need to figure out what to do with non-PCI drivers. Some of
> them need more work than others to work with a -1 NO_IRQ. There's
> also plenty of janitorial work with people misusing the
> probe_irq_off() interface.
ok, understood. I'm wondering, why is there any need to do a PCI_NO_IRQ?
Why not just a generic NO_IRQ. It's not like we can or want to make them
different in the future. The interrupt vector number is a generic thing
that attaches to the platform via request_irq() - there is nothing 'PCI'
about it. So the PCI layer shouldnt pretend it has its own IRQ
abstraction - the two are forcibly joined. The same goes for
pci_valid_irq() - we should only have valid_irq(). Am i missing
anything?
> > plus, shouldnt this go into -mm first, since it clearly affects some
> > drivers? Why into Linus' tree immediately?
>
> With the way I'm staging it, it shouldn't affect drivers. The only
> exception was the pcmcia driver that defined its own NO_IRQ macro. So
> I converted that one to the new preferred way to check the irq is
> unset.
ok. Your transition path looks safe to me.
Ingo
next prev parent reply other threads:[~2005-11-03 16:20 UTC|newest]
Thread overview: 11+ messages / expand[flat|nested] mbox.gz Atom feed top
2005-11-03 14:49 First steps towards making NO_IRQ a generic concept Matthew Wilcox
2005-11-03 14:51 ` Matthew Wilcox
2005-11-03 15:44 ` Ingo Molnar
2005-11-03 16:02 ` Matthew Wilcox
2005-11-03 16:20 ` Ingo Molnar [this message]
2005-11-03 17:05 ` Matthew Wilcox
2005-11-03 20:53 ` Ingo Molnar
2005-11-03 14:51 ` Matthew Wilcox
2005-11-03 17:15 ` Arjan van de Ven
2005-11-03 14:52 ` Matthew Wilcox
2005-11-03 14:52 ` Matthew Wilcox
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20051103162059.GA495@elte.hu \
--to=mingo@elte.hu \
--cc=linux-kernel@vger.kernel.org \
--cc=matthew@wil.cx \
--cc=torvalds@osdl.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox