Thread (66 messages) flat view 66 messages, 14 authors, 2012-02-23

[PATCH v3 22/25] irq_domain/x86: Convert x86 (embedded) to use common irq_domain

From: bigeasy@linutronix.de (Sebastian Andrzej Siewior)
Date: 2012-02-23 21:22:23
Also in: linux-devicetree, linuxppc-dev, lkml

On 02/23/2012 08:56 PM, Grant Likely wrote:
On Wed, Feb 1, 2012 at 11:06 AM, Grant Likely[off-list ref]  wrote:
quoted
On Wed, Feb 1, 2012 at 7:17 AM, Sebastian Andrzej Siewior
[off-list ref]  wrote:
quoted
* Grant Likely | 2012-01-30 12:58:42 [-0700]:
quoted
Ugh.  This isn't easy.  The legacy mapping really needs all the
Feel free to merge this patch. I don't have the time to look at this now
so I take a look at the ioapic later.
There's no rush here.  I can leave it as-is with IRQ_DOMAIN turned off
for x86 for now.
Turns out I have to enable IRQ_DOMAIN for x86 because the TI TWL4030
driver needs it.  I do need to apply this patch.  Until something
better can be implemented, can I change ioapic_add_ofnode() so that it
allocates all irq_descs immediately.  It's not ideal, but every other
approach I've looked at results in nasty hacks.

Looking at the ioapic code, it appears to handle preallocated
irq_descs gracefully.
Please merge your initial patch as-it.
quoted hunk ↗ jump to hunk
Does adding this loop help (apologies if it is whitespace damaged, I
cut&paste it):
diff --git a/arch/x86/kernel/devicetree.c b/arch/x86/kernel/devicetree.c
index 3ae2ced..89c1310 100644
--- a/arch/x86/kernel/devicetree.c
+++ b/arch/x86/kernel/devicetree.c
@@ -345,7 +345,7 @@ const struct irq_domain_ops ioapic_irq_domain_ops = {
  static void __init ioapic_add_ofnode(struct device_node *np)
  {
  	struct resource r;
-	int i, ret;
+	int i, j, ret;

  	ret = of_address_to_resource(np, 0,&r);
  	if (ret) {
@@ -361,6 +361,14 @@ static void __init ioapic_add_ofnode(struct
device_node *np)

  			gsi_cfg = mp_ioapic_gsi_routing(i);

+			/*
+			 * Preallocate irq_descs so that the legacy mapping
+			 * works, but don't set them up.
+			 * io_apic_setup_irq_pin_once() will finish the set up.
+			 */
+			for (j = 0; j<  32; j++)
It is not 32. If I remember correctly the first ioapic had 24 pins so
did the second. This is ioapic specifc.

g.
Sebastian
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help