Re: [PATCH v2] mm/page_alloc: count CMA pages per zone and print them in /proc/zoneinfo

From: David Rientjes
Date: Thu Jan 28 2021 - 16:55:21 EST


On Thu, 28 Jan 2021, David Hildenbrand wrote:

> diff --git a/mm/vmstat.c b/mm/vmstat.c
> index 7758486097f9..957680db41fa 100644
> --- a/mm/vmstat.c
> +++ b/mm/vmstat.c
> @@ -1650,6 +1650,11 @@ static void zoneinfo_show_print(struct seq_file *m, pg_data_t *pgdat,
> zone->spanned_pages,
> zone->present_pages,
> zone_managed_pages(zone));
> +#ifdef CONFIG_CMA
> + seq_printf(m,
> + "\n cma %lu",
> + zone->cma_pages);
> +#endif
>
> seq_printf(m,
> "\n protection: (%ld",

Hmm, not sure about this. If cma is only printed for CONFIG_CMA, we can't
distinguish between (1) a kernel without your patch without including some
version checking and (2) a kernel without CONFIG_CMA enabled. IOW,
"cma 0" carries value: we know immediately that we do not have any CMA
pages on this zone, period.

/proc/zoneinfo is also not known for its conciseness so I think printing
"cma 0" even for !CONFIG_CMA is helpful :)

I think this #ifdef should be removed and it should call into a
zone_cma_pages(struct zone *zone) which returns 0UL if disabled.