Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 1279b7f1 authored by Paul Mundt's avatar Paul Mundt
Browse files

sh: Fix up simplified multi-evt handling under sparseirq.



This fixes up the simplified multi-evt handling when sparseirq support is
enabled. While vectors are redirected through the single unique masking
source, each one of the redirected vectors still requires its own backing
irq_desc, which needs to be manually allocated in the sparseirq case.

Signed-off-by: default avatarPaul Mundt <lethal@linux-sh.org>
parent 2f6dafc5
Loading
Loading
Loading
Loading
+12 −1
Original line number Diff line number Diff line
@@ -749,7 +749,7 @@ void __init register_intc_controller(struct intc_desc *desc)

		irq_desc = irq_to_desc_alloc_node(irq, numa_node_id());
		if (unlikely(!irq_desc)) {
			printk(KERN_INFO "can not get irq_desc for %d\n", irq);
			pr_info("can't get irq_desc for %d\n", irq);
			continue;
		}

@@ -762,6 +762,17 @@ void __init register_intc_controller(struct intc_desc *desc)
			if (vect->enum_id != vect2->enum_id)
				continue;

			/*
			 * In the case of multi-evt handling and sparse
			 * IRQ support, each vector still needs to have
			 * its own backing irq_desc.
			 */
			irq_desc = irq_to_desc_alloc_node(irq2, numa_node_id());
			if (unlikely(!irq_desc)) {
				pr_info("can't get irq_desc for %d\n", irq2);
				continue;
			}

			vect2->enum_id = 0;

			/* redirect this interrupts to the first one */