diff mbox

Allow memblock steal operations to remove memory from anywhere

Message ID 20120812105708.GD18957@n2100.arm.linux.org.uk (mailing list archive)
State New, archived
Headers show

Commit Message

Russell King - ARM Linux Aug. 12, 2012, 10:57 a.m. UTC
Found this with the cubox, which wants to obtain large blocks of
RAM for the GPU and VPU devices at boot time.  I don't believe
any other platforms care where the memory comes from, so I think
this is safe.

However, OMAP and iMX folk should check this patch - thanks.

8<===
From: Russell King <rmk+kernel@arm.linux.org.uk>
Subject: ARM: Allow arm_memblock_steal() to remove memory from any RAM region

Allow arm_memblock_steal() to remove memory from any RAM region,
including highmem areas.  This allows memory to be stolen from the
very top of declared memory, including highmem areas, rather than
our precious lowmem.

Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
---
 arch/arm/mm/init.c |    2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)

Comments

Sascha Hauer Aug. 12, 2012, 12:07 p.m. UTC | #1
On Sun, Aug 12, 2012 at 11:57:08AM +0100, Russell King - ARM Linux wrote:
> Found this with the cubox, which wants to obtain large blocks of
> RAM for the GPU and VPU devices at boot time.  I don't believe
> any other platforms care where the memory comes from, so I think
> this is safe.
> 
> However, OMAP and iMX folk should check this patch - thanks.
> 
> 8<===
> From: Russell King <rmk+kernel@arm.linux.org.uk>
> Subject: ARM: Allow arm_memblock_steal() to remove memory from any RAM region
> 
> Allow arm_memblock_steal() to remove memory from any RAM region,
> including highmem areas.  This allows memory to be stolen from the
> very top of declared memory, including highmem areas, rather than
> our precious lowmem.
> 
> Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>

There shouldn't be any problems with this on i.MX.

Acked-by: Sascha Hauer <s.hauer@pengutronix.de>


> ---
>  arch/arm/mm/init.c |    2 +-
>  1 files changed, 1 insertions(+), 1 deletions(-)
> 
> diff --git a/arch/arm/mm/init.c b/arch/arm/mm/init.c
> index f54d592..04632f3 100644
> --- a/arch/arm/mm/init.c
> +++ b/arch/arm/mm/init.c
> @@ -324,7 +324,7 @@ phys_addr_t __init arm_memblock_steal(phys_addr_t size, phys_addr_t align)
>  
>  	BUG_ON(!arm_memblock_steal_permitted);
>  
> -	phys = memblock_alloc(size, align);
> +	phys = memblock_alloc_base(size, align, MEMBLOCK_ALLOC_ANYWHERE);
>  	memblock_free(phys, size);
>  	memblock_remove(phys, size);
>  
>
Santosh Shilimkar Aug. 12, 2012, 12:46 p.m. UTC | #2
On Sun, Aug 12, 2012 at 4:27 PM, Russell King - ARM Linux
<linux@arm.linux.org.uk> wrote:
> Found this with the cubox, which wants to obtain large blocks of
> RAM for the GPU and VPU devices at boot time.  I don't believe
> any other platforms care where the memory comes from, so I think
> this is safe.
>
Agree.

> However, OMAP and iMX folk should check this patch - thanks.
>
Works for OMAP without any issues.

Acked-by: Santosh Shilimkar <santosh.shilimkar@ti.com>

> 8<===
> From: Russell King <rmk+kernel@arm.linux.org.uk>
> Subject: ARM: Allow arm_memblock_steal() to remove memory from any RAM region
>
> Allow arm_memblock_steal() to remove memory from any RAM region,
> including highmem areas.  This allows memory to be stolen from the
> very top of declared memory, including highmem areas, rather than
> our precious lowmem.
>
> Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
> ---
>  arch/arm/mm/init.c |    2 +-
>  1 files changed, 1 insertions(+), 1 deletions(-)
>
> diff --git a/arch/arm/mm/init.c b/arch/arm/mm/init.c
> index f54d592..04632f3 100644
> --- a/arch/arm/mm/init.c
> +++ b/arch/arm/mm/init.c
> @@ -324,7 +324,7 @@ phys_addr_t __init arm_memblock_steal(phys_addr_t size, phys_addr_t align)
>
>         BUG_ON(!arm_memblock_steal_permitted);
>
> -       phys = memblock_alloc(size, align);
> +       phys = memblock_alloc_base(size, align, MEMBLOCK_ALLOC_ANYWHERE);
>         memblock_free(phys, size);
>         memblock_remove(phys, size);
>
> --
> To unsubscribe from this list: send the line "unsubscribe linux-omap" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html
diff mbox

Patch

diff --git a/arch/arm/mm/init.c b/arch/arm/mm/init.c
index f54d592..04632f3 100644
--- a/arch/arm/mm/init.c
+++ b/arch/arm/mm/init.c
@@ -324,7 +324,7 @@  phys_addr_t __init arm_memblock_steal(phys_addr_t size, phys_addr_t align)
 
 	BUG_ON(!arm_memblock_steal_permitted);
 
-	phys = memblock_alloc(size, align);
+	phys = memblock_alloc_base(size, align, MEMBLOCK_ALLOC_ANYWHERE);
 	memblock_free(phys, size);
 	memblock_remove(phys, size);