* [PATCH 0/2] IPI numbering cleanup @ 2015-12-18 9:16 Marc Zyngier 2015-12-18 9:16 ` [PATCH 1/2] ARM: Remove IPI_CALL_FUNC_SINGLE Marc Zyngier 2015-12-18 9:16 ` [PATCH 2/2] ARM: Make IPI_CPU_BACKTRACE a "non-secure" SGI Marc Zyngier 0 siblings, 2 replies; 8+ messages in thread From: Marc Zyngier @ 2015-12-18 9:16 UTC (permalink / raw) To: linux-arm-kernel Daniel Thompson reported[1] that IPI_CPU_BACKTRACE failed to fire on one of his platforms because SGI15 was already used by the secure firmware. In order to move this IPI to the non-secure side, this series drops IPI_CALL_FUNC_SINGLE (which has been deprecated for a while). This allows the last non-secure SGI to be reallocated to IPI_CPU_BACKTRACE. M. [1]: https://lkml.org/lkml/2015/12/16/375 Marc Zyngier (2): ARM: Remove IPI_CALL_FUNC_SINGLE ARM: Make IPI_CPU_BACKTRACE a "non-secure" SGI arch/arm/include/asm/hardirq.h | 2 +- arch/arm/kernel/smp.c | 12 ++---------- 2 files changed, 3 insertions(+), 11 deletions(-) -- 2.1.4 ^ permalink raw reply [flat|nested] 8+ messages in thread
* [PATCH 1/2] ARM: Remove IPI_CALL_FUNC_SINGLE 2015-12-18 9:16 [PATCH 0/2] IPI numbering cleanup Marc Zyngier @ 2015-12-18 9:16 ` Marc Zyngier 2015-12-18 9:16 ` [PATCH 2/2] ARM: Make IPI_CPU_BACKTRACE a "non-secure" SGI Marc Zyngier 1 sibling, 0 replies; 8+ messages in thread From: Marc Zyngier @ 2015-12-18 9:16 UTC (permalink / raw) To: linux-arm-kernel Since 9a46ad6d6df3 ("smp: make smp_call_function_many() use logic similar to smp_call_function_single()"), the core IPI handling has been simplified, and generic_smp_call_function_interrupt is now the same as generic_smp_call_function_single_interrupt. This means that one of IPI_CALL_FUNC and IPI_CALL_FUNC_SINGLE has become redundant. We can then safely drop IPI_CALL_FUNC_SINGLE, and use only IPI_CALL_FUNC. This has the advantage of reducing the number of SGI IDs we're using (a fairly scarse resource). Tested on a dual A7 board. Signed-off-by: Marc Zyngier <marc.zyngier@arm.com> --- arch/arm/include/asm/hardirq.h | 2 +- arch/arm/kernel/smp.c | 10 +--------- 2 files changed, 2 insertions(+), 10 deletions(-) diff --git a/arch/arm/include/asm/hardirq.h b/arch/arm/include/asm/hardirq.h index fe3ea77..3d7351c 100644 --- a/arch/arm/include/asm/hardirq.h +++ b/arch/arm/include/asm/hardirq.h @@ -5,7 +5,7 @@ #include <linux/threads.h> #include <asm/irq.h> -#define NR_IPI 8 +#define NR_IPI 7 typedef struct { unsigned int __softirq_pending; diff --git a/arch/arm/kernel/smp.c b/arch/arm/kernel/smp.c index b263613..d50a77d 100644 --- a/arch/arm/kernel/smp.c +++ b/arch/arm/kernel/smp.c @@ -69,7 +69,6 @@ enum ipi_msg_type { IPI_TIMER, IPI_RESCHEDULE, IPI_CALL_FUNC, - IPI_CALL_FUNC_SINGLE, IPI_CPU_STOP, IPI_IRQ_WORK, IPI_COMPLETION, @@ -475,7 +474,6 @@ static const char *ipi_types[NR_IPI] __tracepoint_string = { S(IPI_TIMER, "Timer broadcast interrupts"), S(IPI_RESCHEDULE, "Rescheduling interrupts"), S(IPI_CALL_FUNC, "Function call interrupts"), - S(IPI_CALL_FUNC_SINGLE, "Single function call interrupts"), S(IPI_CPU_STOP, "CPU stop interrupts"), S(IPI_IRQ_WORK, "IRQ work interrupts"), S(IPI_COMPLETION, "completion interrupts"), @@ -525,7 +523,7 @@ void arch_send_wakeup_ipi_mask(const struct cpumask *mask) void arch_send_call_function_single_ipi(int cpu) { - smp_cross_call(cpumask_of(cpu), IPI_CALL_FUNC_SINGLE); + smp_cross_call(cpumask_of(cpu), IPI_CALL_FUNC); } #ifdef CONFIG_IRQ_WORK @@ -620,12 +618,6 @@ void handle_IPI(int ipinr, struct pt_regs *regs) irq_exit(); break; - case IPI_CALL_FUNC_SINGLE: - irq_enter(); - generic_smp_call_function_single_interrupt(); - irq_exit(); - break; - case IPI_CPU_STOP: irq_enter(); ipi_cpu_stop(cpu); -- 2.1.4 ^ permalink raw reply related [flat|nested] 8+ messages in thread
* [PATCH 2/2] ARM: Make IPI_CPU_BACKTRACE a "non-secure" SGI 2015-12-18 9:16 [PATCH 0/2] IPI numbering cleanup Marc Zyngier 2015-12-18 9:16 ` [PATCH 1/2] ARM: Remove IPI_CALL_FUNC_SINGLE Marc Zyngier @ 2015-12-18 9:16 ` Marc Zyngier 2015-12-18 9:34 ` Russell King - ARM Linux 2015-12-18 11:20 ` Daniel Thompson 1 sibling, 2 replies; 8+ messages in thread From: Marc Zyngier @ 2015-12-18 9:16 UTC (permalink / raw) To: linux-arm-kernel Having IPI_CPU_BACKTRACE as SGI15 may not work if the kernel is running in non-secure mode and that the secure firmware has decided to follow ARM's recommendations that SGI8-15 should be reserved for secure purpose. Now that we are "only" using SGI0-6, change IPI_CPU_BACKTRACE to use SGI7, which makes it more likely to work. Signed-off-by: Marc Zyngier <marc.zyngier@arm.com> --- arch/arm/kernel/smp.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/arch/arm/kernel/smp.c b/arch/arm/kernel/smp.c index d50a77d..fe517f1 100644 --- a/arch/arm/kernel/smp.c +++ b/arch/arm/kernel/smp.c @@ -72,7 +72,7 @@ enum ipi_msg_type { IPI_CPU_STOP, IPI_IRQ_WORK, IPI_COMPLETION, - IPI_CPU_BACKTRACE = 15, + IPI_CPU_BACKTRACE, }; static DECLARE_COMPLETION(cpu_running); -- 2.1.4 ^ permalink raw reply related [flat|nested] 8+ messages in thread
* [PATCH 2/2] ARM: Make IPI_CPU_BACKTRACE a "non-secure" SGI 2015-12-18 9:16 ` [PATCH 2/2] ARM: Make IPI_CPU_BACKTRACE a "non-secure" SGI Marc Zyngier @ 2015-12-18 9:34 ` Russell King - ARM Linux 2015-12-18 9:48 ` Marc Zyngier 2015-12-18 11:20 ` Daniel Thompson 1 sibling, 1 reply; 8+ messages in thread From: Russell King - ARM Linux @ 2015-12-18 9:34 UTC (permalink / raw) To: linux-arm-kernel On Fri, Dec 18, 2015 at 09:16:13AM +0000, Marc Zyngier wrote: > Having IPI_CPU_BACKTRACE as SGI15 may not work if the kernel is > running in non-secure mode and that the secure firmware has > decided to follow ARM's recommendations that SGI8-15 should > be reserved for secure purpose. > > Now that we are "only" using SGI0-6, change IPI_CPU_BACKTRACE > to use SGI7, which makes it more likely to work. We should add a comment to the enum explaining this, so it's obvious for the future - best place is after the IPI_CPU_BACKTRACE entry. Not everyone checks the git logs for these kinds of details. -- RMK's Patch system: http://www.arm.linux.org.uk/developer/patches/ FTTC broadband for 0.8mile line: currently at 9.6Mbps down 400kbps up according to speedtest.net. ^ permalink raw reply [flat|nested] 8+ messages in thread
* [PATCH 2/2] ARM: Make IPI_CPU_BACKTRACE a "non-secure" SGI 2015-12-18 9:34 ` Russell King - ARM Linux @ 2015-12-18 9:48 ` Marc Zyngier 2015-12-18 9:52 ` Russell King - ARM Linux 0 siblings, 1 reply; 8+ messages in thread From: Marc Zyngier @ 2015-12-18 9:48 UTC (permalink / raw) To: linux-arm-kernel On 18/12/15 09:34, Russell King - ARM Linux wrote: > On Fri, Dec 18, 2015 at 09:16:13AM +0000, Marc Zyngier wrote: >> Having IPI_CPU_BACKTRACE as SGI15 may not work if the kernel is >> running in non-secure mode and that the secure firmware has >> decided to follow ARM's recommendations that SGI8-15 should >> be reserved for secure purpose. >> >> Now that we are "only" using SGI0-6, change IPI_CPU_BACKTRACE >> to use SGI7, which makes it more likely to work. > > We should add a comment to the enum explaining this, so it's obvious > for the future - best place is after the IPI_CPU_BACKTRACE entry. > Not everyone checks the git logs for these kinds of details. Indeed. How about something like this: diff --git a/arch/arm/kernel/smp.c b/arch/arm/kernel/smp.c index fe517f1..37312f6 100644 --- a/arch/arm/kernel/smp.c +++ b/arch/arm/kernel/smp.c @@ -73,6 +73,11 @@ enum ipi_msg_type { IPI_IRQ_WORK, IPI_COMPLETION, IPI_CPU_BACKTRACE, + /* + * SGI8-15 can be reserved by secure firmware, and thus may + * not be usable by the kernel. Please keep the above limited + * to at most 8 entries. + */ }; static DECLARE_COMPLETION(cpu_running); Thanks, M. -- Jazz is not dead. It just smells funny... ^ permalink raw reply related [flat|nested] 8+ messages in thread
* [PATCH 2/2] ARM: Make IPI_CPU_BACKTRACE a "non-secure" SGI 2015-12-18 9:48 ` Marc Zyngier @ 2015-12-18 9:52 ` Russell King - ARM Linux 0 siblings, 0 replies; 8+ messages in thread From: Russell King - ARM Linux @ 2015-12-18 9:52 UTC (permalink / raw) To: linux-arm-kernel On Fri, Dec 18, 2015 at 09:48:51AM +0000, Marc Zyngier wrote: > On 18/12/15 09:34, Russell King - ARM Linux wrote: > > On Fri, Dec 18, 2015 at 09:16:13AM +0000, Marc Zyngier wrote: > >> Having IPI_CPU_BACKTRACE as SGI15 may not work if the kernel is > >> running in non-secure mode and that the secure firmware has > >> decided to follow ARM's recommendations that SGI8-15 should > >> be reserved for secure purpose. > >> > >> Now that we are "only" using SGI0-6, change IPI_CPU_BACKTRACE > >> to use SGI7, which makes it more likely to work. > > > > We should add a comment to the enum explaining this, so it's obvious > > for the future - best place is after the IPI_CPU_BACKTRACE entry. > > Not everyone checks the git logs for these kinds of details. > > Indeed. How about something like this: Yep. -- RMK's Patch system: http://www.arm.linux.org.uk/developer/patches/ FTTC broadband for 0.8mile line: currently at 9.6Mbps down 400kbps up according to speedtest.net. ^ permalink raw reply [flat|nested] 8+ messages in thread
* [PATCH 2/2] ARM: Make IPI_CPU_BACKTRACE a "non-secure" SGI 2015-12-18 9:16 ` [PATCH 2/2] ARM: Make IPI_CPU_BACKTRACE a "non-secure" SGI Marc Zyngier 2015-12-18 9:34 ` Russell King - ARM Linux @ 2015-12-18 11:20 ` Daniel Thompson 2015-12-18 11:29 ` Marc Zyngier 1 sibling, 1 reply; 8+ messages in thread From: Daniel Thompson @ 2015-12-18 11:20 UTC (permalink / raw) To: linux-arm-kernel On 18/12/15 09:16, Marc Zyngier wrote: > Having IPI_CPU_BACKTRACE as SGI15 may not work if the kernel is > running in non-secure mode and that the secure firmware has > decided to follow ARM's recommendations that SGI8-15 should > be reserved for secure purpose. > > Now that we are "only" using SGI0-6, change IPI_CPU_BACKTRACE > to use SGI7, which makes it more likely to work. > > Signed-off-by: Marc Zyngier <marc.zyngier@arm.com> Tested-by: Daniel Thompson <daniel.thompson@linaro.org> > --- > arch/arm/kernel/smp.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/arch/arm/kernel/smp.c b/arch/arm/kernel/smp.c > index d50a77d..fe517f1 100644 > --- a/arch/arm/kernel/smp.c > +++ b/arch/arm/kernel/smp.c > @@ -72,7 +72,7 @@ enum ipi_msg_type { > IPI_CPU_STOP, > IPI_IRQ_WORK, > IPI_COMPLETION, > - IPI_CPU_BACKTRACE = 15, > + IPI_CPU_BACKTRACE, > }; > > static DECLARE_COMPLETION(cpu_running); > ^ permalink raw reply [flat|nested] 8+ messages in thread
* [PATCH 2/2] ARM: Make IPI_CPU_BACKTRACE a "non-secure" SGI 2015-12-18 11:20 ` Daniel Thompson @ 2015-12-18 11:29 ` Marc Zyngier 0 siblings, 0 replies; 8+ messages in thread From: Marc Zyngier @ 2015-12-18 11:29 UTC (permalink / raw) To: linux-arm-kernel On 18/12/15 11:20, Daniel Thompson wrote: > On 18/12/15 09:16, Marc Zyngier wrote: >> Having IPI_CPU_BACKTRACE as SGI15 may not work if the kernel is >> running in non-secure mode and that the secure firmware has >> decided to follow ARM's recommendations that SGI8-15 should >> be reserved for secure purpose. >> >> Now that we are "only" using SGI0-6, change IPI_CPU_BACKTRACE >> to use SGI7, which makes it more likely to work. >> >> Signed-off-by: Marc Zyngier <marc.zyngier@arm.com> > > Tested-by: Daniel Thompson <daniel.thompson@linaro.org> Thanks Daniel, much appreciated. M. -- Jazz is not dead. It just smells funny... ^ permalink raw reply [flat|nested] 8+ messages in thread
end of thread, other threads:[~2015-12-18 11:29 UTC | newest] Thread overview: 8+ messages (download: mbox.gz / follow: Atom feed) -- links below jump to the message on this page -- 2015-12-18 9:16 [PATCH 0/2] IPI numbering cleanup Marc Zyngier 2015-12-18 9:16 ` [PATCH 1/2] ARM: Remove IPI_CALL_FUNC_SINGLE Marc Zyngier 2015-12-18 9:16 ` [PATCH 2/2] ARM: Make IPI_CPU_BACKTRACE a "non-secure" SGI Marc Zyngier 2015-12-18 9:34 ` Russell King - ARM Linux 2015-12-18 9:48 ` Marc Zyngier 2015-12-18 9:52 ` Russell King - ARM Linux 2015-12-18 11:20 ` Daniel Thompson 2015-12-18 11:29 ` Marc Zyngier
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.