linux-arm-kernel.lists.infradead.org archive mirror
 help / color / mirror / Atom feed
* arm64: WARN_ON_ONCE issue when resuming from hibernation
@ 2018-12-07  1:40 Kunihiko Hayashi
  2018-12-07 10:47 ` Will Deacon
  0 siblings, 1 reply; 4+ messages in thread
From: Kunihiko Hayashi @ 2018-12-07  1:40 UTC (permalink / raw)
  To: arm, linux-arm-kernel

Hello all,

I found that a WARN_ON_ONCE dump occured in the resuming sequence from
hibernation on arm64 SoC (I use UniPhier LD20 environment).

    ...
    Disabling non-boot CPUs ...
    CPU1: shutdown
    psci: CPU1 killed.
    CPU2: shutdown
    psci: CPU2 killed.
    CPU3: shutdown
    psci: CPU3 killed.
    WARNING: CPU: 0 PID: 1 at ../kernel/smp.c:416 smp_call_function_many+0xd4/0x350
    Modules linked in:
    CPU: 0 PID: 1 Comm: swapper/0 Not tainted 4.20.0-rc4 #1
    ...

I show the result of reading the code, however,
I'm not sure that this issue occurs in other arm64 SoC.

In the resuming sequence, once all CPUs are stopped and local IRQs
are disabled [1].

[1] https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/kernel/power/hibernate.c?h=v4.20-rc4#n450

In case of arm64, flush_icache_range() will be called after that.
This calls kick_all_cpus_sync() to sync all CPUs with IPI, and
since local IRQs are disabled, WARN_ON_ONCE() will be called in
smp_call_function_many() [2].

[2] https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/kernel/smp.c?h=v4.20-rc4#n415

The following tree shows a part of the callgraph.

    resume_target_kernel()
    +- local_irq_disable()
    +- swsusp_arch_resume()				/* for arm64 */
       +- create_safe_exec_page()			/* for arm64 */
          +- flush_icache_range()			/* for arm64 */
             +- kick_all_cpus_sync()
                +- smp_call_function()
                   +- smp_call_function_many()
                      +- WARN_ON_ONCE(irq_disabled())

What is the possible way to solve this issue?

Thank you,

---
Best Regards,
Kunihiko Hayashi



_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2018-12-07 12:24 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2018-12-07  1:40 arm64: WARN_ON_ONCE issue when resuming from hibernation Kunihiko Hayashi
2018-12-07 10:47 ` Will Deacon
2018-12-07 12:02   ` James Morse
2018-12-07 12:24     ` Kunihiko Hayashi

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).