瀏覽代碼

sh: Use dummy_irq_chip for INTC redirect vectors.

Presently there's an ordering issue with the chained handler change
which places the set_irq_chip() after set_irq_chained_handler(). This
causes a warning to be emitted as the IRQ chip needs to be set first.
However, there is the caveat that redirect IRQs can't use the parent
IRQ's irq chip as they are just dummy redirects, resulting in
intc_enable() blowing up when set_irq_chained_handler() attempts to
start up the redirect IRQ. In these cases we can just use dummy_irq_chip
directly, as we already extract the parent IRQ and chip from the redirect
handler.

Signed-off-by: Paul Mundt <lethal@linux-sh.org>
Paul Mundt 15 年之前
父節點
當前提交
4d2185d93c
共有 1 個文件被更改,包括 1 次插入1 次删除
  1. 1 1
      drivers/sh/intc.c

+ 1 - 1
drivers/sh/intc.c

@@ -899,8 +899,8 @@ void __init register_intc_controller(struct intc_desc *desc)
 			vect2->enum_id = 0;
 			vect2->enum_id = 0;
 
 
 			/* redirect this interrupts to the first one */
 			/* redirect this interrupts to the first one */
+			set_irq_chip(irq2, &dummy_irq_chip);
 			set_irq_chained_handler(irq2, intc_redirect_irq);
 			set_irq_chained_handler(irq2, intc_redirect_irq);
-			set_irq_chip(irq2, &d->chip);
 			set_irq_data(irq2, (void *)irq);
 			set_irq_data(irq2, (void *)irq);
 		}
 		}
 	}
 	}