Messages in this thread | | | Date | Fri, 1 Aug 2008 10:51:20 -0500 | From | Cliff Wickman <> | Subject | Re: [PATCH] x86_64: Dynamically allocate arch specific system vectors |
| |
On Thu, Jul 31, 2008 at 03:10:23PM -0700, Eric W. Biederman wrote: > Alan Mayer <ajm@sgi.com> writes: > > > Subject: [PATCH] x86_64: Dynamically allocate arch specific system vectors > > > > From: Alan Mayer <ajm@sgi.com> > > > > On some systems (e. g., UV) it is necessary to use an interrupt vector > > as a "system" vector, that is, it is generated by system hardware, not an > > IO device. This patch dynamically allocates them from the pool of interrupt > > vectors below the fixed system vectors. This may include stealing some from > > the device interrupt vector pool, so they are allocated dynamically so that > > other archs don't have to pay the price. In UV, examples of these hardware > > and software systems that need dynamically allocated vectors are the GRU, > > the BAU, and XPM/XPC. > > Could you please explain words why the vector allocator does not work > for you? > > This code at first glance looks a lot like duplicating the vector allocator. > > Eric
I assume you mean create_irq() and destroy_irq(). They are close to what we need.
However for any given system use: - we need to request a high priority vector for some irq's, rather than one randomly allocated as per __assign_irq_vector(). - we want the irq/vector to be targeted to all cpu's (as specified in a mask, and can include currently offline cpu's) rather than a single cpu.
I suppose those abilities could be added to create_irq(), but we didn't want to intrude into that interface.
A smaller consideration is simplicity of use. We want any such user to use the generic do_IRQ() flow (not alloc_intr_gate()). But make it easy to set up the irq/vector, irq_chip and irq_desc without getting intimate with the details. I suppose some other wrapper for an enhanced create_irq() could be done.
We are going to need such irq/vector pairs for a couple of UV drivers (drivers/misc/sgi-gru/ and sgi-xp/). And would prefer it for the UV TLB shootdown (x86/kernel/tlb.uv.c) rather than using alloc_intr_gate().
-Cliff -- Cliff Wickman Silicon Graphics, Inc. cpw@sgi.com (651) 683-3824
| |