LKML Archive on lore.kernel.org help / color / mirror / Atom feed
From: Arnd Bergmann <arnd@arndb.de> To: "Eric W. Biederman" <ebiederm@xmission.com> Cc: Benjamin Herrenschmidt <benh@kernel.crashing.org>, Arjan van de Ven <arjan@infradead.org>, Ingo Molnar <mingo@elte.hu>, linux-arch@vger.kernel.org, linux-kernel@vger.kernel.org, Linus Torvalds <torvalds@linux-foundation.org>, Andrew Morton <akpm@linux-foundation.org>, Andi Kleen <ak@suse.de>, Alan Cox <alan@lxorguk.ukuu.org.uk>, Thomas Gleixner <tglx@linutronix.de> Subject: Re: [RFC] killing the NR_IRQS arrays. Date: Wed, 28 Feb 2007 13:24:18 +0100 [thread overview] Message-ID: <200702281324.19884.arnd@arndb.de> (raw) In-Reply-To: <m14pp6kat9.fsf@ebiederm.dsl.xmission.com> On Wednesday 28 February 2007, Eric W. Biederman wrote: > Arnd Bergmann <arnd@arndb.de> writes: > > > > > Introducing the irq_request() etc. functions that take a struct irq* > > instead of an int sounds good, but I'd hope we can avoid using those > > in device drivers and do a separate abstraction for each bus_type > > that deals with interrupts. I'm not sure if that's possible for > > each bus_type, but the ones I have worked with in the past should > > allow that: > > > > pci: each device/function has a unique irq, drivers need not know > > about it afaics. > Then there is msi and with msi-x you can have up to 4K irqs. I have to admit I still don't really understand how this works at all. Can a driver that uses msi-x have different handlers for each of those interrupts registered simultaneously? I would expect that instead there should be only one 'struct irq' for the device, with the handler getting a 12 bit number argument. > > s390: got rid of irq numbers already > > Yes. I should really look at that more and see if I could bring > s390 into the generic irq code with my planned changes. I don't think there is much point in changing the s390 code, but the way it is solved there may be interesting for other buses as well. The interrupt handler there is not being registered explicitly, but is part of the driver (in case of subchannel) or of the device (in case of ccw_device) data structure. Similarly, in a pci device, one could imagine that the struct pci_driver contains a irq_handler_t member that is registered from the pci_device_probe() function if present. > > Note that we can even start converting device drivers first, before > > moving away from irq numbers. A typical PCI driver should get > > somewhat simpler by the conversion, and when they are all converted, > > we can replace pci_dev->irq with a struct irq* under the covers. > > Reasonable if it is easy and straight forward. > Something like pci_request_irq(dev,....) and the helper looks at > dev->irq under the covers and calls request_irq or whatever makes > sense. Is this what you are thinking. Examples would help me here. Ok, I had an example in on of my previous posts, but based on the discussion since then, it has become significantly simpler, basically reducing the work to struct irq *pci_irq_request(struct pci_device *dev, irq_handler_t handler) { if (!dev->irq) return -ENODEV; return irq_request(irq, handler, IRQF_SHARED, &dev->driver->name, dev); } int pci_irq_free(struct pci_device *dev) { return irq_free(dev->irq, dev); } The most significant change of this to the current code would be that we can pass arguments down to irq_request automatically, e.g. the irq handler can always get the pci_device as its dev_id. > For talking to user space I expect we will have numbers for a long time > to come yet. I was wondering about that. Do you only mean /proc/interrupts or are there other user interfaces we need to worry about? For /proc/interrupts, what could break if we have interrupt numbers only local to each controller and potentially duplicate numbers in the list? It's good to be paranoid about changes to proc files, but I can definitely see value in having meaningful interrupt numbers in there instead of making up a more or less random mapping to a flat number space. Arnd <><
next prev parent reply other threads:[~2007-02-28 12:25 UTC|newest] Thread overview: 40+ messages / expand[flat|nested] mbox.gz Atom feed top 2007-02-16 12:10 [RFC] killing the NR_IRQS arrays Eric W. Biederman 2007-02-16 12:16 ` Andi Kleen 2007-02-16 15:35 ` Eric W. Biederman 2007-02-16 12:41 ` Ingo Molnar 2007-02-16 15:23 ` Eric W. Biederman 2007-02-16 15:49 ` Eric W. Biederman 2007-02-16 22:33 ` Benjamin Herrenschmidt 2007-02-18 21:24 ` Arjan van de Ven 2007-02-19 0:25 ` Benjamin Herrenschmidt 2007-02-27 20:29 ` Eric W. Biederman 2007-02-28 0:41 ` Arnd Bergmann 2007-02-28 7:20 ` Eric W. Biederman 2007-02-28 8:09 ` Benjamin Herrenschmidt 2007-02-28 13:28 ` Eric W. Biederman 2007-02-28 12:24 ` Arnd Bergmann [this message] 2007-02-28 13:02 ` Segher Boessenkool 2007-02-28 13:53 ` Eric W. Biederman 2007-03-01 10:47 ` Benjamin Herrenschmidt 2007-02-16 18:07 ` Jeremy Fitzhardinge 2007-02-16 19:01 ` Eric W. Biederman 2007-02-16 19:06 ` Jeremy Fitzhardinge 2007-02-16 19:45 ` Arnd Bergmann 2007-02-16 19:52 ` Russell King 2007-02-16 20:43 ` Arnd Bergmann 2007-02-16 20:59 ` Russell King 2007-02-16 22:37 ` Benjamin Herrenschmidt 2007-02-17 1:37 ` Arnd Bergmann 2007-02-17 4:00 ` Benjamin Herrenschmidt 2007-02-17 9:06 ` Eric W. Biederman 2007-02-17 21:15 ` Benjamin Herrenschmidt 2007-02-18 6:30 ` Eric W. Biederman 2007-02-18 20:01 ` Benjamin Herrenschmidt 2007-02-17 9:34 ` Eric W. Biederman 2007-02-17 21:20 ` Benjamin Herrenschmidt 2007-02-18 3:58 ` Eric W. Biederman 2007-02-16 22:29 ` Benjamin Herrenschmidt 2007-02-17 8:51 ` Eric W. Biederman 2007-02-17 21:04 ` Benjamin Herrenschmidt 2007-02-18 4:58 ` Eric W. Biederman 2007-02-18 19:58 ` Benjamin Herrenschmidt
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=200702281324.19884.arnd@arndb.de \ --to=arnd@arndb.de \ --cc=ak@suse.de \ --cc=akpm@linux-foundation.org \ --cc=alan@lxorguk.ukuu.org.uk \ --cc=arjan@infradead.org \ --cc=benh@kernel.crashing.org \ --cc=ebiederm@xmission.com \ --cc=linux-arch@vger.kernel.org \ --cc=linux-kernel@vger.kernel.org \ --cc=mingo@elte.hu \ --cc=tglx@linutronix.de \ --cc=torvalds@linux-foundation.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: linkBe 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; as well as URLs for NNTP newsgroup(s).