lkml.org 
[lkml]   [2018]   [Apr]   [22]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 4.14 021/164] ARM: EXYNOS: Fix coupled CPU idle freeze on Exynos4210
    Date
    4.14-stable review patch.  If anyone has any objections, please let me know.

    ------------------

    From: Marek Szyprowski <m.szyprowski@samsung.com>

    commit a7480dbcf983c31d8111f864c848e8a75116a87d upstream.

    Since commit 04c8b0f82c7d ("irqchip/gic: Make locking a BL_SWITCHER only
    feature") coupled CPU idle freezes from time to time on Exynos4210. Later
    commit 313c8c16ee62 ("PM / CPU: replace raw_notifier with atomic_notifier")
    changed the context in which the CPU idle code is executed, what results
    in fully reproducible freeze all the time. However, almost the same coupled
    CPU idle code works fine on Exynos3250 regardless of the changes made in
    the mentioned commits.

    It turned out that the IPI call used on Exynos4210 is conflicting with the
    change done in the first mentioned commit in GIC. Fix this by using the
    same code path as for Exynos3250, instead of the IPI call for
    synchronization with second CPU core, call dsb_sev() directly.

    Tested on Exynos4210-based Trats and Origen boards.

    Signed-off-by: Marek Szyprowski <m.szyprowski@samsung.com>
    CC: <stable@vger.kernel.org> # v4.13+
    Acked-by: Marc Zyngier <marc.zyngier@arm.com>
    Acked-by: Bartlomiej Zolnierkiewicz <b.zolnierkie@samsung.com>
    Signed-off-by: Krzysztof Kozlowski <krzk@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

    ---
    arch/arm/mach-exynos/pm.c | 6 +-----
    1 file changed, 1 insertion(+), 5 deletions(-)

    --- a/arch/arm/mach-exynos/pm.c
    +++ b/arch/arm/mach-exynos/pm.c
    @@ -276,11 +276,7 @@ abort:
    goto fail;

    call_firmware_op(cpu_boot, 1);
    -
    - if (soc_is_exynos3250())
    - dsb_sev();
    - else
    - arch_send_wakeup_ipi_mask(cpumask_of(1));
    + dsb_sev();
    }
    }
    fail:

    \
     
     \ /
      Last update: 2018-04-22 16:04    [W:4.088 / U:0.016 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site