diff options
Diffstat (limited to 'arch/powerpc/kernel/machine_kexec.c')
-rw-r--r-- | arch/powerpc/kernel/machine_kexec.c | 10 |
1 files changed, 7 insertions, 3 deletions
diff --git a/arch/powerpc/kernel/machine_kexec.c b/arch/powerpc/kernel/machine_kexec.c index 6658a158995..9ce1672afb5 100644 --- a/arch/powerpc/kernel/machine_kexec.c +++ b/arch/powerpc/kernel/machine_kexec.c | |||
@@ -136,12 +136,16 @@ void __init reserve_crashkernel(void) | |||
136 | crashk_res.start = KDUMP_KERNELBASE; | 136 | crashk_res.start = KDUMP_KERNELBASE; |
137 | #else | 137 | #else |
138 | if (!crashk_res.start) { | 138 | if (!crashk_res.start) { |
139 | #ifdef CONFIG_PPC64 | ||
139 | /* | 140 | /* |
140 | * unspecified address, choose a region of specified size | 141 | * On 64bit we split the RMO in half but cap it at half of |
141 | * can overlap with initrd (ignoring corruption when retained) | 142 | * a small SLB (128MB) since the crash kernel needs to place |
142 | * ppc64 requires kernel and some stacks to be in first segemnt | 143 | * itself and some stacks to be in the first segment. |
143 | */ | 144 | */ |
145 | crashk_res.start = min(0x80000000ULL, (ppc64_rma_size / 2)); | ||
146 | #else | ||
144 | crashk_res.start = KDUMP_KERNELBASE; | 147 | crashk_res.start = KDUMP_KERNELBASE; |
148 | #endif | ||
145 | } | 149 | } |
146 | 150 | ||
147 | crash_base = PAGE_ALIGN(crashk_res.start); | 151 | crash_base = PAGE_ALIGN(crashk_res.start); |