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

Commit 4e36eb46 authored by Pavankumar Kondeti's avatar Pavankumar Kondeti Committed by Satya Durga Srinivasu Prabhala
Browse files

genriq: pick only one CPU while overriding the affinity during migration



With commit bfc60d474137 ("genirq: Use irq_set_affinity_locked to change
irq affinity"), affinity listeners receive the notification when the irq
affinity is changed during migration. If there is no online and
un-isolated CPU available from the user specified affinity, the affinity
is overridden with all online and un-isolated CPUs. The same cpumask is
notified to PM QOS affinity listener which applies PM_QOS_CPU_DMA_LATENCY
vote to all those CPUs. As the low level irqchip driver sets affinity to
only one CPU, do the same while overriding the affinity during migration.

Change-Id: I0bcb75dd356658da100fbeeefd33ef8b121f4d6d
Signed-off-by: default avatarPavankumar Kondeti <pkondeti@codeaurora.org>
Signed-off-by: default avatarSatya Durga Srinivasu Prabhala <satyap@codeaurora.org>
parent eeb3c956
Loading
Loading
Loading
Loading
+11 −0
Original line number Diff line number Diff line
@@ -129,6 +129,17 @@ static bool migrate_one_irq(struct irq_desc *desc)
							cpu_isolated_mask);
		if (cpumask_empty(affinity))
			affinity = cpu_online_mask;
		/*
		 * We are overriding the affinity with all online and
		 * un-isolated cpus. irq_set_affinity_locked() call
		 * below notify this mask to PM QOS affinity listener.
		 * That results in applying the CPU_DMA_LATENCY QOS
		 * to all the CPUs specified in the mask. But the low
		 * level irqchip driver sets the affinity of an irq
		 * to only one CPU. So pick only one CPU from the
		 * prepared mask while overriding the user affinity.
		 */
		affinity = cpumask_of(cpumask_any(affinity));
		brokeaff = true;
	}
	/*