Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 4387da0b authored by qctecmdr Service's avatar qctecmdr Service Committed by Gerrit - the friendly Code Review server
Browse files

Merge "mm: cma: Register with show_mem notification framework"

parents 68efeb4d 883e44f7
Loading
Loading
Loading
Loading
+26 −0
Original line number Diff line number Diff line
@@ -37,6 +37,7 @@
#include <linux/io.h>
#include <linux/kmemleak.h>
#include <linux/delay.h>
#include <linux/show_mem_notifier.h>
#include <trace/events/cma.h>

#include "cma.h"
@@ -98,6 +99,29 @@ static void cma_clear_bitmap(struct cma *cma, unsigned long pfn,
	mutex_unlock(&cma->lock);
}

static int cma_showmem_notifier(struct notifier_block *nb,
				   unsigned long action, void *data)
{
	int i;
	unsigned long used;
	struct cma *cma;

	for (i = 0; i < cma_area_count; i++) {
		cma = &cma_areas[i];
		used = bitmap_weight(cma->bitmap,
				     (int)cma_bitmap_maxno(cma));
		used <<= cma->order_per_bit;
		pr_info("cma-%d pages: => %lu used of %lu total pages\n",
			i, used, cma->count);
	}

	return 0;
}

static struct notifier_block cma_nb = {
	.notifier_call = cma_showmem_notifier,
};

static int __init cma_activate_area(struct cma *cma)
{
	int bitmap_size = BITS_TO_LONGS(cma_bitmap_maxno(cma)) * sizeof(long);
@@ -162,6 +186,8 @@ static int __init cma_init_reserved_areas(void)
			return ret;
	}

	show_mem_notifier_register(&cma_nb);

	return 0;
}
core_initcall(cma_init_reserved_areas);