diff options
author | James Morse <james.morse@arm.com> | 2016-06-22 11:06:12 +0200 |
---|---|---|
committer | Catalin Marinas <catalin.marinas@arm.com> | 2016-06-27 17:24:51 +0200 |
commit | b69e0dc14ce3c4abbd11725ff98a885d4616f9fe (patch) | |
tree | a3ef54f76d88dfd7632f2a6504ef4aeb7242b5fd /arch/arm64/include/asm/virt.h | |
parent | Revert "arm64: Add support ARCH_SUPPORTS_INT128" (diff) | |
download | linux-b69e0dc14ce3c4abbd11725ff98a885d4616f9fe.tar.xz linux-b69e0dc14ce3c4abbd11725ff98a885d4616f9fe.zip |
arm64: smp: Add function to determine if cpus are stuck in the kernel
kernel/smp.c has a fancy counter that keeps track of the number of CPUs
it marked as not-present and left in cpu_park_loop(). If there are any
CPUs spinning in here, features like kexec or hibernate may release them
by overwriting this memory.
This problem also occurs on machines using spin-tables to release
secondary cores.
After commit 44dbcc93ab67 ("arm64: Fix behavior of maxcpus=N")
we bring all known cpus into the secondary holding pen, meaning this
memory can't be re-used by kexec or hibernate.
Add a function cpus_are_stuck_in_kernel() to determine if either of these
cases have occurred.
Signed-off-by: James Morse <james.morse@arm.com>
Acked-by: Mark Rutland <mark.rutland@arm.com>
Reviewed-by: Suzuki K Poulose <suzuki.poulose@arm.com>
Signed-off-by: Will Deacon <will.deacon@arm.com>
[catalin.marinas@arm.com: cherry-picked from mainline for kexec dependency]
Signed-off-by: Catalin Marinas <catalin.marinas@arm.com>
Diffstat (limited to 'arch/arm64/include/asm/virt.h')
0 files changed, 0 insertions, 0 deletions