All of lore.kernel.org
 help / color / mirror / Atom feed
* [RFC] Free the reserved memblock when free cma pages
@ 2014-09-09  6:13 Wang, Yalin
  2014-09-10  8:18 ` Michal Hocko
                   ` (2 more replies)
  0 siblings, 3 replies; 12+ messages in thread
From: Wang, Yalin @ 2014-09-09  6:13 UTC (permalink / raw)
  To: 'mhocko@suse.cz', 'linux-mm@kvack.org',
	'akpm@linux-foundation.org',
	mm-commits, hughd, b.zolnierkie

This patch add memblock_free to also free the reserved memblock,
so that the cma pages are not marked as reserved memory in
/sys/kernel/debug/memblock/reserved debug file

Signed-off-by: Yalin Wang <yalin.wang@sonymobile.com>
---
 mm/cma.c | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/mm/cma.c b/mm/cma.c
index c17751c..f3ec756 100644
--- a/mm/cma.c
+++ b/mm/cma.c
@@ -114,6 +114,8 @@ static int __init cma_activate_area(struct cma *cma)
 				goto err;
 		}
 		init_cma_reserved_pageblock(pfn_to_page(base_pfn));
+		memblock_free(__pfn_to_phys(base_pfn),
+				pageblock_nr_pages * PAGE_SIZE);
 	} while (--i);
 
 	mutex_init(&cma->lock);
-- 
2.1.0

--
To unsubscribe, send a message with 'unsubscribe linux-mm' in
the body to majordomo@kvack.org.  For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a>

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

* Re: [RFC] Free the reserved memblock when free cma pages
  2014-09-09  6:13 [RFC] Free the reserved memblock when free cma pages Wang, Yalin
@ 2014-09-10  8:18 ` Michal Hocko
  2014-09-10  9:02   ` Wang, Yalin
  2014-09-12  9:35 ` Marek Szyprowski
  2014-09-15  5:21 ` Minchan Kim
  2 siblings, 1 reply; 12+ messages in thread
From: Michal Hocko @ 2014-09-10  8:18 UTC (permalink / raw)
  To: Wang, Yalin
  Cc: 'linux-mm@kvack.org', 'akpm@linux-foundation.org',
	mm-commits, hughd, b.zolnierkie

On Tue 09-09-14 14:13:58, Wang, Yalin wrote:
> This patch add memblock_free to also free the reserved memblock,
> so that the cma pages are not marked as reserved memory in
> /sys/kernel/debug/memblock/reserved debug file

Why and is this even correct? init_cma_reserved_pageblock seems to be
doing __ClearPageReserved on each page in the page block.

> Signed-off-by: Yalin Wang <yalin.wang@sonymobile.com>
> ---
>  mm/cma.c | 2 ++
>  1 file changed, 2 insertions(+)
> 
> diff --git a/mm/cma.c b/mm/cma.c
> index c17751c..f3ec756 100644
> --- a/mm/cma.c
> +++ b/mm/cma.c
> @@ -114,6 +114,8 @@ static int __init cma_activate_area(struct cma *cma)
>  				goto err;
>  		}
>  		init_cma_reserved_pageblock(pfn_to_page(base_pfn));
> +		memblock_free(__pfn_to_phys(base_pfn),
> +				pageblock_nr_pages * PAGE_SIZE);
>  	} while (--i);
>  
>  	mutex_init(&cma->lock);
> -- 
> 2.1.0

-- 
Michal Hocko
SUSE Labs

--
To unsubscribe, send a message with 'unsubscribe linux-mm' in
the body to majordomo@kvack.org.  For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a>

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

* RE: [RFC] Free the reserved memblock when free cma pages
  2014-09-10  8:18 ` Michal Hocko
@ 2014-09-10  9:02   ` Wang, Yalin
  0 siblings, 0 replies; 12+ messages in thread
From: Wang, Yalin @ 2014-09-10  9:02 UTC (permalink / raw)
  To: 'Michal Hocko'
  Cc: 'linux-mm@kvack.org', 'akpm@linux-foundation.org',
	mm-commits, hughd, b.zolnierkie

Hi 

Yeah, the __ClearPageReserved flag is cleared for each page,
But the memblock still mark these physical address as marked,
Then if you cat /sys/kernel/debug/memblock/reserved
You can still see these physical address are marked as reserved,
This is not correct,
This is because cma_activate_area function release the pages after
Boot_mem free, so we have to free the memblock by ourselves,

The same problem also reside for initrd reserved memory.

-----Original Message-----
From: Michal Hocko [mailto:mstsxfx@gmail.com] On Behalf Of Michal Hocko
Sent: Wednesday, September 10, 2014 4:18 PM
To: Wang, Yalin
Cc: 'linux-mm@kvack.org'; 'akpm@linux-foundation.org'; mm-commits@vger.kernel.org; hughd@google.com; b.zolnierkie@samsung.com
Subject: Re: [RFC] Free the reserved memblock when free cma pages

On Tue 09-09-14 14:13:58, Wang, Yalin wrote:
> This patch add memblock_free to also free the reserved memblock, so 
> that the cma pages are not marked as reserved memory in 
> /sys/kernel/debug/memblock/reserved debug file

Why and is this even correct? init_cma_reserved_pageblock seems to be doing __ClearPageReserved on each page in the page block.

> Signed-off-by: Yalin Wang <yalin.wang@sonymobile.com>
> ---
>  mm/cma.c | 2 ++
>  1 file changed, 2 insertions(+)
> 
> diff --git a/mm/cma.c b/mm/cma.c
> index c17751c..f3ec756 100644
> --- a/mm/cma.c
> +++ b/mm/cma.c
> @@ -114,6 +114,8 @@ static int __init cma_activate_area(struct cma *cma)
>  				goto err;
>  		}
>  		init_cma_reserved_pageblock(pfn_to_page(base_pfn));
> +		memblock_free(__pfn_to_phys(base_pfn),
> +				pageblock_nr_pages * PAGE_SIZE);
>  	} while (--i);
>  
>  	mutex_init(&cma->lock);
> --
> 2.1.0

--
Michal Hocko
SUSE Labs

--
To unsubscribe, send a message with 'unsubscribe linux-mm' in
the body to majordomo@kvack.org.  For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a>

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

* Re: [RFC] Free the reserved memblock when free cma pages
  2014-09-09  6:13 [RFC] Free the reserved memblock when free cma pages Wang, Yalin
  2014-09-10  8:18 ` Michal Hocko
@ 2014-09-12  9:35 ` Marek Szyprowski
  2014-09-15  3:06   ` Joonsoo Kim
  2014-09-15  5:21 ` Minchan Kim
  2 siblings, 1 reply; 12+ messages in thread
From: Marek Szyprowski @ 2014-09-12  9:35 UTC (permalink / raw)
  To: Wang, Yalin, 'mhocko@suse.cz',
	'linux-mm@kvack.org', 'akpm@linux-foundation.org',
	mm-commits, hughd, b.zolnierkie

Hello,

On 2014-09-09 08:13, Wang, Yalin wrote:
> This patch add memblock_free to also free the reserved memblock,
> so that the cma pages are not marked as reserved memory in
> /sys/kernel/debug/memblock/reserved debug file
>
> Signed-off-by: Yalin Wang <yalin.wang@sonymobile.com>

Acked-by: Marek Szyprowski <m.szyprowski@samsung.com>

> ---
>   mm/cma.c | 2 ++
>   1 file changed, 2 insertions(+)
>
> diff --git a/mm/cma.c b/mm/cma.c
> index c17751c..f3ec756 100644
> --- a/mm/cma.c
> +++ b/mm/cma.c
> @@ -114,6 +114,8 @@ static int __init cma_activate_area(struct cma *cma)
>   				goto err;
>   		}
>   		init_cma_reserved_pageblock(pfn_to_page(base_pfn));
> +		memblock_free(__pfn_to_phys(base_pfn),
> +				pageblock_nr_pages * PAGE_SIZE);
>   	} while (--i);
>   
>   	mutex_init(&cma->lock);

Right. Thanks for fixing this issue. When cma_activate_area() is called 
noone
should use memblock to allocate memory, but it is ok to call memblock_free()
to update memblock statistics, so users won't be confused by cma entries in
/sys/kernel/debug/memblock/reserved file.

Best regards
-- 
Marek Szyprowski, PhD
Samsung R&D Institute Poland

--
To unsubscribe, send a message with 'unsubscribe linux-mm' in
the body to majordomo@kvack.org.  For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a>

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

* Re: [RFC] Free the reserved memblock when free cma pages
  2014-09-12  9:35 ` Marek Szyprowski
@ 2014-09-15  3:06   ` Joonsoo Kim
  0 siblings, 0 replies; 12+ messages in thread
From: Joonsoo Kim @ 2014-09-15  3:06 UTC (permalink / raw)
  To: Marek Szyprowski
  Cc: Wang, Yalin, 'mhocko@suse.cz',
	'linux-mm@kvack.org', 'akpm@linux-foundation.org',
	mm-commits, hughd, b.zolnierkie

On Fri, Sep 12, 2014 at 11:35:49AM +0200, Marek Szyprowski wrote:
> Hello,
> 
> On 2014-09-09 08:13, Wang, Yalin wrote:
> >This patch add memblock_free to also free the reserved memblock,
> >so that the cma pages are not marked as reserved memory in
> >/sys/kernel/debug/memblock/reserved debug file
> >
> >Signed-off-by: Yalin Wang <yalin.wang@sonymobile.com>
> 
> Acked-by: Marek Szyprowski <m.szyprowski@samsung.com>
> 
> >---
> >  mm/cma.c | 2 ++
> >  1 file changed, 2 insertions(+)
> >
> >diff --git a/mm/cma.c b/mm/cma.c
> >index c17751c..f3ec756 100644
> >--- a/mm/cma.c
> >+++ b/mm/cma.c
> >@@ -114,6 +114,8 @@ static int __init cma_activate_area(struct cma *cma)
> >  				goto err;
> >  		}
> >  		init_cma_reserved_pageblock(pfn_to_page(base_pfn));
> >+		memblock_free(__pfn_to_phys(base_pfn),
> >+				pageblock_nr_pages * PAGE_SIZE);
> >  	} while (--i);
> >  	mutex_init(&cma->lock);
> 
> Right. Thanks for fixing this issue. When cma_activate_area() is
> called noone
> should use memblock to allocate memory, but it is ok to call memblock_free()
> to update memblock statistics, so users won't be confused by cma entries in
> /sys/kernel/debug/memblock/reserved file.

Maybe some comment on code would be very helpful.

Thanks.

--
To unsubscribe, send a message with 'unsubscribe linux-mm' in
the body to majordomo@kvack.org.  For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a>

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

* Re: [RFC] Free the reserved memblock when free cma pages
  2014-09-09  6:13 [RFC] Free the reserved memblock when free cma pages Wang, Yalin
  2014-09-10  8:18 ` Michal Hocko
  2014-09-12  9:35 ` Marek Szyprowski
@ 2014-09-15  5:21 ` Minchan Kim
  2014-09-15  5:36   ` Wang, Yalin
  2 siblings, 1 reply; 12+ messages in thread
From: Minchan Kim @ 2014-09-15  5:21 UTC (permalink / raw)
  To: Wang, Yalin
  Cc: 'mhocko@suse.cz', 'linux-mm@kvack.org',
	'akpm@linux-foundation.org',
	mm-commits, hughd, b.zolnierkie

Hello,

On Tue, Sep 09, 2014 at 02:13:58PM +0800, Wang, Yalin wrote:
> This patch add memblock_free to also free the reserved memblock,
> so that the cma pages are not marked as reserved memory in
> /sys/kernel/debug/memblock/reserved debug file
> 
> Signed-off-by: Yalin Wang <yalin.wang@sonymobile.com>
> ---
>  mm/cma.c | 2 ++
>  1 file changed, 2 insertions(+)
> 
> diff --git a/mm/cma.c b/mm/cma.c
> index c17751c..f3ec756 100644
> --- a/mm/cma.c
> +++ b/mm/cma.c
> @@ -114,6 +114,8 @@ static int __init cma_activate_area(struct cma *cma)
>  				goto err;
>  		}
>  		init_cma_reserved_pageblock(pfn_to_page(base_pfn));
> +		memblock_free(__pfn_to_phys(base_pfn),
> +				pageblock_nr_pages * PAGE_SIZE);

Nitpick:

Couldn't we add memblock_free into init_cma_reserved_pageblock?
Because it should be pair with ClearPageReserved, I think.

In addition, please add description on memory reserve part
in cma_declare_contiguous.

>  	} while (--i);
>  
>  	mutex_init(&cma->lock);
> -- 
> 2.1.0
> 
> --
> To unsubscribe, send a message with 'unsubscribe linux-mm' in
> the body to majordomo@kvack.org.  For more info on Linux MM,
> see: http://www.linux-mm.org/ .
> Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a>

-- 
Kind regards,
Minchan Kim

--
To unsubscribe, send a message with 'unsubscribe linux-mm' in
the body to majordomo@kvack.org.  For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a>

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

* RE: [RFC] Free the reserved memblock when free cma pages
  2014-09-15  5:21 ` Minchan Kim
@ 2014-09-15  5:36   ` Wang, Yalin
  2014-09-15  5:42     ` Minchan Kim
  0 siblings, 1 reply; 12+ messages in thread
From: Wang, Yalin @ 2014-09-15  5:36 UTC (permalink / raw)
  To: 'Minchan Kim'
  Cc: 'mhocko@suse.cz', 'linux-mm@kvack.org',
	'akpm@linux-foundation.org',
	mm-commits, hughd, b.zolnierkie

Hi Kim,

I think move memblock_free into init_cma_reserved_pageblock
Is not a good idea,
Because this will need call memblock_free for
Every page release,
Think that for a 4MB memory, need call memblock_free
1024 times , instead, we just call memblock_free one
Time for every pageblock_nr_pages pages .

I will add some descriptions in cma_declare_contiguous
For patch version 2 .

Thanks

-----Original Message-----
Hello,

On Tue, Sep 09, 2014 at 02:13:58PM +0800, Wang, Yalin wrote:
> This patch add memblock_free to also free the reserved memblock, so 
> that the cma pages are not marked as reserved memory in 
> /sys/kernel/debug/memblock/reserved debug file
> 
> Signed-off-by: Yalin Wang <yalin.wang@sonymobile.com>
> ---
>  mm/cma.c | 2 ++
>  1 file changed, 2 insertions(+)
> 
> diff --git a/mm/cma.c b/mm/cma.c
> index c17751c..f3ec756 100644
> --- a/mm/cma.c
> +++ b/mm/cma.c
> @@ -114,6 +114,8 @@ static int __init cma_activate_area(struct cma *cma)
>  				goto err;
>  		}
>  		init_cma_reserved_pageblock(pfn_to_page(base_pfn));
> +		memblock_free(__pfn_to_phys(base_pfn),
> +				pageblock_nr_pages * PAGE_SIZE);

Nitpick:

Couldn't we add memblock_free into init_cma_reserved_pageblock?
Because it should be pair with ClearPageReserved, I think.

In addition, please add description on memory reserve part in cma_declare_contiguous.

>  	} while (--i);
>  
>  	mutex_init(&cma->lock);
> --
> 2.1.0
> 
> --
> To unsubscribe, send a message with 'unsubscribe linux-mm' in the body 
> to majordomo@kvack.org.  For more info on Linux MM,
> see: http://www.linux-mm.org/ .
> Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a>

--
Kind regards,
Minchan Kim

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

* Re: [RFC] Free the reserved memblock when free cma pages
  2014-09-15  5:36   ` Wang, Yalin
@ 2014-09-15  5:42     ` Minchan Kim
  2014-09-15  5:46       ` Wang, Yalin
  2014-09-15  6:10       ` [RFC V2] " Wang, Yalin
  0 siblings, 2 replies; 12+ messages in thread
From: Minchan Kim @ 2014-09-15  5:42 UTC (permalink / raw)
  To: Wang, Yalin
  Cc: 'mhocko@suse.cz', 'linux-mm@kvack.org',
	'akpm@linux-foundation.org',
	mm-commits, hughd, b.zolnierkie

On Mon, Sep 15, 2014 at 01:36:13PM +0800, Wang, Yalin wrote:
> Hi Kim,
> 
> I think move memblock_free into init_cma_reserved_pageblock
> Is not a good idea,
> Because this will need call memblock_free for
> Every page release,
> Think that for a 4MB memory, need call memblock_free
> 1024 times , instead, we just call memblock_free one
> Time for every pageblock_nr_pages pages .

Why?

diff --git a/mm/page_alloc.c b/mm/page_alloc.c
index 1953a243836b..876b789378af 100644
--- a/mm/page_alloc.c
+++ b/mm/page_alloc.c
@@ -848,6 +848,9 @@ void __init init_cma_reserved_pageblock(struct page *page)
 	}
 
 	adjust_managed_page_count(page, pageblock_nr_pages);
+	memblock_free(page_to_phys(page),
+				pageblock_nr_pages * PAGE_SIZE);
+
 }
 #endif
 
> 
> I will add some descriptions in cma_declare_contiguous
> For patch version 2 .
> 
> Thanks
> 
> -----Original Message-----
> Hello,
> 
> On Tue, Sep 09, 2014 at 02:13:58PM +0800, Wang, Yalin wrote:
> > This patch add memblock_free to also free the reserved memblock, so 
> > that the cma pages are not marked as reserved memory in 
> > /sys/kernel/debug/memblock/reserved debug file
> > 
> > Signed-off-by: Yalin Wang <yalin.wang@sonymobile.com>
> > ---
> >  mm/cma.c | 2 ++
> >  1 file changed, 2 insertions(+)
> > 
> > diff --git a/mm/cma.c b/mm/cma.c
> > index c17751c..f3ec756 100644
> > --- a/mm/cma.c
> > +++ b/mm/cma.c
> > @@ -114,6 +114,8 @@ static int __init cma_activate_area(struct cma *cma)
> >  				goto err;
> >  		}
> >  		init_cma_reserved_pageblock(pfn_to_page(base_pfn));
> > +		memblock_free(__pfn_to_phys(base_pfn),
> > +				pageblock_nr_pages * PAGE_SIZE);
> 
> Nitpick:
> 
> Couldn't we add memblock_free into init_cma_reserved_pageblock?
> Because it should be pair with ClearPageReserved, I think.
> 
> In addition, please add description on memory reserve part in cma_declare_contiguous.
> 
> >  	} while (--i);
> >  
> >  	mutex_init(&cma->lock);
> > --
> > 2.1.0
> > 
> > --
> > To unsubscribe, send a message with 'unsubscribe linux-mm' in the body 
> > to majordomo@kvack.org.  For more info on Linux MM,
> > see: http://www.linux-mm.org/ .
> > Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a>
> 
> --
> Kind regards,
> Minchan Kim

-- 
Kind regards,
Minchan Kim

--
To unsubscribe, send a message with 'unsubscribe linux-mm' in
the body to majordomo@kvack.org.  For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a>

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

* RE: [RFC] Free the reserved memblock when free cma pages
  2014-09-15  5:42     ` Minchan Kim
@ 2014-09-15  5:46       ` Wang, Yalin
  2014-09-15  6:10       ` [RFC V2] " Wang, Yalin
  1 sibling, 0 replies; 12+ messages in thread
From: Wang, Yalin @ 2014-09-15  5:46 UTC (permalink / raw)
  To: 'Minchan Kim'
  Cc: 'mhocko@suse.cz', 'linux-mm@kvack.org',
	'akpm@linux-foundation.org',
	mm-commits, hughd, b.zolnierkie

Hi Kim,

Oh, my mistake,
I see your meaning,
I will resend a new patch.

Thanks for your advice.

-----Original Message-----
On Mon, Sep 15, 2014 at 01:36:13PM +0800, Wang, Yalin wrote:
> Hi Kim,
> 
> I think move memblock_free into init_cma_reserved_pageblock Is not a 
> good idea, Because this will need call memblock_free for Every page 
> release, Think that for a 4MB memory, need call memblock_free
> 1024 times , instead, we just call memblock_free one Time for every 
> pageblock_nr_pages pages .

Why?

diff --git a/mm/page_alloc.c b/mm/page_alloc.c index 1953a243836b..876b789378af 100644
--- a/mm/page_alloc.c
+++ b/mm/page_alloc.c
@@ -848,6 +848,9 @@ void __init init_cma_reserved_pageblock(struct page *page)
 	}
 
 	adjust_managed_page_count(page, pageblock_nr_pages);
+	memblock_free(page_to_phys(page),
+				pageblock_nr_pages * PAGE_SIZE);
+
 }
 #endif
 
> 
> I will add some descriptions in cma_declare_contiguous For patch 
> version 2 .
> 
> Thanks
> 
> -----Original Message-----
> Hello,
> 
> On Tue, Sep 09, 2014 at 02:13:58PM +0800, Wang, Yalin wrote:
> > This patch add memblock_free to also free the reserved memblock, so 
> > that the cma pages are not marked as reserved memory in 
> > /sys/kernel/debug/memblock/reserved debug file
> > 
> > Signed-off-by: Yalin Wang <yalin.wang@sonymobile.com>
> > ---
> >  mm/cma.c | 2 ++
> >  1 file changed, 2 insertions(+)
> > 
> > diff --git a/mm/cma.c b/mm/cma.c
> > index c17751c..f3ec756 100644
> > --- a/mm/cma.c
> > +++ b/mm/cma.c
> > @@ -114,6 +114,8 @@ static int __init cma_activate_area(struct cma *cma)
> >  				goto err;
> >  		}
> >  		init_cma_reserved_pageblock(pfn_to_page(base_pfn));
> > +		memblock_free(__pfn_to_phys(base_pfn),
> > +				pageblock_nr_pages * PAGE_SIZE);
> 
> Nitpick:
> 
> Couldn't we add memblock_free into init_cma_reserved_pageblock?
> Because it should be pair with ClearPageReserved, I think.
> 
> In addition, please add description on memory reserve part in cma_declare_contiguous.
> 
> >  	} while (--i);
> >  
> >  	mutex_init(&cma->lock);
> > --
> > 2.1.0
> > 
> > --
> > To unsubscribe, send a message with 'unsubscribe linux-mm' in the 
> > body to majordomo@kvack.org.  For more info on Linux MM,
> > see: http://www.linux-mm.org/ .
> > Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a>
> 
> --
> Kind regards,
> Minchan Kim

--
Kind regards,
Minchan Kim

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

* RE: [RFC V2] Free the reserved memblock when free cma pages
  2014-09-15  5:42     ` Minchan Kim
  2014-09-15  5:46       ` Wang, Yalin
@ 2014-09-15  6:10       ` Wang, Yalin
  2014-09-15  6:57         ` Minchan Kim
  2014-09-15  7:54         ` [PATCH Resend] " Wang, Yalin
  1 sibling, 2 replies; 12+ messages in thread
From: Wang, Yalin @ 2014-09-15  6:10 UTC (permalink / raw)
  To: 'Minchan Kim'
  Cc: 'mhocko@suse.cz', 'linux-mm@kvack.org',
	'akpm@linux-foundation.org',
	mm-commits, hughd, b.zolnierkie

This patch add memblock_free to also free the reserved memblock,
so that the cma pages are not marked as reserved memory in
/sys/kernel/debug/memblock/reserved debug file

Signed-off-by: Yalin Wang <yalin.wang@sonymobile.com>
---
 mm/cma.c        | 6 +++++-
 mm/page_alloc.c | 2 +-
 2 files changed, 6 insertions(+), 2 deletions(-)

diff --git a/mm/cma.c b/mm/cma.c
index c17751c..ec69c69 100644
--- a/mm/cma.c
+++ b/mm/cma.c
@@ -196,7 +196,11 @@ int __init cma_declare_contiguous(phys_addr_t base,
 	if (!IS_ALIGNED(size >> PAGE_SHIFT, 1 << order_per_bit))
 		return -EINVAL;
 
-	/* Reserve memory */
+	/*
+	 * Reserve memory, and the reserved memory are marked as reserved by
+	 * memblock driver, remember to clear the reserved status when free
+	 * these cma pages, see init_cma_reserved_pageblock()
+	 */
 	if (base && fixed) {
 		if (memblock_is_region_reserved(base, size) ||
 		    memblock_reserve(base, size) < 0) {
diff --git a/mm/page_alloc.c b/mm/page_alloc.c
index 18cee0d..fffbb84 100644
--- a/mm/page_alloc.c
+++ b/mm/page_alloc.c
@@ -836,8 +836,8 @@ void __init init_cma_reserved_pageblock(struct page *page)
 		set_page_refcounted(page);
 		__free_pages(page, pageblock_order);
 	}
-
 	adjust_managed_page_count(page, pageblock_nr_pages);
+	memblock_free(page_to_phys(page), pageblock_nr_pages << PAGE_SHIFT);
 }
 #endif
 
-- 
2.1.0


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

* Re: [RFC V2] Free the reserved memblock when free cma pages
  2014-09-15  6:10       ` [RFC V2] " Wang, Yalin
@ 2014-09-15  6:57         ` Minchan Kim
  2014-09-15  7:54         ` [PATCH Resend] " Wang, Yalin
  1 sibling, 0 replies; 12+ messages in thread
From: Minchan Kim @ 2014-09-15  6:57 UTC (permalink / raw)
  To: Wang, Yalin
  Cc: 'mhocko@suse.cz', 'linux-mm@kvack.org',
	'akpm@linux-foundation.org',
	mm-commits, hughd, b.zolnierkie

On Mon, Sep 15, 2014 at 02:10:19PM +0800, Wang, Yalin wrote:
> This patch add memblock_free to also free the reserved memblock,
> so that the cma pages are not marked as reserved memory in
> /sys/kernel/debug/memblock/reserved debug file

If you received some comments and judges the direction is right,
you could remove RFC tag from the patch title.


> 
> Signed-off-by: Yalin Wang <yalin.wang@sonymobile.com>

Anyway,
Acked-by: Minchan Kim <minchan@kernel.org>

>
> ---
>  mm/cma.c        | 6 +++++-
>  mm/page_alloc.c | 2 +-
>  2 files changed, 6 insertions(+), 2 deletions(-)
> 
> diff --git a/mm/cma.c b/mm/cma.c
> index c17751c..ec69c69 100644
> --- a/mm/cma.c
> +++ b/mm/cma.c
> @@ -196,7 +196,11 @@ int __init cma_declare_contiguous(phys_addr_t base,
>  	if (!IS_ALIGNED(size >> PAGE_SHIFT, 1 << order_per_bit))
>  		return -EINVAL;
>  
> -	/* Reserve memory */
> +	/*
> +	 * Reserve memory, and the reserved memory are marked as reserved by
> +	 * memblock driver, remember to clear the reserved status when free
> +	 * these cma pages, see init_cma_reserved_pageblock()
> +	 */
>  	if (base && fixed) {
>  		if (memblock_is_region_reserved(base, size) ||
>  		    memblock_reserve(base, size) < 0) {
> diff --git a/mm/page_alloc.c b/mm/page_alloc.c
> index 18cee0d..fffbb84 100644
> --- a/mm/page_alloc.c
> +++ b/mm/page_alloc.c
> @@ -836,8 +836,8 @@ void __init init_cma_reserved_pageblock(struct page *page)
>  		set_page_refcounted(page);
>  		__free_pages(page, pageblock_order);
>  	}
> -
>  	adjust_managed_page_count(page, pageblock_nr_pages);
> +	memblock_free(page_to_phys(page), pageblock_nr_pages << PAGE_SHIFT);
>  }
>  #endif
>  
> -- 
> 2.1.0
> 

-- 
Kind regards,
Minchan Kim

--
To unsubscribe, send a message with 'unsubscribe linux-mm' in
the body to majordomo@kvack.org.  For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a>

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

* [PATCH Resend] Free the reserved memblock when free cma pages
  2014-09-15  6:10       ` [RFC V2] " Wang, Yalin
  2014-09-15  6:57         ` Minchan Kim
@ 2014-09-15  7:54         ` Wang, Yalin
  1 sibling, 0 replies; 12+ messages in thread
From: Wang, Yalin @ 2014-09-15  7:54 UTC (permalink / raw)
  To: 'Minchan Kim'
  Cc: 'mhocko@suse.cz', 'linux-mm@kvack.org',
	'akpm@linux-foundation.org',
	'mm-commits@vger.kernel.org', 'hughd@google.com',
	'b.zolnierkie@samsung.com'

This patch add memblock_free to also free the reserved memblock,
so that the cma pages are not marked as reserved memory in
/sys/kernel/debug/memblock/reserved debug file

Signed-off-by: Yalin Wang <yalin.wang@sonymobile.com>
---
 mm/cma.c        | 6 +++++-
 mm/page_alloc.c | 2 +-
 2 files changed, 6 insertions(+), 2 deletions(-)

diff --git a/mm/cma.c b/mm/cma.c
index c17751c..ec69c69 100644
--- a/mm/cma.c
+++ b/mm/cma.c
@@ -196,7 +196,11 @@ int __init cma_declare_contiguous(phys_addr_t base,
 	if (!IS_ALIGNED(size >> PAGE_SHIFT, 1 << order_per_bit))
 		return -EINVAL;
 
-	/* Reserve memory */
+	/*
+	 * Reserve memory, and the reserved memory are marked as reserved by
+	 * memblock driver, remember to clear the reserved status when free
+	 * these cma pages, see init_cma_reserved_pageblock()
+	 */
 	if (base && fixed) {
 		if (memblock_is_region_reserved(base, size) ||
 		    memblock_reserve(base, size) < 0) {
diff --git a/mm/page_alloc.c b/mm/page_alloc.c
index 18cee0d..fffbb84 100644
--- a/mm/page_alloc.c
+++ b/mm/page_alloc.c
@@ -836,8 +836,8 @@ void __init init_cma_reserved_pageblock(struct page *page)
 		set_page_refcounted(page);
 		__free_pages(page, pageblock_order);
 	}
-
 	adjust_managed_page_count(page, pageblock_nr_pages);
+	memblock_free(page_to_phys(page), pageblock_nr_pages << PAGE_SHIFT);
 }
 #endif
 
-- 
2.1.0


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

end of thread, other threads:[~2014-09-15  7:54 UTC | newest]

Thread overview: 12+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2014-09-09  6:13 [RFC] Free the reserved memblock when free cma pages Wang, Yalin
2014-09-10  8:18 ` Michal Hocko
2014-09-10  9:02   ` Wang, Yalin
2014-09-12  9:35 ` Marek Szyprowski
2014-09-15  3:06   ` Joonsoo Kim
2014-09-15  5:21 ` Minchan Kim
2014-09-15  5:36   ` Wang, Yalin
2014-09-15  5:42     ` Minchan Kim
2014-09-15  5:46       ` Wang, Yalin
2014-09-15  6:10       ` [RFC V2] " Wang, Yalin
2014-09-15  6:57         ` Minchan Kim
2014-09-15  7:54         ` [PATCH Resend] " Wang, Yalin

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.