linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH] arm: Update memblock limit after mapping lowmem
@ 2015-06-04 19:15 Laura Abbott
  2015-06-11 13:07 ` Mark Rutland
  0 siblings, 1 reply; 4+ messages in thread
From: Laura Abbott @ 2015-06-04 19:15 UTC (permalink / raw)
  To: Russell King, Mark Rutland, Arnd Bergmann, Nicolas Pitre, Stefan Agner
  Cc: Laura Abbott, Catalin Marinas, Will Deacon, linux-arm-kernel,
	linux-kernel, Hans de Goede


The memblock limit is currently used in find_limits
to find the bounds for ZONE_NORMAL. The memblock
limit may need to be rounded down a PMD size to ensure
allocations are fully mapped though. This has the side
effect of reducing the amount of memory in ZONE_NORMAL.
Once all lowmem is mapped, it's safe to change the memblock
limit back to include the unaligned section. Adjust the
memblock limit after lowmem mapping is complete.

Before:
 # cat /proc/zoneinfo | grep managed
        managed  62907
        managed  424

After:
 # cat /proc/zoneinfo | grep managed
        managed  63331

Signed-off-by: Laura Abbott <labbott@fedoraproject.org>
---
This is a replacement for
'arm: Don't use memblock limit for the lowmem bound' which
doesn't actually work on NOMMU systems.
---
 arch/arm/mm/mmu.c | 1 +
 1 file changed, 1 insertion(+)

diff --git a/arch/arm/mm/mmu.c b/arch/arm/mm/mmu.c
index 7186382..904d153 100644
--- a/arch/arm/mm/mmu.c
+++ b/arch/arm/mm/mmu.c
@@ -1519,6 +1519,7 @@ void __init paging_init(const struct machine_desc *mdesc)
 	build_mem_type_table();
 	prepare_page_table();
 	map_lowmem();
+	memblock_set_current_limit(arm_lowmem_limit);
 	dma_contiguous_remap();
 	devicemaps_init(mdesc);
 	kmap_init();
-- 
2.4.1


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

* Re: [PATCH] arm: Update memblock limit after mapping lowmem
  2015-06-04 19:15 [PATCH] arm: Update memblock limit after mapping lowmem Laura Abbott
@ 2015-06-11 13:07 ` Mark Rutland
  2015-06-25  0:07   ` Laura Abbott
  0 siblings, 1 reply; 4+ messages in thread
From: Mark Rutland @ 2015-06-11 13:07 UTC (permalink / raw)
  To: Laura Abbott
  Cc: Russell King, Arnd Bergmann, Nicolas Pitre, Stefan Agner,
	Catalin Marinas, Will Deacon, linux-arm-kernel, linux-kernel,
	Hans de Goede

On Thu, Jun 04, 2015 at 08:15:49PM +0100, Laura Abbott wrote:
> 
> The memblock limit is currently used in find_limits
> to find the bounds for ZONE_NORMAL. The memblock
> limit may need to be rounded down a PMD size to ensure
> allocations are fully mapped though. This has the side
> effect of reducing the amount of memory in ZONE_NORMAL.
> Once all lowmem is mapped, it's safe to change the memblock
> limit back to include the unaligned section. Adjust the
> memblock limit after lowmem mapping is complete.
> 
> Before:
>  # cat /proc/zoneinfo | grep managed
>         managed  62907
>         managed  424
> 
> After:
>  # cat /proc/zoneinfo | grep managed
>         managed  63331
> 
> Signed-off-by: Laura Abbott <labbott@fedoraproject.org>
> ---
> This is a replacement for
> 'arm: Don't use memblock limit for the lowmem bound' which
> doesn't actually work on NOMMU systems.

Works for me on TC2, atop v4.1-rc7. Before this patch, with a few byes
carved out of the memory node I would see:

Memory: 1030380K/1046528K available (4832K kernel code, 154K rwdata, 1376K rodata, 260K init, 147K bss, 16148K reserved, 0K cma-reserved)

$ cat /proc/zoneinfo | grep managed
        managed  257660

With the patch I see:

Memory: 1032424K/1048572K available (4832K kernel code, 154K rwdata, 1376K rodata, 260K init, 147K bss, 16148K reserved, 0K cma-reserved)

$ cat /proc/zoneinfo | grep managed
        managed  258171

The patch itself looks good to me.

Reviewed-by: Mark Rutland <mark.rutland@arm.com>
Tested-by: Mark Rutland <mark.rutland@arm.com>

Thanks,
Mark.

> ---
>  arch/arm/mm/mmu.c | 1 +
>  1 file changed, 1 insertion(+)
> 
> diff --git a/arch/arm/mm/mmu.c b/arch/arm/mm/mmu.c
> index 7186382..904d153 100644
> --- a/arch/arm/mm/mmu.c
> +++ b/arch/arm/mm/mmu.c
> @@ -1519,6 +1519,7 @@ void __init paging_init(const struct machine_desc *mdesc)
>  	build_mem_type_table();
>  	prepare_page_table();
>  	map_lowmem();
> +	memblock_set_current_limit(arm_lowmem_limit);
>  	dma_contiguous_remap();
>  	devicemaps_init(mdesc);
>  	kmap_init();
> -- 
> 2.4.1
> 

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

* Re: [PATCH] arm: Update memblock limit after mapping lowmem
  2015-06-11 13:07 ` Mark Rutland
@ 2015-06-25  0:07   ` Laura Abbott
  2015-07-01  8:09     ` Javier Martinez Canillas
  0 siblings, 1 reply; 4+ messages in thread
From: Laura Abbott @ 2015-06-25  0:07 UTC (permalink / raw)
  To: Mark Rutland, Laura Abbott
  Cc: Russell King, Arnd Bergmann, Nicolas Pitre, Stefan Agner,
	Catalin Marinas, Will Deacon, linux-arm-kernel, linux-kernel,
	Hans de Goede

On 06/11/2015 06:07 AM, Mark Rutland wrote:
> On Thu, Jun 04, 2015 at 08:15:49PM +0100, Laura Abbott wrote:
>>
>> The memblock limit is currently used in find_limits
>> to find the bounds for ZONE_NORMAL. The memblock
>> limit may need to be rounded down a PMD size to ensure
>> allocations are fully mapped though. This has the side
>> effect of reducing the amount of memory in ZONE_NORMAL.
>> Once all lowmem is mapped, it's safe to change the memblock
>> limit back to include the unaligned section. Adjust the
>> memblock limit after lowmem mapping is complete.
>>
>> Before:
>>   # cat /proc/zoneinfo | grep managed
>>          managed  62907
>>          managed  424
>>
>> After:
>>   # cat /proc/zoneinfo | grep managed
>>          managed  63331
>>
>> Signed-off-by: Laura Abbott <labbott@fedoraproject.org>
>> ---
>> This is a replacement for
>> 'arm: Don't use memblock limit for the lowmem bound' which
>> doesn't actually work on NOMMU systems.
>
> Works for me on TC2, atop v4.1-rc7. Before this patch, with a few byes
> carved out of the memory node I would see:
>
> Memory: 1030380K/1046528K available (4832K kernel code, 154K rwdata, 1376K rodata, 260K init, 147K bss, 16148K reserved, 0K cma-reserved)
>
> $ cat /proc/zoneinfo | grep managed
>          managed  257660
>
> With the patch I see:
>
> Memory: 1032424K/1048572K available (4832K kernel code, 154K rwdata, 1376K rodata, 260K init, 147K bss, 16148K reserved, 0K cma-reserved)
>
> $ cat /proc/zoneinfo | grep managed
>          managed  258171
>
> The patch itself looks good to me.
>
> Reviewed-by: Mark Rutland <mark.rutland@arm.com>
> Tested-by: Mark Rutland <mark.rutland@arm.com>
>
> Thanks,
> Mark.
>

FYI, I put this in the patch tracker. I was on vacation when the Reviewed-by/Tested-by
came in so I'm only getting to it now.

Thanks,
Laura


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

* Re: [PATCH] arm: Update memblock limit after mapping lowmem
  2015-06-25  0:07   ` Laura Abbott
@ 2015-07-01  8:09     ` Javier Martinez Canillas
  0 siblings, 0 replies; 4+ messages in thread
From: Javier Martinez Canillas @ 2015-07-01  8:09 UTC (permalink / raw)
  To: Laura Abbott
  Cc: Mark Rutland, Laura Abbott, Russell King, Arnd Bergmann,
	Nicolas Pitre, Catalin Marinas, Will Deacon, linux-kernel,
	Stefan Agner, Hans de Goede, linux-arm-kernel

Hello Laura,

On Thu, Jun 25, 2015 at 2:07 AM, Laura Abbott <labbott@redhat.com> wrote:
> On 06/11/2015 06:07 AM, Mark Rutland wrote:
>>
>> On Thu, Jun 04, 2015 at 08:15:49PM +0100, Laura Abbott wrote:
>>>
>>>
>>> The memblock limit is currently used in find_limits
>>> to find the bounds for ZONE_NORMAL. The memblock
>>> limit may need to be rounded down a PMD size to ensure
>>> allocations are fully mapped though. This has the side
>>> effect of reducing the amount of memory in ZONE_NORMAL.
>>> Once all lowmem is mapped, it's safe to change the memblock
>>> limit back to include the unaligned section. Adjust the
>>> memblock limit after lowmem mapping is complete.
>>>
>>> Before:
>>>   # cat /proc/zoneinfo | grep managed
>>>          managed  62907
>>>          managed  424
>>>
>>> After:
>>>   # cat /proc/zoneinfo | grep managed
>>>          managed  63331
>>>
>>> Signed-off-by: Laura Abbott <labbott@fedoraproject.org>
>>> ---
>>> This is a replacement for
>>> 'arm: Don't use memblock limit for the lowmem bound' which
>>> doesn't actually work on NOMMU systems.
>>
>>
>> Works for me on TC2, atop v4.1-rc7. Before this patch, with a few byes
>> carved out of the memory node I would see:
>>
>> Memory: 1030380K/1046528K available (4832K kernel code, 154K rwdata, 1376K
>> rodata, 260K init, 147K bss, 16148K reserved, 0K cma-reserved)
>>
>> $ cat /proc/zoneinfo | grep managed
>>          managed  257660
>>
>> With the patch I see:
>>
>> Memory: 1032424K/1048572K available (4832K kernel code, 154K rwdata, 1376K
>> rodata, 260K init, 147K bss, 16148K reserved, 0K cma-reserved)
>>
>> $ cat /proc/zoneinfo | grep managed
>>          managed  258171
>>
>> The patch itself looks good to me.
>>
>> Reviewed-by: Mark Rutland <mark.rutland@arm.com>
>> Tested-by: Mark Rutland <mark.rutland@arm.com>
>>
>> Thanks,
>> Mark.
>>
>
> FYI, I put this in the patch tracker. I was on vacation when the
> Reviewed-by/Tested-by
> came in so I'm only getting to it now.
>

Maybe is a little late but just for reference, this patch fixes a boot
hang that was reported [0] for the Exynos Chromebooks that was in
v4.1.

So on an Exynos5420 Peach Pit Chromebook:

Tested-by: Javier Martinez Canillas <javier@dowhile0.org>

The patch also looks good to me:

Reviewed-by: Javier Martinez Canillas <javier@dowhile0.org>

> Thanks,
> Laura
>

Best regards,
Javier

[0]: http://archive.arm.linux.org.uk/lurker/message/20150630.100102.22c9c1d9.en.html

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

end of thread, other threads:[~2015-07-01  8:09 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2015-06-04 19:15 [PATCH] arm: Update memblock limit after mapping lowmem Laura Abbott
2015-06-11 13:07 ` Mark Rutland
2015-06-25  0:07   ` Laura Abbott
2015-07-01  8:09     ` Javier Martinez Canillas

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).