* [PATCH v3 [resend] 14/18] smp, x86, xen: kill SMP single function call interrupt [not found] <1387125400-28849-1-git-send-email-liuj97@gmail.com> @ 2013-12-15 16:36 ` Jiang Liu 2013-12-16 3:00 ` Konrad Rzeszutek Wilk 2013-12-15 16:36 ` [PATCH v3 [resend] 15/18] smp, x86: " Jiang Liu 1 sibling, 1 reply; 5+ messages in thread From: Jiang Liu @ 2013-12-15 16:36 UTC (permalink / raw) To: Andrew Morton, Shaohua Li, Konrad Rzeszutek Wilk, Boris Ostrovsky, David Vrabel, Thomas Gleixner, Ingo Molnar, H. Peter Anvin, x86, xen-devel, linux-kernel Cc: linux-arch, Jeremy Fitzhardinge, xen-devel, Jiri Kosina, Peter Zijlstra, Wang YanQing, Steven Rostedt, virtualization, Sebastian Andrzej Siewior, Ingo Molnar, Jiang Liu Commit 9a46ad6d6df3b54 "smp: make smp_call_function_many() use logic similar to smp_call_function_single()" has unified the way to handle single and multiple cross-CPU function calls. Now only one interrupt is needed for architecture specific code to support generic SMP function call interfaces, so kill the redundant single function call interrupt. Cc: Andrew Morton <akpm@linux-foundation.org> Cc: Shaohua Li <shli@kernel.org> Cc: Peter Zijlstra <a.p.zijlstra@chello.nl> Cc: Ingo Molnar <mingo@elte.hu> Cc: Steven Rostedt <rostedt@goodmis.org> Cc: Jiri Kosina <trivial@kernel.org> Cc: Thomas Gleixner <tglx@linutronix.de> Cc: "H. Peter Anvin" <hpa@zytor.com> Cc: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com> Cc: Jeremy Fitzhardinge <jeremy@goop.org> Cc: Sebastian Andrzej Siewior <sebastian@breakpoint.cc> Cc: x86@kernel.org Cc: xen-devel@lists.xensource.com Cc: virtualization@lists.linux-foundation.org Signed-off-by: Jiang Liu <liuj97@gmail.com> --- arch/x86/include/asm/xen/events.h | 1 - arch/x86/xen/smp.c | 38 ++------------------------------------ 2 files changed, 2 insertions(+), 37 deletions(-) diff --git a/arch/x86/include/asm/xen/events.h b/arch/x86/include/asm/xen/events.h index 608a79d..a9e54dc 100644 --- a/arch/x86/include/asm/xen/events.h +++ b/arch/x86/include/asm/xen/events.h @@ -4,7 +4,6 @@ enum ipi_vector { XEN_RESCHEDULE_VECTOR, XEN_CALL_FUNCTION_VECTOR, - XEN_CALL_FUNCTION_SINGLE_VECTOR, XEN_SPIN_UNLOCK_VECTOR, XEN_IRQ_WORK_VECTOR, XEN_NMI_VECTOR, diff --git a/arch/x86/xen/smp.c b/arch/x86/xen/smp.c index c36b325..7cf1689 100644 --- a/arch/x86/xen/smp.c +++ b/arch/x86/xen/smp.c @@ -46,12 +46,10 @@ struct xen_common_irq { }; static DEFINE_PER_CPU(struct xen_common_irq, xen_resched_irq) = { .irq = -1 }; static DEFINE_PER_CPU(struct xen_common_irq, xen_callfunc_irq) = { .irq = -1 }; -static DEFINE_PER_CPU(struct xen_common_irq, xen_callfuncsingle_irq) = { .irq = -1 }; static DEFINE_PER_CPU(struct xen_common_irq, xen_irq_work) = { .irq = -1 }; static DEFINE_PER_CPU(struct xen_common_irq, xen_debug_irq) = { .irq = -1 }; static irqreturn_t xen_call_function_interrupt(int irq, void *dev_id); -static irqreturn_t xen_call_function_single_interrupt(int irq, void *dev_id); static irqreturn_t xen_irq_work_interrupt(int irq, void *dev_id); /* @@ -123,13 +121,6 @@ static void xen_smp_intr_free(unsigned int cpu) kfree(per_cpu(xen_debug_irq, cpu).name); per_cpu(xen_debug_irq, cpu).name = NULL; } - if (per_cpu(xen_callfuncsingle_irq, cpu).irq >= 0) { - unbind_from_irqhandler(per_cpu(xen_callfuncsingle_irq, cpu).irq, - NULL); - per_cpu(xen_callfuncsingle_irq, cpu).irq = -1; - kfree(per_cpu(xen_callfuncsingle_irq, cpu).name); - per_cpu(xen_callfuncsingle_irq, cpu).name = NULL; - } if (xen_hvm_domain()) return; @@ -178,18 +169,6 @@ static int xen_smp_intr_init(unsigned int cpu) per_cpu(xen_debug_irq, cpu).irq = rc; per_cpu(xen_debug_irq, cpu).name = debug_name; - callfunc_name = kasprintf(GFP_KERNEL, "callfuncsingle%d", cpu); - rc = bind_ipi_to_irqhandler(XEN_CALL_FUNCTION_SINGLE_VECTOR, - cpu, - xen_call_function_single_interrupt, - IRQF_PERCPU|IRQF_NOBALANCING, - callfunc_name, - NULL); - if (rc < 0) - goto fail; - per_cpu(xen_callfuncsingle_irq, cpu).irq = rc; - per_cpu(xen_callfuncsingle_irq, cpu).name = callfunc_name; - /* * The IRQ worker on PVHVM goes through the native path and uses the * IPI mechanism. @@ -569,8 +548,7 @@ static void xen_smp_send_call_function_ipi(const struct cpumask *mask) static void xen_smp_send_call_function_single_ipi(int cpu) { - __xen_send_IPI_mask(cpumask_of(cpu), - XEN_CALL_FUNCTION_SINGLE_VECTOR); + __xen_send_IPI_mask(cpumask_of(cpu), XEN_CALL_FUNCTION_VECTOR); } static inline int xen_map_vector(int vector) @@ -582,10 +560,8 @@ static inline int xen_map_vector(int vector) xen_vector = XEN_RESCHEDULE_VECTOR; break; case CALL_FUNCTION_VECTOR: - xen_vector = XEN_CALL_FUNCTION_VECTOR; - break; case CALL_FUNCTION_SINGLE_VECTOR: - xen_vector = XEN_CALL_FUNCTION_SINGLE_VECTOR; + xen_vector = XEN_CALL_FUNCTION_VECTOR; break; case IRQ_WORK_VECTOR: xen_vector = XEN_IRQ_WORK_VECTOR; @@ -663,16 +639,6 @@ static irqreturn_t xen_call_function_interrupt(int irq, void *dev_id) return IRQ_HANDLED; } -static irqreturn_t xen_call_function_single_interrupt(int irq, void *dev_id) -{ - irq_enter(); - generic_smp_call_function_single_interrupt(); - inc_irq_stat(irq_call_count); - irq_exit(); - - return IRQ_HANDLED; -} - static irqreturn_t xen_irq_work_interrupt(int irq, void *dev_id) { irq_enter(); -- 1.8.1.2 ^ permalink raw reply related [flat|nested] 5+ messages in thread
* Re: [PATCH v3 [resend] 14/18] smp, x86, xen: kill SMP single function call interrupt 2013-12-15 16:36 ` [PATCH v3 [resend] 14/18] smp, x86, xen: kill SMP single function call interrupt Jiang Liu @ 2013-12-16 3:00 ` Konrad Rzeszutek Wilk 2013-12-16 4:24 ` Liu, Jinsong 0 siblings, 1 reply; 5+ messages in thread From: Konrad Rzeszutek Wilk @ 2013-12-16 3:00 UTC (permalink / raw) To: Jiang Liu Cc: linux-arch, Jeremy Fitzhardinge, xen-devel, Jiri Kosina, Peter Zijlstra, x86, linux-kernel, Steven Rostedt, Wang YanQing, Sebastian Andrzej Siewior, Ingo Molnar, Thomas Gleixner, David Vrabel, Ingo Molnar, H. Peter Anvin, xen-devel, Andrew Morton, virtualization, Shaohua Li, Boris Ostrovsky On Mon, Dec 16, 2013 at 12:36:36AM +0800, Jiang Liu wrote: > Commit 9a46ad6d6df3b54 "smp: make smp_call_function_many() use logic > similar to smp_call_function_single()" has unified the way to handle > single and multiple cross-CPU function calls. Now only one interrupt > is needed for architecture specific code to support generic SMP function > call interfaces, so kill the redundant single function call interrupt. > > Cc: Andrew Morton <akpm@linux-foundation.org> > Cc: Shaohua Li <shli@kernel.org> > Cc: Peter Zijlstra <a.p.zijlstra@chello.nl> > Cc: Ingo Molnar <mingo@elte.hu> > Cc: Steven Rostedt <rostedt@goodmis.org> > Cc: Jiri Kosina <trivial@kernel.org> > Cc: Thomas Gleixner <tglx@linutronix.de> > Cc: "H. Peter Anvin" <hpa@zytor.com> > Cc: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com> I presume this has been tested? > Cc: Jeremy Fitzhardinge <jeremy@goop.org> > Cc: Sebastian Andrzej Siewior <sebastian@breakpoint.cc> > Cc: x86@kernel.org > Cc: xen-devel@lists.xensource.com > Cc: virtualization@lists.linux-foundation.org > Signed-off-by: Jiang Liu <liuj97@gmail.com> > --- > arch/x86/include/asm/xen/events.h | 1 - > arch/x86/xen/smp.c | 38 ++------------------------------------ > 2 files changed, 2 insertions(+), 37 deletions(-) > > diff --git a/arch/x86/include/asm/xen/events.h b/arch/x86/include/asm/xen/events.h > index 608a79d..a9e54dc 100644 > --- a/arch/x86/include/asm/xen/events.h > +++ b/arch/x86/include/asm/xen/events.h > @@ -4,7 +4,6 @@ > enum ipi_vector { > XEN_RESCHEDULE_VECTOR, > XEN_CALL_FUNCTION_VECTOR, > - XEN_CALL_FUNCTION_SINGLE_VECTOR, > XEN_SPIN_UNLOCK_VECTOR, > XEN_IRQ_WORK_VECTOR, > XEN_NMI_VECTOR, > diff --git a/arch/x86/xen/smp.c b/arch/x86/xen/smp.c > index c36b325..7cf1689 100644 > --- a/arch/x86/xen/smp.c > +++ b/arch/x86/xen/smp.c > @@ -46,12 +46,10 @@ struct xen_common_irq { > }; > static DEFINE_PER_CPU(struct xen_common_irq, xen_resched_irq) = { .irq = -1 }; > static DEFINE_PER_CPU(struct xen_common_irq, xen_callfunc_irq) = { .irq = -1 }; > -static DEFINE_PER_CPU(struct xen_common_irq, xen_callfuncsingle_irq) = { .irq = -1 }; > static DEFINE_PER_CPU(struct xen_common_irq, xen_irq_work) = { .irq = -1 }; > static DEFINE_PER_CPU(struct xen_common_irq, xen_debug_irq) = { .irq = -1 }; > > static irqreturn_t xen_call_function_interrupt(int irq, void *dev_id); > -static irqreturn_t xen_call_function_single_interrupt(int irq, void *dev_id); > static irqreturn_t xen_irq_work_interrupt(int irq, void *dev_id); > > /* > @@ -123,13 +121,6 @@ static void xen_smp_intr_free(unsigned int cpu) > kfree(per_cpu(xen_debug_irq, cpu).name); > per_cpu(xen_debug_irq, cpu).name = NULL; > } > - if (per_cpu(xen_callfuncsingle_irq, cpu).irq >= 0) { > - unbind_from_irqhandler(per_cpu(xen_callfuncsingle_irq, cpu).irq, > - NULL); > - per_cpu(xen_callfuncsingle_irq, cpu).irq = -1; > - kfree(per_cpu(xen_callfuncsingle_irq, cpu).name); > - per_cpu(xen_callfuncsingle_irq, cpu).name = NULL; > - } > if (xen_hvm_domain()) > return; > > @@ -178,18 +169,6 @@ static int xen_smp_intr_init(unsigned int cpu) > per_cpu(xen_debug_irq, cpu).irq = rc; > per_cpu(xen_debug_irq, cpu).name = debug_name; > > - callfunc_name = kasprintf(GFP_KERNEL, "callfuncsingle%d", cpu); > - rc = bind_ipi_to_irqhandler(XEN_CALL_FUNCTION_SINGLE_VECTOR, > - cpu, > - xen_call_function_single_interrupt, > - IRQF_PERCPU|IRQF_NOBALANCING, > - callfunc_name, > - NULL); > - if (rc < 0) > - goto fail; > - per_cpu(xen_callfuncsingle_irq, cpu).irq = rc; > - per_cpu(xen_callfuncsingle_irq, cpu).name = callfunc_name; > - > /* > * The IRQ worker on PVHVM goes through the native path and uses the > * IPI mechanism. > @@ -569,8 +548,7 @@ static void xen_smp_send_call_function_ipi(const struct cpumask *mask) > > static void xen_smp_send_call_function_single_ipi(int cpu) > { > - __xen_send_IPI_mask(cpumask_of(cpu), > - XEN_CALL_FUNCTION_SINGLE_VECTOR); > + __xen_send_IPI_mask(cpumask_of(cpu), XEN_CALL_FUNCTION_VECTOR); > } > > static inline int xen_map_vector(int vector) > @@ -582,10 +560,8 @@ static inline int xen_map_vector(int vector) > xen_vector = XEN_RESCHEDULE_VECTOR; > break; > case CALL_FUNCTION_VECTOR: > - xen_vector = XEN_CALL_FUNCTION_VECTOR; > - break; > case CALL_FUNCTION_SINGLE_VECTOR: > - xen_vector = XEN_CALL_FUNCTION_SINGLE_VECTOR; > + xen_vector = XEN_CALL_FUNCTION_VECTOR; > break; > case IRQ_WORK_VECTOR: > xen_vector = XEN_IRQ_WORK_VECTOR; > @@ -663,16 +639,6 @@ static irqreturn_t xen_call_function_interrupt(int irq, void *dev_id) > return IRQ_HANDLED; > } > > -static irqreturn_t xen_call_function_single_interrupt(int irq, void *dev_id) > -{ > - irq_enter(); > - generic_smp_call_function_single_interrupt(); > - inc_irq_stat(irq_call_count); > - irq_exit(); > - > - return IRQ_HANDLED; > -} > - > static irqreturn_t xen_irq_work_interrupt(int irq, void *dev_id) > { > irq_enter(); > -- > 1.8.1.2 > ^ permalink raw reply [flat|nested] 5+ messages in thread
* RE: [PATCH v3 [resend] 14/18] smp, x86, xen: kill SMP single function call interrupt 2013-12-16 3:00 ` Konrad Rzeszutek Wilk @ 2013-12-16 4:24 ` Liu, Jinsong 2013-12-16 16:33 ` Konrad Rzeszutek Wilk 0 siblings, 1 reply; 5+ messages in thread From: Liu, Jinsong @ 2013-12-16 4:24 UTC (permalink / raw) To: Konrad Rzeszutek Wilk, Jiang Liu Cc: Andrew Morton, Shaohua Li, Boris Ostrovsky, David Vrabel, Thomas Gleixner, Ingo Molnar, H. Peter Anvin, x86@kernel.org, xen-devel@lists.xenproject.org, linux-kernel@vger.kernel.org, Ingo Molnar, Peter Zijlstra, Steven Rostedt, Jiri Kosina, Wang YanQing, linux-arch@vger.kernel.org, Jeremy Fitzhardinge, Sebastian Andrzej Siewior, xen-devel@lists.xensource.com, "virtualization@lists.linux-foundation.org" <virtual> Konrad Rzeszutek Wilk wrote: > On Mon, Dec 16, 2013 at 12:36:36AM +0800, Jiang Liu wrote: >> Commit 9a46ad6d6df3b54 "smp: make smp_call_function_many() use logic >> similar to smp_call_function_single()" has unified the way to handle >> single and multiple cross-CPU function calls. Now only one interrupt >> is needed for architecture specific code to support generic SMP >> function >> call interfaces, so kill the redundant single function call >> interrupt. >> >> Cc: Andrew Morton <akpm@linux-foundation.org> >> Cc: Shaohua Li <shli@kernel.org> >> Cc: Peter Zijlstra <a.p.zijlstra@chello.nl> >> Cc: Ingo Molnar <mingo@elte.hu> >> Cc: Steven Rostedt <rostedt@goodmis.org> >> Cc: Jiri Kosina <trivial@kernel.org> >> Cc: Thomas Gleixner <tglx@linutronix.de> >> Cc: "H. Peter Anvin" <hpa@zytor.com> >> Cc: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com> > > I presume this has been tested? > I have just test Jiang's patch, it works fine for dom0 booting. Thanks, Jinsong ^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [PATCH v3 [resend] 14/18] smp, x86, xen: kill SMP single function call interrupt 2013-12-16 4:24 ` Liu, Jinsong @ 2013-12-16 16:33 ` Konrad Rzeszutek Wilk 0 siblings, 0 replies; 5+ messages in thread From: Konrad Rzeszutek Wilk @ 2013-12-16 16:33 UTC (permalink / raw) To: Liu, Jinsong Cc: linux-arch@vger.kernel.org, Jeremy Fitzhardinge, xen-devel@lists.xensource.com, Jiri Kosina, Peter Zijlstra, x86@kernel.org, linux-kernel@vger.kernel.org, Steven Rostedt, Wang YanQing, Sebastian Andrzej Siewior, Ingo Molnar, Thomas Gleixner, David Vrabel, Ingo Molnar, H. Peter Anvin, xen-devel@lists.xenproject.org, Andrew Morton, virtualization@lists.linux-foundation.org, Shaohua Li On Mon, Dec 16, 2013 at 04:24:41AM +0000, Liu, Jinsong wrote: > Konrad Rzeszutek Wilk wrote: > > On Mon, Dec 16, 2013 at 12:36:36AM +0800, Jiang Liu wrote: > >> Commit 9a46ad6d6df3b54 "smp: make smp_call_function_many() use logic > >> similar to smp_call_function_single()" has unified the way to handle > >> single and multiple cross-CPU function calls. Now only one interrupt > >> is needed for architecture specific code to support generic SMP > >> function > >> call interfaces, so kill the redundant single function call > >> interrupt. > >> > >> Cc: Andrew Morton <akpm@linux-foundation.org> > >> Cc: Shaohua Li <shli@kernel.org> > >> Cc: Peter Zijlstra <a.p.zijlstra@chello.nl> > >> Cc: Ingo Molnar <mingo@elte.hu> > >> Cc: Steven Rostedt <rostedt@goodmis.org> > >> Cc: Jiri Kosina <trivial@kernel.org> > >> Cc: Thomas Gleixner <tglx@linutronix.de> > >> Cc: "H. Peter Anvin" <hpa@zytor.com> > >> Cc: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com> > > > > I presume this has been tested? > > > > I have just test Jiang's patch, it works fine for dom0 booting. Excellent! Please add Acked-by from me. Thanks! > > Thanks, > Jinsong > > ^ permalink raw reply [flat|nested] 5+ messages in thread
* [PATCH v3 [resend] 15/18] smp, x86: kill SMP single function call interrupt [not found] <1387125400-28849-1-git-send-email-liuj97@gmail.com> 2013-12-15 16:36 ` [PATCH v3 [resend] 14/18] smp, x86, xen: kill SMP single function call interrupt Jiang Liu @ 2013-12-15 16:36 ` Jiang Liu 1 sibling, 0 replies; 5+ messages in thread From: Jiang Liu @ 2013-12-15 16:36 UTC (permalink / raw) To: Andrew Morton, Shaohua Li, Thomas Gleixner, Ingo Molnar, H. Peter Anvin, x86, Konrad Rzeszutek Wilk, Boris Ostrovsky, David Vrabel, Yang Zhang, Marcelo Tosatti, Seiji Aguchi, Gleb Natapov, Sebastian Andrzej Siewior, Joerg Roedel, K. Y. Srinivasan, Peter Zijlstra, Al Viro, Andi Kleen, Steven Rostedt, linux-kernel, xen-devel Cc: linux-arch, Jeremy Fitzhardinge, xen-devel, Jiri Kosina, Peter Zijlstra, Wang YanQing, virtualization, Ingo Molnar, Jiang Liu Commit 9a46ad6d6df3b54 "smp: make smp_call_function_many() use logic similar to smp_call_function_single()" has unified the way to handle single and multiple cross-CPU function calls. Now only one interrupt is needed for architecture specific code to support generic SMP function call interfaces, so kill the redundant single function call interrupt. Cc: Andrew Morton <akpm@linux-foundation.org> Cc: Shaohua Li <shli@kernel.org> Cc: Peter Zijlstra <a.p.zijlstra@chello.nl> Cc: Ingo Molnar <mingo@elte.hu> Cc: Steven Rostedt <rostedt@goodmis.org> Cc: Jiri Kosina <trivial@kernel.org> Cc: Thomas Gleixner <tglx@linutronix.de> Cc: "H. Peter Anvin" <hpa@zytor.com> Cc: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com> Cc: Jeremy Fitzhardinge <jeremy@goop.org> Cc: Sebastian Andrzej Siewior <sebastian@breakpoint.cc> Cc: x86@kernel.org Cc: xen-devel@lists.xensource.com Cc: virtualization@lists.linux-foundation.org Signed-off-by: Jiang Liu <liuj97@gmail.com> --- arch/x86/include/asm/entry_arch.h | 1 - arch/x86/include/asm/hw_irq.h | 3 --- arch/x86/include/asm/irq_vectors.h | 7 +++---- arch/x86/include/asm/trace/irq_vectors.h | 6 ------ arch/x86/kernel/entry_64.S | 2 -- arch/x86/kernel/irqinit.c | 4 ---- arch/x86/kernel/smp.c | 24 +----------------------- arch/x86/xen/smp.c | 1 - 8 files changed, 4 insertions(+), 44 deletions(-) diff --git a/arch/x86/include/asm/entry_arch.h b/arch/x86/include/asm/entry_arch.h index dc5fa66..9670cff 100644 --- a/arch/x86/include/asm/entry_arch.h +++ b/arch/x86/include/asm/entry_arch.h @@ -12,7 +12,6 @@ #ifdef CONFIG_SMP BUILD_INTERRUPT(reschedule_interrupt,RESCHEDULE_VECTOR) BUILD_INTERRUPT(call_function_interrupt,CALL_FUNCTION_VECTOR) -BUILD_INTERRUPT(call_function_single_interrupt,CALL_FUNCTION_SINGLE_VECTOR) BUILD_INTERRUPT3(irq_move_cleanup_interrupt, IRQ_MOVE_CLEANUP_VECTOR, smp_irq_move_cleanup_interrupt) BUILD_INTERRUPT3(reboot_interrupt, REBOOT_VECTOR, smp_reboot_interrupt) diff --git a/arch/x86/include/asm/hw_irq.h b/arch/x86/include/asm/hw_irq.h index cba45d9..66bacec 100644 --- a/arch/x86/include/asm/hw_irq.h +++ b/arch/x86/include/asm/hw_irq.h @@ -75,7 +75,6 @@ extern asmlinkage void reboot_interrupt(void); extern asmlinkage void threshold_interrupt(void); extern asmlinkage void call_function_interrupt(void); -extern asmlinkage void call_function_single_interrupt(void); #ifdef CONFIG_TRACING /* Interrupt handlers registered during init_IRQ */ @@ -88,7 +87,6 @@ extern void trace_thermal_interrupt(void); extern void trace_reschedule_interrupt(void); extern void trace_threshold_interrupt(void); extern void trace_call_function_interrupt(void); -extern void trace_call_function_single_interrupt(void); #define trace_irq_move_cleanup_interrupt irq_move_cleanup_interrupt #define trace_reboot_interrupt reboot_interrupt #define trace_kvm_posted_intr_ipi kvm_posted_intr_ipi @@ -182,7 +180,6 @@ extern asmlinkage void smp_irq_move_cleanup_interrupt(void); #ifdef CONFIG_SMP extern __visible void smp_reschedule_interrupt(struct pt_regs *); extern __visible void smp_call_function_interrupt(struct pt_regs *); -extern __visible void smp_call_function_single_interrupt(struct pt_regs *); extern __visible void smp_invalidate_interrupt(struct pt_regs *); #endif diff --git a/arch/x86/include/asm/irq_vectors.h b/arch/x86/include/asm/irq_vectors.h index 5702d7e..98a302d 100644 --- a/arch/x86/include/asm/irq_vectors.h +++ b/arch/x86/include/asm/irq_vectors.h @@ -92,10 +92,9 @@ #define ERROR_APIC_VECTOR 0xfe #define RESCHEDULE_VECTOR 0xfd #define CALL_FUNCTION_VECTOR 0xfc -#define CALL_FUNCTION_SINGLE_VECTOR 0xfb -#define THERMAL_APIC_VECTOR 0xfa -#define THRESHOLD_APIC_VECTOR 0xf9 -#define REBOOT_VECTOR 0xf8 +#define THERMAL_APIC_VECTOR 0xfb +#define THRESHOLD_APIC_VECTOR 0xfa +#define REBOOT_VECTOR 0xf9 /* * Generic system vector for platform specific use diff --git a/arch/x86/include/asm/trace/irq_vectors.h b/arch/x86/include/asm/trace/irq_vectors.h index 4cab890..e672e20 100644 --- a/arch/x86/include/asm/trace/irq_vectors.h +++ b/arch/x86/include/asm/trace/irq_vectors.h @@ -89,12 +89,6 @@ TRACE_EVENT_PERF_PERM(irq_work_exit, is_sampling_event(p_event) ? -EPERM : 0); DEFINE_IRQ_VECTOR_EVENT(call_function); /* - * call_function_single - called when entering/exiting a call function - * single interrupt vector handler - */ -DEFINE_IRQ_VECTOR_EVENT(call_function_single); - -/* * threshold_apic - called when entering/exiting a threshold apic interrupt * vector handler */ diff --git a/arch/x86/kernel/entry_64.S b/arch/x86/kernel/entry_64.S index e21b078..8d5d21a 100644 --- a/arch/x86/kernel/entry_64.S +++ b/arch/x86/kernel/entry_64.S @@ -1182,8 +1182,6 @@ apicinterrupt THERMAL_APIC_VECTOR \ #endif #ifdef CONFIG_SMP -apicinterrupt CALL_FUNCTION_SINGLE_VECTOR \ - call_function_single_interrupt smp_call_function_single_interrupt apicinterrupt CALL_FUNCTION_VECTOR \ call_function_interrupt smp_call_function_interrupt apicinterrupt RESCHEDULE_VECTOR \ diff --git a/arch/x86/kernel/irqinit.c b/arch/x86/kernel/irqinit.c index a2a1fbc..4aa1b8c 100644 --- a/arch/x86/kernel/irqinit.c +++ b/arch/x86/kernel/irqinit.c @@ -141,10 +141,6 @@ static void __init smp_intr_init(void) /* IPI for generic function call */ alloc_intr_gate(CALL_FUNCTION_VECTOR, call_function_interrupt); - /* IPI for generic single function call */ - alloc_intr_gate(CALL_FUNCTION_SINGLE_VECTOR, - call_function_single_interrupt); - /* Low priority IPI to cleanup after moving an irq */ set_intr_gate(IRQ_MOVE_CLEANUP_VECTOR, irq_move_cleanup_interrupt); set_bit(IRQ_MOVE_CLEANUP_VECTOR, used_vectors); diff --git a/arch/x86/kernel/smp.c b/arch/x86/kernel/smp.c index 7c3a5a6..f363dd2 100644 --- a/arch/x86/kernel/smp.c +++ b/arch/x86/kernel/smp.c @@ -129,7 +129,7 @@ static void native_smp_send_reschedule(int cpu) void native_send_call_func_single_ipi(int cpu) { - apic->send_IPI_mask(cpumask_of(cpu), CALL_FUNCTION_SINGLE_VECTOR); + apic->send_IPI_mask(cpumask_of(cpu), CALL_FUNCTION_VECTOR); } void native_send_call_func_ipi(const struct cpumask *mask) @@ -311,28 +311,6 @@ __visible void smp_trace_call_function_interrupt(struct pt_regs *regs) exiting_irq(); } -static inline void __smp_call_function_single_interrupt(void) -{ - generic_smp_call_function_single_interrupt(); - inc_irq_stat(irq_call_count); -} - -__visible void smp_call_function_single_interrupt(struct pt_regs *regs) -{ - smp_entering_irq(); - __smp_call_function_single_interrupt(); - exiting_irq(); -} - -__visible void smp_trace_call_function_single_interrupt(struct pt_regs *regs) -{ - smp_entering_irq(); - trace_call_function_single_entry(CALL_FUNCTION_SINGLE_VECTOR); - __smp_call_function_single_interrupt(); - trace_call_function_single_exit(CALL_FUNCTION_SINGLE_VECTOR); - exiting_irq(); -} - static int __init nonmi_ipi_setup(char *str) { smp_no_nmi_ipi = true; diff --git a/arch/x86/xen/smp.c b/arch/x86/xen/smp.c index 7cf1689..f241792 100644 --- a/arch/x86/xen/smp.c +++ b/arch/x86/xen/smp.c @@ -560,7 +560,6 @@ static inline int xen_map_vector(int vector) xen_vector = XEN_RESCHEDULE_VECTOR; break; case CALL_FUNCTION_VECTOR: - case CALL_FUNCTION_SINGLE_VECTOR: xen_vector = XEN_CALL_FUNCTION_VECTOR; break; case IRQ_WORK_VECTOR: -- 1.8.1.2 ^ permalink raw reply related [flat|nested] 5+ messages in thread
end of thread, other threads:[~2013-12-16 16:33 UTC | newest]
Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
[not found] <1387125400-28849-1-git-send-email-liuj97@gmail.com>
2013-12-15 16:36 ` [PATCH v3 [resend] 14/18] smp, x86, xen: kill SMP single function call interrupt Jiang Liu
2013-12-16 3:00 ` Konrad Rzeszutek Wilk
2013-12-16 4:24 ` Liu, Jinsong
2013-12-16 16:33 ` Konrad Rzeszutek Wilk
2013-12-15 16:36 ` [PATCH v3 [resend] 15/18] smp, x86: " Jiang Liu
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for NNTP newsgroup(s).