diff mbox series

ppc64/kdump: Limit kdump base to 512MB

Message ID 20220909174034.34086-1-hbathini@linux.ibm.com (mailing list archive)
State Superseded
Headers show
Series ppc64/kdump: Limit kdump base to 512MB | expand

Checks

Context Check Description
snowpatch_ozlabs/github-powerpc_ppctests success Successfully ran 10 jobs.
snowpatch_ozlabs/github-powerpc_selftests success Successfully ran 10 jobs.

Commit Message

Hari Bathini Sept. 9, 2022, 5:40 p.m. UTC
Since commit e641eb03ab2b0 ("powerpc: Fix up the kdump base cap to
128M") memory for kdump kernel has been reserved at an offset of
128MB. This held up well for a long time before running into boot
failure on LPARs having a lot of cores. Commit 7c5ed82b800d8
("powerpc: Set crashkernel offset to mid of RMA region") fixed this
boot failure by moving the offset to mid of RMA region. Limit this
offset to 512MB to avoid running into boot failures, during kdump
kernel boot, due RTAS or other allocation restrictions.

Signed-off-by: Hari Bathini <hbathini@linux.ibm.com>
---
 arch/powerpc/kexec/core.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

Comments

Christophe Leroy Sept. 12, 2022, 5:24 a.m. UTC | #1
Le 09/09/2022 à 19:40, Hari Bathini a écrit :
> Since commit e641eb03ab2b0 ("powerpc: Fix up the kdump base cap to
> 128M") memory for kdump kernel has been reserved at an offset of
> 128MB. This held up well for a long time before running into boot
> failure on LPARs having a lot of cores. Commit 7c5ed82b800d8
> ("powerpc: Set crashkernel offset to mid of RMA region") fixed this
> boot failure by moving the offset to mid of RMA region. Limit this
> offset to 512MB to avoid running into boot failures, during kdump
> kernel boot, due RTAS or other allocation restrictions.
> 
> Signed-off-by: Hari Bathini <hbathini@linux.ibm.com>
> ---
>   arch/powerpc/kexec/core.c | 4 ++--
>   1 file changed, 2 insertions(+), 2 deletions(-)
> 
> diff --git a/arch/powerpc/kexec/core.c b/arch/powerpc/kexec/core.c
> index cf84bfe9e27e..c2cbfcf81cea 100644
> --- a/arch/powerpc/kexec/core.c
> +++ b/arch/powerpc/kexec/core.c
> @@ -136,7 +136,7 @@ void __init reserve_crashkernel(void)
>   #ifdef CONFIG_PPC64
>   		/*
>   		 * On the LPAR platform place the crash kernel to mid of
> -		 * RMA size (512MB or more) to ensure the crash kernel
> +		 * RMA size (max. of 512MB) to ensure the crash kernel
>   		 * gets enough space to place itself and some stack to be
>   		 * in the first segment. At the same time normal kernel
>   		 * also get enough space to allocate memory for essential
> @@ -144,7 +144,7 @@ void __init reserve_crashkernel(void)
>   		 * kernel starts at 128MB offset on other platforms.
>   		 */
>   		if (firmware_has_feature(FW_FEATURE_LPAR))
> -			crashk_res.start = ppc64_rma_size / 2;
> +			crashk_res.start = min(0x20000000ULL, (ppc64_rma_size / 2));

Use SZ_512M instead of open coding.

Remove the ( ) around ppc64_rma_size / 2

>   		else
>   			crashk_res.start = min(0x8000000ULL, (ppc64_rma_size / 2));
>   #else

Christophe
Hari Bathini Sept. 12, 2022, 6:52 a.m. UTC | #2
On 12/09/22 10:54 am, Christophe Leroy wrote:
> 
> 
> Le 09/09/2022 à 19:40, Hari Bathini a écrit :
>> Since commit e641eb03ab2b0 ("powerpc: Fix up the kdump base cap to
>> 128M") memory for kdump kernel has been reserved at an offset of
>> 128MB. This held up well for a long time before running into boot
>> failure on LPARs having a lot of cores. Commit 7c5ed82b800d8
>> ("powerpc: Set crashkernel offset to mid of RMA region") fixed this
>> boot failure by moving the offset to mid of RMA region. Limit this
>> offset to 512MB to avoid running into boot failures, during kdump
>> kernel boot, due RTAS or other allocation restrictions.
>>
>> Signed-off-by: Hari Bathini <hbathini@linux.ibm.com>
>> ---
>>    arch/powerpc/kexec/core.c | 4 ++--
>>    1 file changed, 2 insertions(+), 2 deletions(-)
>>
>> diff --git a/arch/powerpc/kexec/core.c b/arch/powerpc/kexec/core.c
>> index cf84bfe9e27e..c2cbfcf81cea 100644
>> --- a/arch/powerpc/kexec/core.c
>> +++ b/arch/powerpc/kexec/core.c
>> @@ -136,7 +136,7 @@ void __init reserve_crashkernel(void)
>>    #ifdef CONFIG_PPC64
>>    		/*
>>    		 * On the LPAR platform place the crash kernel to mid of
>> -		 * RMA size (512MB or more) to ensure the crash kernel
>> +		 * RMA size (max. of 512MB) to ensure the crash kernel
>>    		 * gets enough space to place itself and some stack to be
>>    		 * in the first segment. At the same time normal kernel
>>    		 * also get enough space to allocate memory for essential
>> @@ -144,7 +144,7 @@ void __init reserve_crashkernel(void)
>>    		 * kernel starts at 128MB offset on other platforms.
>>    		 */
>>    		if (firmware_has_feature(FW_FEATURE_LPAR))
>> -			crashk_res.start = ppc64_rma_size / 2;
>> +			crashk_res.start = min(0x20000000ULL, (ppc64_rma_size / 2));
> 
> Use SZ_512M instead of open coding.
> 
> Remove the ( ) around ppc64_rma_size / 2

Thanks for the review. Posted v2 with updated changelog and
the above addressed..

- Hari
diff mbox series

Patch

diff --git a/arch/powerpc/kexec/core.c b/arch/powerpc/kexec/core.c
index cf84bfe9e27e..c2cbfcf81cea 100644
--- a/arch/powerpc/kexec/core.c
+++ b/arch/powerpc/kexec/core.c
@@ -136,7 +136,7 @@  void __init reserve_crashkernel(void)
 #ifdef CONFIG_PPC64
 		/*
 		 * On the LPAR platform place the crash kernel to mid of
-		 * RMA size (512MB or more) to ensure the crash kernel
+		 * RMA size (max. of 512MB) to ensure the crash kernel
 		 * gets enough space to place itself and some stack to be
 		 * in the first segment. At the same time normal kernel
 		 * also get enough space to allocate memory for essential
@@ -144,7 +144,7 @@  void __init reserve_crashkernel(void)
 		 * kernel starts at 128MB offset on other platforms.
 		 */
 		if (firmware_has_feature(FW_FEATURE_LPAR))
-			crashk_res.start = ppc64_rma_size / 2;
+			crashk_res.start = min(0x20000000ULL, (ppc64_rma_size / 2));
 		else
 			crashk_res.start = min(0x8000000ULL, (ppc64_rma_size / 2));
 #else