From: marc.zyngier@arm.com (Marc Zyngier)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH] ARM: irq_work: Do not attempt to IPI on non IPI-capable HW
Date: Wed, 17 Aug 2016 08:41:23 +0100 [thread overview]
Message-ID: <57B41523.6030202@arm.com> (raw)
In-Reply-To: <CAL411-pUUdxN_d76FaXYGtEd7Seewnrin=x2mFEbi1Z48zSRvg@mail.gmail.com>
On 17/08/16 04:15, Peter Chen wrote:
> On Tue, Aug 16, 2016 at 11:26 PM, Marc Zyngier <marc.zyngier@arm.com> wrote:
>> Not all of the ARM HW is IPI capable (i.e. most of the non-SMP
>> systems). Unfortunately, some systems do advertise being SMP
>> capable, even if they have a single core and do not define
>> a cross call method.
>
> Could you example it? I find all current set_smp_cross_call is defined
> under CONFIG_SMP.
This doesn't mean that the system will be SMP at runtime (SMP_ON_UP).
> Or you will change gic code to define set_smp_cross_call at runtime?
No. Also, the GIC is not a universally adopted interrupt controller, as
plenty of system don't have one.
>
>> In this case, irq_work_queue dies
>> as arch_irq_work_has_interrupt() fails to detect this
>> particular case.
>>
>> Let's redefine arch_irq_work_has_interrupt() to actually check
>> if we're IPI capable instead of simply being SMP. This sidesteps
>> the issue entierely.
>>
>> Signed-off-by: Marc Zyngier <marc.zyngier@arm.com>
>> ---
>> arch/arm/include/asm/irq_work.h | 6 +++++-
>> arch/arm/include/asm/smp_plat.h | 2 ++
>> arch/arm/kernel/smp.c | 2 +-
>> 3 files changed, 8 insertions(+), 2 deletions(-)
>>
>> diff --git a/arch/arm/include/asm/irq_work.h b/arch/arm/include/asm/irq_work.h
>> index 712d03e..3ba3583 100644
>> --- a/arch/arm/include/asm/irq_work.h
>> +++ b/arch/arm/include/asm/irq_work.h
>> @@ -5,7 +5,11 @@
>>
>> static inline bool arch_irq_work_has_interrupt(void)
>> {
>> - return is_smp();
>> +#ifdef CONFIG_SMP
>
> Why not using is_smp as condition, it is more strict.
>
> if (is_smp())
> return !!__smp_cross_call;
> else
> return false;
What's the gain? We're trying to check whether we can actually deliver
an IPI. Why should we gate it by finding out whether we're smp_on_up or not?
Thanks,
M.
--
Jazz is not dead. It just smells funny...
next prev parent reply other threads:[~2016-08-17 7:41 UTC|newest]
Thread overview: 13+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-08-16 15:26 [PATCH] ARM: irq_work: Do not attempt to IPI on non IPI-capable HW Marc Zyngier
2016-08-16 15:52 ` Fabio Estevam
2016-08-16 16:03 ` Marc Zyngier
2016-08-17 3:15 ` Peter Chen
2016-08-17 7:41 ` Marc Zyngier [this message]
2016-08-17 7:58 ` Peter Chen
2016-08-17 8:08 ` Marc Zyngier
2016-08-17 8:28 ` Peter Chen
2016-08-17 9:19 ` Marc Zyngier
2016-08-17 11:27 ` Peter Chen
2016-08-17 12:57 ` Marc Zyngier
2016-08-17 13:28 ` Fabio Estevam
2016-08-30 17:03 ` Marc Zyngier
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=57B41523.6030202@arm.com \
--to=marc.zyngier@arm.com \
--cc=linux-arm-kernel@lists.infradead.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
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.