Andrey> Hi all, this patch moves some common parts of irq handling
Andrey> code to one place. Arch specific patches will follow. Patch
Andrey> for i386 is tested and performed well, but other arch
Andrey> specific patched are not. Please take a look.
Andrey> Please CC me answering this letter, I'm not subscribed to
Andrey> lkml currently.
+/*
+ * Controller mappings for all interrupt sources:
+ */
+irq_desc_t irq_desc[NR_IRQS] __cacheline_aligned = {
+ [0 ... NR_IRQS - 1] = {
+ .handler = &no_irq_type,
+ .lock = SPIN_LOCK_UNLOCKED,
+ }
+};
This isn't good. For example, NUMA platforms with per-CPU irqs want
to allocate the irq descriptors in local memory. On ia64, we
introduced a minimal irq-descriptor API for this purpose:
/* Return a pointer to the irq descriptor for IRQ. */
static inline struct irq_desc * irq_desc (int irq);
/* Extract the IA-64 vector that corresponds to IRQ. */
static inline ia64_vector irq_to_vector (int irq);
/*
* Convert the local IA-64 vector to the corresponding irq number.
* This translation is done in the context of the interrupt domain
* that the currently executing CPU belongs to.
*/
static inline unsigned int local_vector_to_irq (ia64_vector vec);
I think the platform-independent part of the code really would only
need the first routine irq_desc(). The other two are ia64-specific.
BTW: if you haven't done so already, I'd suggest to take a look at
arch/ia64/kernel/irq.c. I tried to keep this code as close as
possible to the x86 version. There shouldn't be anything in there
that isn't wanted for a good reason.
Thanks,
--david
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/