Thread (13 messages) flat view 13 messages, 4 authors, 2016-08-30
STALE3675d

[PATCH] ARM: irq_work: Do not attempt to IPI on non IPI-capable HW

From: Peter Chen <hidden>
Date: 2016-08-17 07:58:55

 
On 17/08/16 04:15, Peter Chen wrote:
quoted
On Tue, Aug 16, 2016 at 11:26 PM, Marc Zyngier [off-list ref]
wrote:
quoted
quoted
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).
 
I am puzzled that how you would like to check IPI capable, at runtime
or according to kernel configuration?
quoted
quoted
 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?
If UP system with CONFIG_SMP enabled, the __smp_cross_call is not
NULL, but the IPI is not capable. Or am I missing something?

Peter
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help