On IA64 platforms, interrupt controller chip's irq_set_affinity() method
always copies affinity mask to irq_data->affinity field but still returns
0(IRQ_SET_MASK_OK). That return value causes the interrupt core logic
unnecessarily copies the mask to irq_data->affinity field again.
So return IRQ_SET_MASK_OK_NOCOPY instead of IRQ_SET_MASK_OK to get rid of
the duplicated copy operation.
Signed-off-by: Jiang Liu <jiang.liu@huawei.com>
Link: http://marc.info/?l=linux-ia64&m=133312092912438&w=2
Signed-off-by: Tony Luck <tony.luck@intel.com>
iosapic_write(iosapic, IOSAPIC_RTE_LOW(rte_index), low32);
}
+ return IRQ_SET_MASK_OK_NOCOPY;
+#else
+ return IRQ_SET_MASK_OK;
#endif
- return 0;
}
/*
write_msi_msg(irq, &msg);
cpumask_copy(idata->affinity, cpumask_of(cpu));
- return 0;
+ return IRQ_SET_MASK_OK_NOCOPY;
}
#endif /* CONFIG_SMP */
dmar_msi_write(irq, &msg);
cpumask_copy(data->affinity, mask);
- return 0;
+ return IRQ_SET_MASK_OK_NOCOPY;
}
#endif /* CONFIG_SMP */
sn_irq_lh[irq], list)
(void)sn_retarget_vector(sn_irq_info, nasid, slice);
- return 0;
+ return IRQ_SET_MASK_OK_NOCOPY;
}
#ifdef CONFIG_SMP
write_msi_msg(irq, &msg);
cpumask_copy(data->affinity, cpu_mask);
- return 0;
+ return IRQ_SET_MASK_OK_NOCOPY;
}
#endif /* CONFIG_SMP */