summaryrefslogtreecommitdiffstats
path: root/arch/powerpc/kernel/machine_kexec_64.c
diff options
context:
space:
mode:
authorChris Zankel <chris@zankel.net>2013-07-08 01:10:26 -0700
committerChris Zankel <chris@zankel.net>2013-07-08 01:10:26 -0700
commit033d777f548645c3a906b73eef5d665aeee55092 (patch)
tree707dd7757ed59882fb1ecaf73313c325fa20dec8 /arch/powerpc/kernel/machine_kexec_64.c
parentfd95ee7380ae973c6f11b897af6ef9d253a1df9e (diff)
parent73b0cd674ccc64c921e25bd7154f26d342116539 (diff)
downloadop-kernel-dev-033d777f548645c3a906b73eef5d665aeee55092.zip
op-kernel-dev-033d777f548645c3a906b73eef5d665aeee55092.tar.gz
Merge branch 'timers-core-for-linus' of https://git.kernel.org/cgit/linux/kernel/git/tip/tip into tst5
Diffstat (limited to 'arch/powerpc/kernel/machine_kexec_64.c')
-rw-r--r--arch/powerpc/kernel/machine_kexec_64.c4
1 files changed, 4 insertions, 0 deletions
diff --git a/arch/powerpc/kernel/machine_kexec_64.c b/arch/powerpc/kernel/machine_kexec_64.c
index 466a290..611acdf 100644
--- a/arch/powerpc/kernel/machine_kexec_64.c
+++ b/arch/powerpc/kernel/machine_kexec_64.c
@@ -17,6 +17,7 @@
#include <linux/errno.h>
#include <linux/kernel.h>
#include <linux/cpu.h>
+#include <linux/hardirq.h>
#include <asm/page.h>
#include <asm/current.h>
@@ -335,10 +336,13 @@ void default_machine_kexec(struct kimage *image)
pr_debug("kexec: Starting switchover sequence.\n");
/* switch to a staticly allocated stack. Based on irq stack code.
+ * We setup preempt_count to avoid using VMX in memcpy.
* XXX: the task struct will likely be invalid once we do the copy!
*/
kexec_stack.thread_info.task = current_thread_info()->task;
kexec_stack.thread_info.flags = 0;
+ kexec_stack.thread_info.preempt_count = HARDIRQ_OFFSET;
+ kexec_stack.thread_info.cpu = current_thread_info()->cpu;
/* We need a static PACA, too; copy this CPU's PACA over and switch to
* it. Also poison per_cpu_offset to catch anyone using non-static
OpenPOWER on IntegriCloud