powerpc/pseries/xics: Use cpu_possible_mask rather than cpu_all_mask
Current firmware only allows us to send IRQs to the first processor or all processors. We currently check to see if the passed in mask is equal to the all_mask, but the firmware is only considering whether the request is for the equivalent of the possible_mask. Thus, we think the request is for some subset of CPUs and only assign IRQs to the first CPU (on systems without irqbalance running) as evidenced by /proc/interrupts. By using possible_mask instead, we account for this and proper interleaving of interrupts occurs. Signed-off-by: Nishanth Aravamudan <nacc@us.ibm.com> Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
This commit is contained in:
Родитель
bc0df9ec4c
Коммит
f56029b5ea
|
@ -178,7 +178,7 @@ static int get_irq_server(unsigned int virq, const struct cpumask *cpumask,
|
||||||
if (!distribute_irqs)
|
if (!distribute_irqs)
|
||||||
return default_server;
|
return default_server;
|
||||||
|
|
||||||
if (!cpumask_equal(cpumask, cpu_all_mask)) {
|
if (!cpumask_subset(cpu_possible_mask, cpumask)) {
|
||||||
int server = cpumask_first_and(cpu_online_mask, cpumask);
|
int server = cpumask_first_and(cpu_online_mask, cpumask);
|
||||||
|
|
||||||
if (server < nr_cpu_ids)
|
if (server < nr_cpu_ids)
|
||||||
|
|
Загрузка…
Ссылка в новой задаче