diff options
author | Michael Holzheu <holzheu@linux.vnet.ibm.com> | 2011-10-30 10:16:40 -0400 |
---|---|---|
committer | Martin Schwidefsky <schwidefsky@de.ibm.com> | 2011-10-30 10:16:42 -0400 |
commit | 60a0c68df2632feaa4a986af084650d1165d89c5 (patch) | |
tree | f55907defeab43de02a5a3127c8d5a694a21b3a2 /arch/s390/kernel/ipl.c | |
parent | 7f0bf656c66e4292e965c95fd9de55c72b6578bb (diff) |
[S390] kdump backend code
This patch provides the architecture specific part of the s390 kdump
support.
Signed-off-by: Michael Holzheu <holzheu@linux.vnet.ibm.com>
Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
Diffstat (limited to 'arch/s390/kernel/ipl.c')
-rw-r--r-- | arch/s390/kernel/ipl.c | 12 |
1 files changed, 10 insertions, 2 deletions
diff --git a/arch/s390/kernel/ipl.c b/arch/s390/kernel/ipl.c index 90769b4bc7f6..ca0520c52547 100644 --- a/arch/s390/kernel/ipl.c +++ b/arch/s390/kernel/ipl.c | |||
@@ -16,6 +16,7 @@ | |||
16 | #include <linux/ctype.h> | 16 | #include <linux/ctype.h> |
17 | #include <linux/fs.h> | 17 | #include <linux/fs.h> |
18 | #include <linux/gfp.h> | 18 | #include <linux/gfp.h> |
19 | #include <linux/crash_dump.h> | ||
19 | #include <asm/ipl.h> | 20 | #include <asm/ipl.h> |
20 | #include <asm/smp.h> | 21 | #include <asm/smp.h> |
21 | #include <asm/setup.h> | 22 | #include <asm/setup.h> |
@@ -1740,6 +1741,9 @@ void do_restart(void) | |||
1740 | { | 1741 | { |
1741 | smp_restart_with_online_cpu(); | 1742 | smp_restart_with_online_cpu(); |
1742 | smp_send_stop(); | 1743 | smp_send_stop(); |
1744 | #ifdef CONFIG_CRASH_DUMP | ||
1745 | crash_kexec(NULL); | ||
1746 | #endif | ||
1743 | on_restart_trigger.action->fn(&on_restart_trigger); | 1747 | on_restart_trigger.action->fn(&on_restart_trigger); |
1744 | stop_run(&on_restart_trigger); | 1748 | stop_run(&on_restart_trigger); |
1745 | } | 1749 | } |
@@ -2010,7 +2014,7 @@ static void do_reset_calls(void) | |||
2010 | 2014 | ||
2011 | u32 dump_prefix_page; | 2015 | u32 dump_prefix_page; |
2012 | 2016 | ||
2013 | void s390_reset_system(void) | 2017 | void s390_reset_system(void (*func)(void *), void *data) |
2014 | { | 2018 | { |
2015 | struct _lowcore *lc; | 2019 | struct _lowcore *lc; |
2016 | 2020 | ||
@@ -2038,6 +2042,10 @@ void s390_reset_system(void) | |||
2038 | S390_lowcore.program_new_psw.addr = | 2042 | S390_lowcore.program_new_psw.addr = |
2039 | PSW_ADDR_AMODE | (unsigned long) s390_base_pgm_handler; | 2043 | PSW_ADDR_AMODE | (unsigned long) s390_base_pgm_handler; |
2040 | 2044 | ||
2045 | /* Store status at absolute zero */ | ||
2046 | store_status(); | ||
2047 | |||
2041 | do_reset_calls(); | 2048 | do_reset_calls(); |
2049 | if (func) | ||
2050 | func(data); | ||
2042 | } | 2051 | } |
2043 | |||