lkml.org 
[lkml]   [2020]   [Jul]   [22]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 13/13] task_isolation: kick_all_cpus_sync: don't kick isolated cpus
    Date
    From: Yuri Norov <ynorov@marvell.com>

    Make sure that kick_all_cpus_sync() does not call CPUs that are running
    isolated tasks.

    Signed-off-by: Yuri Norov <ynorov@marvell.com>
    [abelits@marvell.com: use safe task_isolation_cpumask() implementation]
    Signed-off-by: Alex Belits <abelits@marvell.com>
    ---
    kernel/smp.c | 14 +++++++++++++-
    1 file changed, 13 insertions(+), 1 deletion(-)

    diff --git a/kernel/smp.c b/kernel/smp.c
    index 6a6849783948..ff0d95db33b3 100644
    --- a/kernel/smp.c
    +++ b/kernel/smp.c
    @@ -803,9 +803,21 @@ static void do_nothing(void *unused)
    */
    void kick_all_cpus_sync(void)
    {
    + struct cpumask mask;
    +
    /* Make sure the change is visible before we kick the cpus */
    smp_mb();
    - smp_call_function(do_nothing, NULL, 1);
    +
    + preempt_disable();
    +#ifdef CONFIG_TASK_ISOLATION
    + cpumask_clear(&mask);
    + task_isolation_cpumask(&mask);
    + cpumask_complement(&mask, &mask);
    +#else
    + cpumask_setall(&mask);
    +#endif
    + smp_call_function_many(&mask, do_nothing, NULL, 1);
    + preempt_enable();
    }
    EXPORT_SYMBOL_GPL(kick_all_cpus_sync);

    --
    2.26.2
    \
     
     \ /
      Last update: 2020-07-22 17:01    [W:3.133 / U:0.036 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site