kexec.lists.infradead.org archive mirror
 help / color / mirror / Atom feed
* [PATCH] arm64: kdump: Do not allocate crash low memory if not needed
@ 2022-05-11  3:20 Zhen Lei
  2022-05-11  9:06 ` Baoquan He
  2022-05-16 19:06 ` Catalin Marinas
  0 siblings, 2 replies; 5+ messages in thread
From: Zhen Lei @ 2022-05-11  3:20 UTC (permalink / raw)
  To: kexec

When "crashkernel=X,high" is specified, the specified "crashkernel=Y,low"
memory is not required in the following corner cases:
1. If both CONFIG_ZONE_DMA and CONFIG_ZONE_DMA32 are disabled, it means
   that the devices can access any memory.
2. If the system memory is small, the crash high memory may be allocated
   from the DMA zones. If that happens, there's no need to allocate
   another crash low memory because there's already one.

Add condition '(crash_base >= CRASH_ADDR_LOW_MAX)' to determine whether
the 'high' memory is allocated above DMA zones. Note: when both
CONFIG_ZONE_DMA and CONFIG_ZONE_DMA32 are disabled, the entire physical
memory is DMA accessible, CRASH_ADDR_LOW_MAX equals 'PHYS_MASK + 1'.

Signed-off-by: Zhen Lei <thunder.leizhen@huawei.com>
---
 Documentation/admin-guide/kernel-parameters.txt | 5 +++--
 arch/arm64/mm/init.c                            | 3 ++-
 2 files changed, 5 insertions(+), 3 deletions(-)

diff --git a/Documentation/admin-guide/kernel-parameters.txt b/Documentation/admin-guide/kernel-parameters.txt
index f6ff55840751a78..1b543c3109f4851 100644
--- a/Documentation/admin-guide/kernel-parameters.txt
+++ b/Documentation/admin-guide/kernel-parameters.txt
@@ -823,7 +823,7 @@
 			low memory is needed to make sure DMA buffers for 32-bit
 			devices won't run out. Kernel would try to allocate
 			at least 256M below 4G automatically.
-			This one let user to specify own low range under 4G
+			This one lets the user specify own low range under 4G
 			for second kernel instead.
 			0: to disable low allocation.
 			It will be ignored when crashkernel=X,high is not used
@@ -832,7 +832,8 @@
 			[KNL, ARM64] range in low memory.
 			This one lets the user specify a low range in the
 			DMA zone for the crash dump kernel.
-			It will be ignored when crashkernel=X,high is not used.
+			It will be ignored when crashkernel=X,high is not used
+			or memory reserved is located in the DMA zones.
 
 	cryptomgr.notests
 			[KNL] Disable crypto self-tests
diff --git a/arch/arm64/mm/init.c b/arch/arm64/mm/init.c
index 18ba66c90991ea0..ac510fb6a2c0189 100644
--- a/arch/arm64/mm/init.c
+++ b/arch/arm64/mm/init.c
@@ -170,7 +170,8 @@ static void __init reserve_crashkernel(void)
 		return;
 	}
 
-	if (crash_low_size && reserve_crashkernel_low(crash_low_size)) {
+	if ((crash_base >= CRASH_ADDR_LOW_MAX) &&
+	     crash_low_size && reserve_crashkernel_low(crash_low_size)) {
 		memblock_phys_free(crash_base, crash_size);
 		return;
 	}
-- 
2.25.1



^ permalink raw reply related	[flat|nested] 5+ messages in thread

* [PATCH] arm64: kdump: Do not allocate crash low memory if not needed
  2022-05-11  3:20 [PATCH] arm64: kdump: Do not allocate crash low memory if not needed Zhen Lei
@ 2022-05-11  9:06 ` Baoquan He
  2022-05-11  9:50   ` Leizhen
  2022-05-16 19:06 ` Catalin Marinas
  1 sibling, 1 reply; 5+ messages in thread
From: Baoquan He @ 2022-05-11  9:06 UTC (permalink / raw)
  To: kexec

On 05/11/22 at 11:20am, Zhen Lei wrote:
> When "crashkernel=X,high" is specified, the specified "crashkernel=Y,low"
> memory is not required in the following corner cases:
> 1. If both CONFIG_ZONE_DMA and CONFIG_ZONE_DMA32 are disabled, it means
>    that the devices can access any memory.
> 2. If the system memory is small, the crash high memory may be allocated
>    from the DMA zones. If that happens, there's no need to allocate
>    another crash low memory because there's already one.
> 
> Add condition '(crash_base >= CRASH_ADDR_LOW_MAX)' to determine whether
> the 'high' memory is allocated above DMA zones. Note: when both
> CONFIG_ZONE_DMA and CONFIG_ZONE_DMA32 are disabled, the entire physical
> memory is DMA accessible, CRASH_ADDR_LOW_MAX equals 'PHYS_MASK + 1'.
> 
> Signed-off-by: Zhen Lei <thunder.leizhen@huawei.com>
> ---
>  Documentation/admin-guide/kernel-parameters.txt | 5 +++--
>  arch/arm64/mm/init.c                            | 3 ++-
>  2 files changed, 5 insertions(+), 3 deletions(-)
> 
> diff --git a/Documentation/admin-guide/kernel-parameters.txt b/Documentation/admin-guide/kernel-parameters.txt
> index f6ff55840751a78..1b543c3109f4851 100644
> --- a/Documentation/admin-guide/kernel-parameters.txt
> +++ b/Documentation/admin-guide/kernel-parameters.txt
> @@ -823,7 +823,7 @@
>  			low memory is needed to make sure DMA buffers for 32-bit
>  			devices won't run out. Kernel would try to allocate
>  			at least 256M below 4G automatically.
> -			This one let user to specify own low range under 4G
> +			This one lets the user specify own low range under 4G
                        ~ This one let users specify own low range ...

Other than this nitpick, LGTM

Acked-by: Baoquan He <bhe@redhat.com>

>  			for second kernel instead.
>  			0: to disable low allocation.
>  			It will be ignored when crashkernel=X,high is not used
> @@ -832,7 +832,8 @@
>  			[KNL, ARM64] range in low memory.
>  			This one lets the user specify a low range in the
>  			DMA zone for the crash dump kernel.
> -			It will be ignored when crashkernel=X,high is not used.
> +			It will be ignored when crashkernel=X,high is not used
> +			or memory reserved is located in the DMA zones.
>  
>  	cryptomgr.notests
>  			[KNL] Disable crypto self-tests
> diff --git a/arch/arm64/mm/init.c b/arch/arm64/mm/init.c
> index 18ba66c90991ea0..ac510fb6a2c0189 100644
> --- a/arch/arm64/mm/init.c
> +++ b/arch/arm64/mm/init.c
> @@ -170,7 +170,8 @@ static void __init reserve_crashkernel(void)
>  		return;
>  	}
>  
> -	if (crash_low_size && reserve_crashkernel_low(crash_low_size)) {
> +	if ((crash_base >= CRASH_ADDR_LOW_MAX) &&
> +	     crash_low_size && reserve_crashkernel_low(crash_low_size)) {
>  		memblock_phys_free(crash_base, crash_size);
>  		return;
>  	}
> -- 
> 2.25.1
> 



^ permalink raw reply	[flat|nested] 5+ messages in thread

* [PATCH] arm64: kdump: Do not allocate crash low memory if not needed
  2022-05-11  9:06 ` Baoquan He
@ 2022-05-11  9:50   ` Leizhen
  2022-05-11 10:06     ` Baoquan He
  0 siblings, 1 reply; 5+ messages in thread
From: Leizhen @ 2022-05-11  9:50 UTC (permalink / raw)
  To: kexec



On 2022/5/11 17:06, Baoquan He wrote:
> On 05/11/22 at 11:20am, Zhen Lei wrote:
>> When "crashkernel=X,high" is specified, the specified "crashkernel=Y,low"
>> memory is not required in the following corner cases:
>> 1. If both CONFIG_ZONE_DMA and CONFIG_ZONE_DMA32 are disabled, it means
>>    that the devices can access any memory.
>> 2. If the system memory is small, the crash high memory may be allocated
>>    from the DMA zones. If that happens, there's no need to allocate
>>    another crash low memory because there's already one.
>>
>> Add condition '(crash_base >= CRASH_ADDR_LOW_MAX)' to determine whether
>> the 'high' memory is allocated above DMA zones. Note: when both
>> CONFIG_ZONE_DMA and CONFIG_ZONE_DMA32 are disabled, the entire physical
>> memory is DMA accessible, CRASH_ADDR_LOW_MAX equals 'PHYS_MASK + 1'.
>>
>> Signed-off-by: Zhen Lei <thunder.leizhen@huawei.com>
>> ---
>>  Documentation/admin-guide/kernel-parameters.txt | 5 +++--
>>  arch/arm64/mm/init.c                            | 3 ++-
>>  2 files changed, 5 insertions(+), 3 deletions(-)
>>
>> diff --git a/Documentation/admin-guide/kernel-parameters.txt b/Documentation/admin-guide/kernel-parameters.txt
>> index f6ff55840751a78..1b543c3109f4851 100644
>> --- a/Documentation/admin-guide/kernel-parameters.txt
>> +++ b/Documentation/admin-guide/kernel-parameters.txt
>> @@ -823,7 +823,7 @@
>>  			low memory is needed to make sure DMA buffers for 32-bit
>>  			devices won't run out. Kernel would try to allocate
>>  			at least 256M below 4G automatically.
>> -			This one let user to specify own low range under 4G
>> +			This one lets the user specify own low range under 4G
>                         ~ This one let users specify own low range ...
> 
> Other than this nitpick, LGTM

This is Catalin's response a few days ago:
Slightly more correct is "This one lets the user specify..."

I didn't googled "This one lets", but I googled "It lets". I think he wrote it right.

Both "the user" and "users" seem to be right.


> 
> Acked-by: Baoquan He <bhe@redhat.com>
> 
>>  			for second kernel instead.
>>  			0: to disable low allocation.
>>  			It will be ignored when crashkernel=X,high is not used
>> @@ -832,7 +832,8 @@
>>  			[KNL, ARM64] range in low memory.
>>  			This one lets the user specify a low range in the
>>  			DMA zone for the crash dump kernel.
>> -			It will be ignored when crashkernel=X,high is not used.
>> +			It will be ignored when crashkernel=X,high is not used
>> +			or memory reserved is located in the DMA zones.
>>  
>>  	cryptomgr.notests
>>  			[KNL] Disable crypto self-tests
>> diff --git a/arch/arm64/mm/init.c b/arch/arm64/mm/init.c
>> index 18ba66c90991ea0..ac510fb6a2c0189 100644
>> --- a/arch/arm64/mm/init.c
>> +++ b/arch/arm64/mm/init.c
>> @@ -170,7 +170,8 @@ static void __init reserve_crashkernel(void)
>>  		return;
>>  	}
>>  
>> -	if (crash_low_size && reserve_crashkernel_low(crash_low_size)) {
>> +	if ((crash_base >= CRASH_ADDR_LOW_MAX) &&
>> +	     crash_low_size && reserve_crashkernel_low(crash_low_size)) {
>>  		memblock_phys_free(crash_base, crash_size);
>>  		return;
>>  	}
>> -- 
>> 2.25.1
>>
> 
> .
> 

-- 
Regards,
  Zhen Lei


^ permalink raw reply	[flat|nested] 5+ messages in thread

* [PATCH] arm64: kdump: Do not allocate crash low memory if not needed
  2022-05-11  9:50   ` Leizhen
@ 2022-05-11 10:06     ` Baoquan He
  0 siblings, 0 replies; 5+ messages in thread
From: Baoquan He @ 2022-05-11 10:06 UTC (permalink / raw)
  To: kexec

On 05/11/22 at 05:50pm, Leizhen (ThunderTown) wrote:
> 
> 
> On 2022/5/11 17:06, Baoquan He wrote:
> > On 05/11/22 at 11:20am, Zhen Lei wrote:
> >> When "crashkernel=X,high" is specified, the specified "crashkernel=Y,low"
> >> memory is not required in the following corner cases:
> >> 1. If both CONFIG_ZONE_DMA and CONFIG_ZONE_DMA32 are disabled, it means
> >>    that the devices can access any memory.
> >> 2. If the system memory is small, the crash high memory may be allocated
> >>    from the DMA zones. If that happens, there's no need to allocate
> >>    another crash low memory because there's already one.
> >>
> >> Add condition '(crash_base >= CRASH_ADDR_LOW_MAX)' to determine whether
> >> the 'high' memory is allocated above DMA zones. Note: when both
> >> CONFIG_ZONE_DMA and CONFIG_ZONE_DMA32 are disabled, the entire physical
> >> memory is DMA accessible, CRASH_ADDR_LOW_MAX equals 'PHYS_MASK + 1'.
> >>
> >> Signed-off-by: Zhen Lei <thunder.leizhen@huawei.com>
> >> ---
> >>  Documentation/admin-guide/kernel-parameters.txt | 5 +++--
> >>  arch/arm64/mm/init.c                            | 3 ++-
> >>  2 files changed, 5 insertions(+), 3 deletions(-)
> >>
> >> diff --git a/Documentation/admin-guide/kernel-parameters.txt b/Documentation/admin-guide/kernel-parameters.txt
> >> index f6ff55840751a78..1b543c3109f4851 100644
> >> --- a/Documentation/admin-guide/kernel-parameters.txt
> >> +++ b/Documentation/admin-guide/kernel-parameters.txt
> >> @@ -823,7 +823,7 @@
> >>  			low memory is needed to make sure DMA buffers for 32-bit
> >>  			devices won't run out. Kernel would try to allocate
> >>  			at least 256M below 4G automatically.
> >> -			This one let user to specify own low range under 4G
> >> +			This one lets the user specify own low range under 4G
> >                         ~ This one let users specify own low range ...
> > 
> > Other than this nitpick, LGTM
> 
> This is Catalin's response a few days ago:
> Slightly more correct is "This one lets the user specify..."
> 
> I didn't googled "This one lets", but I googled "It lets". I think he wrote it right.
> 
> Both "the user" and "users" seem to be right.

Yeah, I forgot the 'this one lets' part, and I am fine too with the 'the
use'if it's right. So please ignore the comment.

> 
> 
> > 
> > Acked-by: Baoquan He <bhe@redhat.com>
> > 
> >>  			for second kernel instead.
> >>  			0: to disable low allocation.
> >>  			It will be ignored when crashkernel=X,high is not used
> >> @@ -832,7 +832,8 @@
> >>  			[KNL, ARM64] range in low memory.
> >>  			This one lets the user specify a low range in the
> >>  			DMA zone for the crash dump kernel.
> >> -			It will be ignored when crashkernel=X,high is not used.
> >> +			It will be ignored when crashkernel=X,high is not used
> >> +			or memory reserved is located in the DMA zones.
> >>  
> >>  	cryptomgr.notests
> >>  			[KNL] Disable crypto self-tests
> >> diff --git a/arch/arm64/mm/init.c b/arch/arm64/mm/init.c
> >> index 18ba66c90991ea0..ac510fb6a2c0189 100644
> >> --- a/arch/arm64/mm/init.c
> >> +++ b/arch/arm64/mm/init.c
> >> @@ -170,7 +170,8 @@ static void __init reserve_crashkernel(void)
> >>  		return;
> >>  	}
> >>  
> >> -	if (crash_low_size && reserve_crashkernel_low(crash_low_size)) {
> >> +	if ((crash_base >= CRASH_ADDR_LOW_MAX) &&
> >> +	     crash_low_size && reserve_crashkernel_low(crash_low_size)) {
> >>  		memblock_phys_free(crash_base, crash_size);
> >>  		return;
> >>  	}
> >> -- 
> >> 2.25.1
> >>
> > 
> > .
> > 
> 
> -- 
> Regards,
>   Zhen Lei
> 



^ permalink raw reply	[flat|nested] 5+ messages in thread

* [PATCH] arm64: kdump: Do not allocate crash low memory if not needed
  2022-05-11  3:20 [PATCH] arm64: kdump: Do not allocate crash low memory if not needed Zhen Lei
  2022-05-11  9:06 ` Baoquan He
@ 2022-05-16 19:06 ` Catalin Marinas
  1 sibling, 0 replies; 5+ messages in thread
From: Catalin Marinas @ 2022-05-16 19:06 UTC (permalink / raw)
  To: kexec

On Wed, 11 May 2022 11:20:32 +0800, Zhen Lei wrote:
> When "crashkernel=X,high" is specified, the specified "crashkernel=Y,low"
> memory is not required in the following corner cases:
> 1. If both CONFIG_ZONE_DMA and CONFIG_ZONE_DMA32 are disabled, it means
>    that the devices can access any memory.
> 2. If the system memory is small, the crash high memory may be allocated
>    from the DMA zones. If that happens, there's no need to allocate
>    another crash low memory because there's already one.
> 
> [...]

Applied to arm64 (for-next/crashkernel), thanks!

[1/1] arm64: kdump: Do not allocate crash low memory if not needed
      https://git.kernel.org/arm64/c/8f0f104e2ab6

-- 
Catalin



^ permalink raw reply	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2022-05-16 19:06 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-05-11  3:20 [PATCH] arm64: kdump: Do not allocate crash low memory if not needed Zhen Lei
2022-05-11  9:06 ` Baoquan He
2022-05-11  9:50   ` Leizhen
2022-05-11 10:06     ` Baoquan He
2022-05-16 19:06 ` Catalin Marinas

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).