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

Commit 0a1e1596 authored by qctecmdr's avatar qctecmdr Committed by Gerrit - the friendly Code Review server
Browse files

Merge "defconfig: lahaina: Enable LIMIT_MOVABLE_ZONE_ALLOC"

parents a91e5519 dcad6c35
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -46,6 +46,7 @@ CONFIG_CMA_PCP_LISTS=y
CONFIG_DMA_COHERENT_HINT_CACHED=y
CONFIG_PRIORITIZE_OOM_TASKS=y
CONFIG_DMA_CONFIGURE_ALIGNMENT=y
CONFIG_LIMIT_MOVABLE_ZONE_ALLOC=y
# CONFIG_ZONE_DEVICE is not set
# CONFIG_BUG_ON_HW_MEM_ONLINE_FAIL is not set
CONFIG_MSM_BT_POWER=m
+4 −2
Original line number Diff line number Diff line
@@ -1360,13 +1360,15 @@ static int __zram_bvec_write(struct zram *zram, struct bio_vec *bvec,
				__GFP_NOWARN |
				__GFP_HIGHMEM |
				__GFP_MOVABLE |
				__GFP_CMA);
				__GFP_CMA |
				__GFP_OFFLINABLE);
	if (!handle) {
		zcomp_stream_put(zram->comp);
		atomic64_inc(&zram->stats.writestall);
		handle = zs_malloc(zram->mem_pool, comp_len,
				GFP_NOIO | __GFP_HIGHMEM |
				__GFP_MOVABLE | __GFP_CMA);
				__GFP_MOVABLE | __GFP_CMA |
				__GFP_OFFLINABLE);
		if (handle)
			goto compress_again;
		return -ENOMEM;
+14 −10
Original line number Diff line number Diff line
@@ -39,19 +39,20 @@ struct vm_area_struct;
#define ___GFP_HARDWALL		0x100000u
#define ___GFP_THISNODE		0x200000u
#define ___GFP_ACCOUNT		0x400000u
#ifdef CONFIG_CMA_DIRECT_UTILIZATION
#define ___GFP_CMA		0x800000u
#ifdef CONFIG_LOCKDEP
#define ___GFP_NOLOCKDEP	0x800000u
#else
#define ___GFP_CMA		0
#define ___GFP_NOLOCKDEP	0
#endif
#ifdef CONFIG_LOCKDEP
#ifdef CONFIG_CMA_DIRECT_UTILIZATION
#define ___GFP_NOLOCKDEP	0x1000000u
#define ___GFP_CMA		0x1000000u
#else
#define __GFP_NOLOCKDEP		0x800000u
#define ___GFP_CMA		0
#endif
#ifdef CONFIG_LIMIT_MOVABLE_ZONE_ALLOC
#define ___GFP_OFFLINABLE	0x2000000u
#else
#define ___GFP_NOLOCKDEP	0
#define ___GFP_OFFLINABLE	0
#endif
/* If the above are modified, __GFP_BITS_SHIFT may need updating */

@@ -67,6 +68,7 @@ struct vm_area_struct;
#define __GFP_DMA32	((__force gfp_t)___GFP_DMA32)
#define __GFP_MOVABLE	((__force gfp_t)___GFP_MOVABLE)  /* ZONE_MOVABLE allowed */
#define __GFP_CMA	((__force gfp_t)___GFP_CMA)
#define __GFP_OFFLINABLE	((__force gfp_t)___GFP_OFFLINABLE)
#define GFP_ZONEMASK	(__GFP_DMA|__GFP_HIGHMEM|__GFP_DMA32|__GFP_MOVABLE)

/**
@@ -227,8 +229,10 @@ struct vm_area_struct;
#define __GFP_NOLOCKDEP ((__force gfp_t)___GFP_NOLOCKDEP)

/* Room for N __GFP_FOO bits */
#ifdef CONFIG_CMA_DIRECT_UTILIZATION
#define __GFP_BITS_SHIFT (24 + IS_ENABLED(CONFIG_LOCKDEP))
#ifdef CONFIG_LIMIT_MOVABLE_ZONE_ALLOC
#define __GFP_BITS_SHIFT 26
#elif defined CONFIG_CMA_DIRECT_UTILIZATION
#define __GFP_BITS_SHIFT 25
#else
#define __GFP_BITS_SHIFT (23 + IS_ENABLED(CONFIG_LOCKDEP))
#endif
@@ -458,7 +462,7 @@ static inline enum zone_type gfp_zone(gfp_t flags)
	int bit;

	if (!IS_ENABLED(CONFIG_HIGHMEM)) {
		if ((flags & __GFP_MOVABLE) && !(flags & __GFP_CMA))
		if ((flags & __GFP_MOVABLE) && !(flags & __GFP_OFFLINABLE))
			flags &= ~__GFP_HIGHMEM;
	}

+3 −6
Original line number Diff line number Diff line
@@ -205,12 +205,9 @@ static inline struct page *
alloc_zeroed_user_highpage_movable(struct vm_area_struct *vma,
					unsigned long vaddr)
{
#ifndef CONFIG_CMA_DIRECT_UTILIZATION
	return __alloc_zeroed_user_highpage(__GFP_MOVABLE, vma, vaddr);
#else
	return __alloc_zeroed_user_highpage(__GFP_MOVABLE|__GFP_CMA, vma,
	return __alloc_zeroed_user_highpage(
			__GFP_MOVABLE|__GFP_CMA|__GFP_OFFLINABLE, vma,
			vaddr);
#endif
}

static inline void clear_highpage(struct page *page)
+7 −1
Original line number Diff line number Diff line
@@ -223,7 +223,13 @@ static inline struct page *page_cache_alloc(struct address_space *x)

static inline gfp_t readahead_gfp_mask(struct address_space *x)
{
	return mapping_gfp_mask(x) | __GFP_NORETRY | __GFP_NOWARN;
	gfp_t gfp_mask = mapping_gfp_mask(x) |
				__GFP_NORETRY | __GFP_NOWARN;

	if (gfp_mask & __GFP_MOVABLE)
		gfp_mask |= __GFP_CMA;

	return gfp_mask;
}

typedef int filler_t(void *, struct page *);
Loading