diff options
author | Michael Holzheu <holzheu@linux.vnet.ibm.com> | 2012-03-13 11:25:08 -0400 |
---|---|---|
committer | Martin Schwidefsky <schwidefsky@de.ibm.com> | 2012-03-13 11:26:23 -0400 |
commit | c6da39f26cfe475704ec521723192e520e8f51b8 (patch) | |
tree | b06df4190e3dbab104e515d7372de0ddc35d9a62 /arch/s390 | |
parent | f5bfa159d20c9a25c44a7f848c70d4156f78ba64 (diff) |
[S390] kernel: Pass correct stack for smp_call_ipl_cpu()
Currently pcpu_devices->panic_stack is passed to pcpu_delegate() in
smp_call_ipl_cpu(). This is wrong because pcpu_delegate() expects
the bottom (high address) of the stack and pcpu_devices->panic_stack
points to the top (low address). We now pass the bottom of the stack
which is pcpu_devices->panic_stack + PAGE_SIZE.
Signed-off-by: Michael Holzheu <holzheu@linux.vnet.ibm.com>
Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
Diffstat (limited to 'arch/s390')
-rw-r--r-- | arch/s390/kernel/smp.c | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/arch/s390/kernel/smp.c b/arch/s390/kernel/smp.c index 3b9e5c9f4c0..64ebbcbb31e 100644 --- a/arch/s390/kernel/smp.c +++ b/arch/s390/kernel/smp.c | |||
@@ -335,7 +335,8 @@ void smp_call_online_cpu(void (*func)(void *), void *data) | |||
335 | */ | 335 | */ |
336 | void smp_call_ipl_cpu(void (*func)(void *), void *data) | 336 | void smp_call_ipl_cpu(void (*func)(void *), void *data) |
337 | { | 337 | { |
338 | pcpu_delegate(&pcpu_devices[0], func, data, pcpu_devices->panic_stack); | 338 | pcpu_delegate(&pcpu_devices[0], func, data, |
339 | pcpu_devices->panic_stack + PAGE_SIZE); | ||
339 | } | 340 | } |
340 | 341 | ||
341 | int smp_find_processor_id(u16 address) | 342 | int smp_find_processor_id(u16 address) |