From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1031800AbbKDXBV (ORCPT ); Wed, 4 Nov 2015 18:01:21 -0500 Received: from www.linutronix.de ([62.245.132.108]:52046 "EHLO Galois.linutronix.de" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1031642AbbKDW5n (ORCPT ); Wed, 4 Nov 2015 17:57:43 -0500 Message-Id: <20151104215716.810356093@linutronix.de> User-Agent: quilt/0.63-1 Date: Wed, 04 Nov 2015 22:56:59 -0000 From: Thomas Gleixner To: LKML Cc: Linus Torvalds , Ingo Molnar , Peter Anvin , Borislav Petkov , Peter Zijlstra , Mike Travis , Daniel J Blueman Subject: [patch 00/14] x86/apic: Implement single target IPI callback X-Linutronix-Spam-Score: -1.0 X-Linutronix-Spam-Level: - X-Linutronix-Spam-Status: No , -1.0 points, 5.0 required, ALL_TRUSTED=-1,SHORTCIRCUIT=-0.0001 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org 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(-)