Linus provided a implementation for this for x2apic_cluster and mumbled at http://marc.info/?l=linux-kernel&m=144660325518209 :
> Side note, I have an *old* patch that I think simplifies the > (reasonably common) case of sending IPI's to individual CPU's. That's > done by the "reschedule ipi" in particular. > > That's something that is trivially done on the x2apic, but that the > mask-based interfaces makes insanely complicated. > > I have *not* rebased this on top of modern kernels so it may not > actually work as a patch any more, because I'm just sending this out > as a "Hmm, what do you guys think" rather than a real submission. I thought it's worthwhile so I had a look at the other apic implementations and all but apic_default and apic_flat can be converted halfways simple to provide a single target callback. The following series does that and gets rid of the wrapper in the call site at the end. Compiles and didn't explode when booting it, so it must be perfect :) Thanks, tglx --- arch/x86/include/asm/apic.h | 1 + arch/x86/include/asm/ipi.h | 2 ++ arch/x86/kernel/apic/apic_flat_64.c | 19 +++++-------------- arch/x86/kernel/apic/apic_noop.c | 2 ++ arch/x86/kernel/apic/apic_numachip.c | 2 ++ arch/x86/kernel/apic/bigsmp_32.c | 10 +++------- arch/x86/kernel/apic/ipi.c | 18 ++++++++++++++++++ arch/x86/kernel/apic/probe_32.c | 1 + arch/x86/kernel/apic/x2apic_cluster.c | 12 ++++++++++++ arch/x86/kernel/apic/x2apic_phys.c | 12 ++++++++++++ arch/x86/kernel/apic/x2apic_uv_x.c | 1 + arch/x86/kernel/smp.c | 4 ++-- 12 files changed, 61 insertions(+), 23 deletions(-) -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/