Re: [PATCH] mm: cma: fix accounting of CMA pages placed in high memory

Marek Szyprowski
2013-02-05T07:10:28Z

Hello,

On 2/5/2013 12:34 AM, Minchan Kim wrote:
> On Mon, Feb 04, 2013 at 11:27:05AM +0100, Marek Szyprowski wrote:
> > The total number of low memory pages is determined as
> > totalram_pages - totalhigh_pages, so without this patch all CMA
> > pageblocks placed in highmem were accounted to low memory.
>
> So what's the end user effect? With the effect, we have to decide
> routing it on stable.
>
> >
> > Signed-off-by: Marek Szyprowski <m.szyprowski@samsung.com>
> > ---
> > mm/page_alloc.c | 4 ++++
> > 1 file changed, 4 insertions(+)
> >
> > diff --git a/mm/page_alloc.c b/mm/page_alloc.c
> > index f5bab0a..6415d93 100644
> > --- a/mm/page_alloc.c
> > +++ b/mm/page_alloc.c
> > @@ -773,6 +773,10 @@ void __init init_cma_reserved_pageblock(struct page *page)
> > set_pageblock_migratetype(page, MIGRATE_CMA);
> > __free_pages(page, pageblock_order);
> > totalram_pages += pageblock_nr_pages;
> > +#ifdef CONFIG_HIGHMEM
>
> We don't need #ifdef/#endif.

#ifdef is required to let this code compile when highmem is not enabled,
becuase totalhigh_pages is defined as 0, see include/linux/highmem.h

> > + if (PageHighMem(page))
> > + totalhigh_pages += pageblock_nr_pages;
> > +#endif
> > }
> > #endif
> >

Best regards
--
Marek Szyprowski
Samsung Poland R&D Center