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

Commit 00af8484 authored by Zhenhua Huang's avatar Zhenhua Huang Committed by Gerrit - the friendly Code Review server
Browse files

mm: Kconfig: Add support for config size of purging vmap_area



This size is the maximum amount of virtual address space we gather
up before attempting to purge with a TLB flush. It is 128M in most cases.
With repeated and high size vmalloc operations, it may easily generate
more fragments. This is wasting limited vmalloc area, for 32bits.
So make it configable and the default multiplier as 8, 32bits only.

Change-Id: I68a75acb16d3cff05f8b13c05ae78922269e219f
Signed-off-by: default avatarZhenhua Huang <zhenhuah@codeaurora.org>
parent 44496944
Loading
Loading
Loading
Loading
+10 −0
Original line number Diff line number Diff line
@@ -643,6 +643,16 @@ config ZSMALLOC_STAT
	  information to userspace via debugfs.
	  If unsure, say N.

config VMAP_LAZY_PURGING_FACTOR
	int "multiplier to the size of purged vmap areas"
	default "8" if ARM
	default "32"
	help
	  It is used as a multiplier to the max VA pages purged in a
	  single attempt. For 32-bit in order to reduce fragmentation
	  of vmalloc space, we decrease the default value to "8".


config GENERIC_EARLY_IOREMAP
	bool

+2 −1
Original line number Diff line number Diff line
@@ -1229,7 +1229,8 @@ static unsigned long lazy_max_pages(void)

	log = fls(num_online_cpus());

	return log * (32UL * 1024 * 1024 / PAGE_SIZE);
	return log * (1UL * CONFIG_VMAP_LAZY_PURGING_FACTOR *
					1024 * 1024 / PAGE_SIZE);
}

static atomic_long_t vmap_lazy_nr = ATOMIC_LONG_INIT(0);