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

Commit 2ea27edd authored by Pavankumar Kondeti's avatar Pavankumar Kondeti Committed by Satya Durga Srinivasu Prabhala
Browse files

genirq: honour default IRQ affinity setting during migration



Userspace can set the default IRQ affinity setting by writing into
/proc/irq/default_smp_affinity file. When an IRQ affinity is
broken during isolation/hotplug, override the affinity to online and
un-isolated CPUs from the default affinity CPUs. If no such CPU
is available, then only override with cpu_online_mask.

Change-Id: I7578728ed0d7c17c5890d9916cfd6451d1968568
Signed-off-by: default avatarPavankumar Kondeti <pkondeti@codeaurora.org>
Signed-off-by: default avatarLingutla Chandrasekhar <clingutla@codeaurora.org>
Signed-off-by: default avatarSatya Durga Srinivasu Prabhala <satyap@codeaurora.org>
parent 4e36eb46
Loading
Loading
Loading
Loading
+12 −1
Original line number Diff line number Diff line
@@ -125,10 +125,21 @@ static bool migrate_one_irq(struct irq_desc *desc)
			irq_shutdown(desc);
			return false;
		}
		/*
		 * The order of preference for selecting a fallback CPU is
		 *
		 * (1) online and un-isolated CPU from default affinity
		 * (2) online and un-isolated CPU
		 * (3) online CPU
		 */
		cpumask_andnot(&available_cpus, cpu_online_mask,
							cpu_isolated_mask);
		if (cpumask_empty(affinity))
		if (cpumask_intersects(&available_cpus, irq_default_affinity))
			cpumask_and(&available_cpus, &available_cpus,
							irq_default_affinity);
		else if (cpumask_empty(&available_cpus))
			affinity = cpu_online_mask;

		/*
		 * We are overriding the affinity with all online and
		 * un-isolated cpus. irq_set_affinity_locked() call