Re: [RFC] Free the reserved memblock when free cma pages

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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@xxxxxxxxxxxxxx>
> > ---
> >  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@xxxxxxxxx.  For more info on Linux MM,
> > see: http://www.linux-mm.org/ .
> > Don't email: <a href=mailto:"dont@xxxxxxxxx";> email@xxxxxxxxx </a>
> 
> --
> Kind regards,
> Minchan Kim

-- 
Kind regards,
Minchan Kim

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




[Index of Archives]     [Linux ARM Kernel]     [Linux ARM]     [Linux Omap]     [Fedora ARM]     [IETF Annouce]     [Bugtraq]     [Linux]     [Linux OMAP]     [Linux MIPS]     [ECOS]     [Asterisk Internet PBX]     [Linux API]