linux/arch/arm64/kernel
Arun KS 90f51a09ef arm64: Fix machine_shutdown() definition
This patch ports most of commit 19ab428f4b "ARM: 7759/1: decouple CPU
offlining from reboot/shutdown" by Stephen Warren from arch/arm to
arch/arm64.

machine_shutdown() is a hook for kexec. Add a comment saying so, since
it isn't obvious from the function name.

Halt, power-off, and restart have different requirements re: stopping
secondary CPUs than kexec has. The former simply require the secondary
CPUs to be quiesced somehow, whereas kexec requires them to be
completely non-operational, so that no matter where the kexec target
images are written in RAM, they won't influence operation of the
secondary CPUS,which could happen if the CPUs were still executing some
kind of pin loop. To this end, modify machine_halt, power_off, and
restart to call smp_send_stop() directly, rather than calling
machine_shutdown().

In machine_shutdown(), replace the call to smp_send_stop() with a call
to disable_nonboot_cpus(). This completely disables all but one CPU,
thus satisfying the kexec requirements a couple paragraphs above.

Signed-off-by: Arun KS <getarunks@gmail.com>
Acked-by: Stephen Warren <swarren@nvidia.com>
Signed-off-by: Catalin Marinas <catalin.marinas@arm.com>
2014-05-16 18:03:18 +01:00
..
vdso arm64: vdso: fix coarse clock handling 2014-02-05 11:55:30 +00:00
.gitignore arm64: Build infrastructure 2012-09-17 13:42:21 +01:00
arm64ksyms.c arm64: use generic strnlen_user and strncpy_from_user functions 2013-12-19 17:43:06 +00:00
asm-offsets.c arm64: kernel: cpu_{suspend/resume} implementation 2013-12-16 17:17:31 +00:00
cpu_ops.c arm64: Slightly improve the warning on CPU0 enable-method 2013-10-31 16:37:26 +00:00
cputable.c arm64: add CPU_HOTPLUG infrastructure 2013-10-25 11:33:21 +01:00
debug-monitors.c arm64: debug: remove noisy, pointless warning 2014-04-25 16:46:50 +01:00
early_printk.c arm64: fixmap: fix missing sub-page offset for earlyprintk 2014-05-03 22:20:31 +01:00
entry-fpsimd.S arm64: add support for kernel mode NEON in interrupt context 2014-05-08 11:31:57 +02:00
entry.S 2014-05-15 for-3.16 pull request 2014-05-16 10:05:11 +01:00
fpsimd.c arm64: add support for kernel mode NEON in interrupt context 2014-05-08 11:31:57 +02:00
head.S arm64: head: fix cache flushing and barriers in set_cpu_boot_mode_flag 2014-05-09 17:04:12 +01:00
hw_breakpoint.c arm64: is_compat_task is defined both in asm/compat.h and linux/compat.h 2014-05-12 16:43:29 +01:00
hyp-stub.S arm64: add hypervisor stub 2012-12-05 11:26:49 +00:00
insn.c arm64: introduce aarch64_insn_gen_{nop|branch_imm}() helper functions 2014-01-08 15:21:29 +00:00
io.c arm64: Device specific operations 2012-09-17 13:42:04 +01:00
irq.c arm64: add CPU_HOTPLUG infrastructure 2013-10-25 11:33:21 +01:00
jump_label.c arm64, jump label: optimize jump label implementation 2014-01-08 15:23:53 +00:00
kgdb.c arm64: KGDB: Add step debugging support 2014-02-26 11:16:25 +00:00
kuser32.S arm64: atomics: fix use of acquire + release for full barrier semantics 2014-02-07 16:45:43 +00:00
Makefile ARM64: perf: add support for perf registers API 2014-03-13 11:22:37 +00:00
module.c arm64: move encode_insn_immediate() from module.c to insn.c 2014-01-08 15:21:29 +00:00
perf_event.c arm64: fix !CONFIG_COMPAT build failures 2014-04-06 23:25:04 +01:00
perf_regs.c arm64: fix !CONFIG_COMPAT build failures 2014-04-06 23:25:04 +01:00
process.c arm64: Fix machine_shutdown() definition 2014-05-16 18:03:18 +01:00
psci.c arm64: remove return value form psci_init() 2014-02-28 14:14:53 +00:00
ptrace.c 2014-05-15 for-3.16 pull request 2014-05-16 10:05:11 +01:00
setup.c arm64: Clean up the default pgprot setting 2014-05-09 15:53:37 +01:00
signal32.c 2014-05-15 for-3.16 pull request 2014-05-16 10:05:11 +01:00
signal.c 2014-05-15 for-3.16 pull request 2014-05-16 10:05:11 +01:00
sleep.S arm64: kernel: cpu_{suspend/resume} implementation 2013-12-16 17:17:31 +00:00
smp_spin_table.c arm64: Remove boot thread synchronisation for spin-table release method 2014-05-09 15:47:46 +01:00
smp.c arm64: Support arch_irq_work_raise() via self IPIs 2014-05-16 17:42:21 +01:00
stacktrace.c ARM64: unwind: Fix PC calculation 2014-02-17 09:16:33 +00:00
suspend.c arm64: kernel: fix per-cpu offset restore on resume 2014-01-24 14:27:40 +00:00
sys32.S arm64: compat: correct register concatenation for syscall wrappers 2013-10-25 15:59:36 +01:00
sys_compat.c compat: generic compat_sys_sched_rr_get_interval() implementation 2012-12-17 17:15:18 -08:00
sys.c arm64: switch to generic sigaltstack 2013-02-14 09:17:29 -05:00
time.c arm64: init: Move of_clk_init to time_init 2014-04-25 18:15:56 +01:00
topology.c arm64: topology: Add support for topology DT bindings 2014-05-16 17:12:41 +01:00
traps.c arm64: Provide read/write fault information in compat signal handlers 2014-05-09 15:47:47 +01:00
vdso.c arm64: vdso: clean up vdso_pagelist initialization 2014-02-26 11:16:30 +00:00
vmlinux.lds.S arm64: Remove unused __data_loc variable 2013-12-20 12:04:48 +00:00