On 21/03/18 09:45, Marek Szyprowski wrote: > 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 regarless 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@xxxxxxxxxxx> > CC: stable@xxxxxxxxxxxxxxx # v4.13+ > --- > arch/arm/mach-exynos/pm.c | 6 +----- > 1 file changed, 1 insertion(+), 5 deletions(-) > > diff --git a/arch/arm/mach-exynos/pm.c b/arch/arm/mach-exynos/pm.c > index dc4346ecf16d..a1055a2b8d54 100644 > --- a/arch/arm/mach-exynos/pm.c > +++ b/arch/arm/mach-exynos/pm.c > @@ -271,11 +271,7 @@ static int exynos_cpu0_enter_aftr(void) > 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: > I'm a bit puzzled here. If the GIC change broke something on your platform, it probably also broke something for all other users of arch_send_wakeup_ipi_mask. But nobody reported anything until now. Also, it doesn't look like 4210 is a big-little platform, so it is unlikely to use the big-little switcher. What is specific to this system that makes misbehave? Were you implicitly relying on the BL lock to perform some serialization? Thanks, M. -- Jazz is not dead. It just smells funny...