[patch 00/14] x86/apic: Implement single target IPI callback

Thomas Gleixner
2015-11-04T23:01:21Z

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(-)